@Override public QualifiedIdentifier clone() { return (QualifiedIdentifier)super.clone(); }
TypeRef functionSignatureRef(Identifier funSigName) { TypeRef.SimpleTypeRef tr = new TypeRef.SimpleTypeRef(funSigName.clone()); return tr;//treatFunctionSignatureAsPointers() ? tr : new TypeRef.Pointer(tr, Declarator.PointerStyle.Pointer); //result.typeConverter.pointerTypeRef(tr); }
TypeRef functionSignatureRef(Identifier funSigName) { TypeRef.SimpleTypeRef tr = new TypeRef.SimpleTypeRef(funSigName.clone()); return tr;//treatFunctionSignatureAsPointers() ? tr : new TypeRef.Pointer(tr, Declarator.PointerStyle.Pointer); //result.typeConverter.pointerTypeRef(tr); }
public void printJavaClass(Identifier javaPackage, Struct javaClass, PrintWriter out) { if (javaPackage != null) { out.println("package " + javaPackage + ";"); } if (config.noAutoImports) { out.println(javaClass); } else { Printer.printJava(javaPackage, ident(javaPackage == null ? null : javaPackage.clone(), javaClass.getTag().clone()), javaClass, out); } // out.println("@SuppressWarnings(\"unused\")"); }
public void printJavaClass(Identifier javaPackage, Struct javaClass, PrintWriter out) { if (javaPackage != null) { out.println("package " + javaPackage + ";"); } if (config.noAutoImports) { out.println(javaClass); } else { Printer.printJava(javaPackage, ident(javaPackage == null ? null : javaPackage.clone(), javaClass.getTag().clone()), javaClass, out); } // out.println("@SuppressWarnings(\"unused\")"); }
public static Identifier templateIdent(Identifier base, Expression... args) { Identifier id = base.clone(); id.resolveLastSimpleIdentifier().setTemplateArguments(Arrays.asList(args)); return id; }
public void setTag(Identifier tag) { // if (tag != null && tag.equals("lc_category_struct")) // tag = tag; // new Exception("Recursion too deep " + tag).printStackTrace(); this.tag = changeValue(this, this.tag, tag); if (originalTag == null && tag != null) setOriginalTag(tag.clone()); } @Override
public Identifier getFullClassName(Struct struct) { if (struct == null) { return null; } Identifier javaPackage = getPackageName(struct); Identifier tag = struct.getTag(); String categ = struct.getCategoryName(); Identifier fullName = ident(javaPackage, categ == null ? tag.clone() : ident(categ)); return fullName; }
public Identifier getFullClassName(Struct struct) { if (struct == null) { return null; } Identifier javaPackage = getPackageName(struct); Identifier tag = struct.getTag(); String categ = struct.getCategoryName(); Identifier fullName = ident(javaPackage, categ == null ? tag.clone() : ident(categ)); return fullName; }
@Override public Expression typeLiteral(TypeRef c) { if (c instanceof SimpleTypeRef && result.config.runtime == JNAeratorConfig.Runtime.BridJ) { Identifier id = ((SimpleTypeRef) c).getName(); Identifier.SimpleIdentifier sid = id.resolveLastSimpleIdentifier(); if (!sid.getTemplateArguments().isEmpty()) { Identifier erased = id.eraseTemplateArguments(); List<Expression> exprs = new ArrayList<Expression>(); exprs.add(typeLiteral(typeRef(erased.clone()))); for (Expression t : sid.getTemplateArguments()) { if (t instanceof Expression.TypeRefExpression) { exprs.add(typeLiteral(((Expression.TypeRefExpression) t).getType().clone())); } } return methodCall(expr(typeRef(DefaultParameterizedType.class)), "paramType", exprs.toArray(new Expression[exprs.size()])); } } return super.typeLiteral(c); }
@Override public Struct convertCallback(FunctionSignature functionSignature, Signatures signatures, Identifier callerLibraryName) { Struct decl = super.convertCallback(functionSignature, signatures, callerLibraryName); if (decl != null) { decl.setParents(Arrays.asList((SimpleTypeRef) (FunctionSignature.Type.ObjCBlock.equals(functionSignature.getType()) ? result.config.runtime.typeRef(JNAeratorConfig.Runtime.Ann.ObjCBlock) : (SimpleTypeRef) typeRef(ident(result.config.runtime.callbackClass, expr(typeRef(decl.getTag().clone()))))))); //addCallingConventionAnnotation(functionSignature.getFunction(), decl); } return decl; }
@Override public Struct convertCallback(FunctionSignature functionSignature, Signatures signatures, Identifier callerLibraryName) { Struct decl = super.convertCallback(functionSignature, signatures, callerLibraryName); if (decl != null) { decl.setParents(Arrays.asList((SimpleTypeRef) (FunctionSignature.Type.ObjCBlock.equals(functionSignature.getType()) ? result.config.runtime.typeRef(JNAeratorConfig.Runtime.Ann.ObjCBlock) : (SimpleTypeRef) typeRef(ident(result.config.runtime.callbackClass, expr(typeRef(decl.getTag().clone()))))))); //addCallingConventionAnnotation(functionSignature.getFunction(), decl); } return decl; }
private void fillIn(Signatures signatures, Identifier functionName, Function nativeMethod, NL4JConversion returnType, List<NL4JConversion> paramTypes, List<String> paramNames, Identifier varArgType, String varArgName, boolean isCallback, boolean useRawTypes) { for (int i = 0, n = paramTypes.size(); i < n; i++) { NL4JConversion paramType = paramTypes.get(i); String paramName = paramNames.get(i); nativeMethod.addArg(paramType.annotateTypedType(new Arg(paramName, paramType.getTypeRef(useRawTypes)), useRawTypes));//.getTypedTypeRef()))); } if (varArgType != null) { nativeMethod.addArg(new Arg(varArgName, typeRef(varArgType.clone()))).setVarArg(true); } if (returnType != null) { returnType.annotateTypedType(nativeMethod, useRawTypes); nativeMethod.setValueType(returnType.getTypeRef(useRawTypes)); } String natSig = nativeMethod.computeSignature(SignatureType.JavaStyle); Identifier javaMethodName = signatures == null ? functionName : signatures.findNextMethodName(natSig, functionName); if (!javaMethodName.equals(functionName)) { nativeMethod.setName(javaMethodName); } }
private void fillIn(Signatures signatures, Identifier functionName, Function nativeMethod, NL4JConversion returnType, List<NL4JConversion> paramTypes, List<String> paramNames, Identifier varArgType, String varArgName, boolean isCallback, boolean useRawTypes) { for (int i = 0, n = paramTypes.size(); i < n; i++) { NL4JConversion paramType = paramTypes.get(i); String paramName = paramNames.get(i); nativeMethod.addArg(paramType.annotateTypedType(new Arg(paramName, paramType.getTypeRef(useRawTypes)), useRawTypes));//.getTypedTypeRef()))); } if (varArgType != null) { nativeMethod.addArg(new Arg(varArgName, typeRef(varArgType.clone()))).setVarArg(true); } if (returnType != null) { returnType.annotateTypedType(nativeMethod, useRawTypes); nativeMethod.setValueType(returnType.getTypeRef(useRawTypes)); } String natSig = nativeMethod.computeSignature(SignatureType.JavaStyle); Identifier javaMethodName = signatures == null ? functionName : signatures.findNextMethodName(natSig, functionName); if (!javaMethodName.equals(functionName)) { nativeMethod.setName(javaMethodName); } }
public Identifier computeCallbackIdentifierInJava(FunctionSignature fs) { Identifier name = inferCallBackName(fs, false, false, null); if (name == null) { return null; } String library = result.getLibrary(fs); if (library == null) { return null; } name = name.clone(); Struct parentStruct = fs.findParentOfType(Struct.class); //Struct parentStruct = s.findParentOfType(Struct.class); if (parentStruct != null) { return ident(getTaggedTypeIdentifierInJava(parentStruct), name); } else { return libMember(result.getLibraryClassFullName(library), null, name); } } }
Function createCastMethod(Identifier name, Identifier classId, boolean isStatic) { Function m = new Function(); m.setType(Function.Type.JavaMethod); m.addModifiers(ModifierType.Public); m.setName(ident("as" + (isStatic ? "Static_" : "_") + name)); m.setValueType(typeRef(classId.clone())); m.setBody(block( new Statement.Return( methodCall( expr(typeRef(Rococoa.class)), MemberRefStyle.Dot, "cast", varRef("this"), result.typeConverter.typeLiteral(typeRef(classId.clone())))))); return m; }
public Identifier computeCallbackIdentifierInJava(FunctionSignature fs) { Identifier name = inferCallBackName(fs, false, false, null); if (name == null) { return null; } String library = result.getLibrary(fs); if (library == null) { return null; } name = name.clone(); Struct parentStruct = fs.findParentOfType(Struct.class); //Struct parentStruct = s.findParentOfType(Struct.class); if (parentStruct != null) { return ident(getTaggedTypeIdentifierInJava(parentStruct), name); } else { return libMember(result.getLibraryClassFullName(library), null, name); } } }
Function createCastMethod(Identifier name, Identifier classId, boolean isStatic) { Function m = new Function(); m.setType(Function.Type.JavaMethod); m.addModifiers(ModifierType.Public); m.setName(ident("as" + (isStatic ? "Static_" : "_") + name)); m.setValueType(typeRef(classId.clone())); m.setBody(block( new Statement.Return( methodCall( expr(typeRef(Rococoa.class)), MemberRefStyle.Dot, "cast", varRef("this"), result.typeConverter.typeLiteral(typeRef(classId.clone())))))); return m; }
protected Function createNewStructArrayMethod(Struct struct, boolean isUnion) { if (result.config.runtime == JNAeratorConfig.Runtime.JNA) { return null; } TypeRef tr = typeRef(struct.getTag().clone()); TypeRef ar = new TypeRef.ArrayRef(tr); String varName = "arrayLength"; Function f = new Function(Function.Type.JavaMethod, ident("newArray"), ar, new Arg(varName, typeRef(Integer.TYPE))); f.addModifiers(ModifierType.Public, ModifierType.Static); f.setBody(block( new Statement.Return( methodCall( expr(typeRef(isUnion ? result.config.runtime.unionClass : result.config.runtime.structClass)), MemberRefStyle.Dot, "newArray", result.typeConverter.typeLiteral(tr), varRef(varName))))); return f; }
protected Function createNewStructMethod(String name, Struct byRef) { TypeRef tr = typeRef(byRef.getTag().clone()); Function f = new Function(Function.Type.JavaMethod, ident(name), tr); String varName = "s"; f.addModifiers(ModifierType.Protected); if (result.config.runtime != JNAeratorConfig.Runtime.JNA) { f.setBody(block( //new Statement.Return(methodCall("setupClone", new Expression.New(tr.clone(), methodCall(null)))) new Statement.Return(new Expression.New(tr.clone(), methodCall((String) null)))).setCompact(true)); } else { f.setBody(block( stat(tr.clone(), varName, new Expression.New(tr.clone(), methodCall((String) null))), stat(methodCall(varRef(varName), MemberRefStyle.Dot, "useMemory", methodCall("getPointer"))), stat(methodCall("write")), stat(methodCall(varRef(varName), MemberRefStyle.Dot, "read")), new Statement.Return(varRef(varName)))); } return f; }