public void addDeclarations(Collection<? extends Declaration> ds) { if (ds == null) return; for (Declaration d : ds) addDeclaration(d); } public void setDeclarations(List<Declaration> declarations) {
private boolean add(Struct classStruct, Declaration decl, Signatures signatures, Set<?>... additionalMethodSignatures) { if (decl instanceof Function) { String sig = ((Function) decl).computeSignature(SignatureType.JavaStyle); for (Set<?> sigs : additionalMethodSignatures) { if (sigs.contains(sig)) { return false; } } if (signatures.addMethod(sig)) { classStruct.addDeclaration(decl); return true; } else { return false; } } classStruct.addDeclaration(decl); return true; }
private boolean add(Struct classStruct, Declaration decl, Signatures signatures, Set<?>... additionalMethodSignatures) { if (decl instanceof Function) { String sig = ((Function) decl).computeSignature(SignatureType.JavaStyle); for (Set<?> sigs : additionalMethodSignatures) { if (sigs.contains(sig)) { return false; } } if (signatures.addMethod(sig)) { classStruct.addDeclaration(decl); return true; } else { return false; } } classStruct.addDeclaration(decl); return true; }
void addConstructor(Struct s, Function f) { Identifier structName = getActualTaggedTypeName(s); f.setName(structName); s.addDeclaration(f); }
void addConstructor(Struct s, Function f) { Identifier structName = getActualTaggedTypeName(s); f.setName(structName); s.addDeclaration(f); }
public void addMissingMethods(Class<?> originalLib, Signatures existingSignatures, Struct outputLib) { for (Pair<Function, String> f : getMethodsAndTheirSignatures(originalLib).getFirst()) { if (existingSignatures.addMethod(f.getSecond())) { outputLib.addDeclaration(f.getFirst().clone()); } } }
public void addMissingMethods(Class<?> originalLib, Signatures existingSignatures, Struct outputLib) { for (Pair<Function, String> f : getMethodsAndTheirSignatures(originalLib).getFirst()) { if (existingSignatures.addMethod(f.getSecond())) { outputLib.addDeclaration(f.getFirst().clone()); } } }
public void addMissingMethods(Class<?> originalLib, Signatures existingSignatures, Struct outputLib) { for (Pair<Function, String> f : getMethodsAndTheirSignatures(originalLib).getFirst()) { if (existingSignatures.addMethod(f.getSecond())) { outputLib.addDeclaration(f.getFirst().clone()); } } }
public void addMissingMethods(Class<?> originalLib, Signatures existingSignatures, Struct outputLib) { for (Pair<Function, String> f : getMethodsAndTheirSignatures(originalLib).getFirst()) { if (existingSignatures.addMethod(f.getSecond())) { outputLib.addDeclaration(f.getFirst().clone()); } } }
private Struct parseClasse(Node classe, com.ochafik.lang.jnaerator.parser.Struct.Type type, SourceFile sf) throws XPathExpressionException { Struct cs = new Struct(); cs.setType(type); String name = XMLUtils.getAttribute(classe, "name"); if (result.config.verbose) { System.out.println("Parsing class " + name); } cs.setTag(ident(name)); for (Node method : XPathUtils.findNodesIterableByXPath("method", classe)) { // String mname = XMLUtils.getAttribute(method, "selector"); try { // if ((name.equals("NSScriptClassDescription") || name.equals("NSObject")) && mname.contains("classCode")) // name.toString(); cs.addDeclaration(parseFunction(Type.ObjCMethod, method, sf)); } catch (Exception ex) { ex.printStackTrace(); } } sf.addDeclaration(new TaggedTypeRefDeclaration(cs)); return cs; }
private Struct parseClasse(Node classe, com.ochafik.lang.jnaerator.parser.Struct.Type type, SourceFile sf) throws XPathExpressionException { Struct cs = new Struct(); cs.setType(type); String name = XMLUtils.getAttribute(classe, "name"); if (result.config.verbose) { System.out.println("Parsing class " + name); } cs.setTag(ident(name)); for (Node method : XPathUtils.findNodesIterableByXPath("method", classe)) { // String mname = XMLUtils.getAttribute(method, "selector"); try { // if ((name.equals("NSScriptClassDescription") || name.equals("NSObject")) && mname.contains("classCode")) // name.toString(); cs.addDeclaration(parseFunction(Type.ObjCMethod, method, sf)); } catch (Exception ex) { ex.printStackTrace(); } } sf.addDeclaration(new TaggedTypeRefDeclaration(cs)); return cs; }
private void addAllocIfMissing(Struct in, String allocName) { Identifier n = in.getTag(); if (n.equals("NSObject") || n.equals("NSClass")) { return; } boolean hasAlloc = false; for (Declaration d : in.getDeclarations()) { if (d instanceof Function) { Function f = (Function) d; if (f.getArgs().isEmpty() && allocName.equals(f.getName())) { hasAlloc = true; break; } } } if (!hasAlloc) { in.addDeclaration(new Function(Function.Type.ObjCMethod, ident(allocName), typeRef(in.getTag())).addModifiers(ModifierType.Static)); } }
private void addAllocIfMissing(Struct in, String allocName) { Identifier n = in.getTag(); if (n.equals("NSObject") || n.equals("NSClass")) { return; } boolean hasAlloc = false; for (Declaration d : in.getDeclarations()) { if (d instanceof Function) { Function f = (Function) d; if (f.getArgs().isEmpty() && allocName.equals(f.getName())) { hasAlloc = true; break; } } } if (!hasAlloc) { in.addDeclaration(new Function(Function.Type.ObjCMethod, ident(allocName), typeRef(in.getTag())).addModifiers(ModifierType.Static)); } }
@Override protected Struct createFakePointerClass(Identifier fakePointer) { Struct ptClass = result.declarationsConverter.publicStaticClass(fakePointer, ident(PointerType.class), Struct.Type.JavaClass, null); String pointerVarName = "address"; ptClass.addDeclaration(new Function(Function.Type.JavaMethod, fakePointer, null, new Arg(pointerVarName, typeRef(com.sun.jna.Pointer.class))).addModifiers(ModifierType.Public).setBody( block(stat(methodCall("super", varRef(pointerVarName)))))); ptClass.addDeclaration(new Function(Function.Type.JavaMethod, fakePointer, null) .addModifiers(ModifierType.Public) .setBody( block(stat(methodCall("super"))))); return ptClass; }
@Override protected Struct createFakePointerClass(Identifier fakePointer) { Struct ptClass = result.declarationsConverter.publicStaticClass(fakePointer, ident(PointerType.class), Struct.Type.JavaClass, null); String pointerVarName = "address"; ptClass.addDeclaration(new Function(Function.Type.JavaMethod, fakePointer, null, new Arg(pointerVarName, typeRef(com.sun.jna.Pointer.class))).addModifiers(ModifierType.Public).setBody( block(stat(methodCall("super", varRef(pointerVarName)))))); ptClass.addDeclaration(new Function(Function.Type.JavaMethod, fakePointer, null) .addModifiers(ModifierType.Public) .setBody( block(stat(methodCall("super"))))); return ptClass; }
@Override protected Struct createFakePointerClass(Identifier fakePointer) { Struct ptClass = result.declarationsConverter.publicStaticClass(fakePointer, ident(TypedPointer.class), Struct.Type.JavaClass, null); String addressVarName = "address"; ptClass.addDeclaration(new Function(Function.Type.JavaMethod, fakePointer, null, new Arg(addressVarName, typeRef(long.class))).addModifiers(ModifierType.Public).setBody( block(stat(methodCall("super", varRef(addressVarName)))))); ptClass.addDeclaration(new Function(Function.Type.JavaMethod, fakePointer, null, new Arg(addressVarName, typeRef(org.bridj.Pointer.class))).addModifiers(ModifierType.Public).setBody( block(stat(methodCall("super", varRef(addressVarName)))))); return ptClass; }
@Override protected Struct createFakePointerClass(Identifier fakePointer) { Struct ptClass = result.declarationsConverter.publicStaticClass(fakePointer, ident(TypedPointer.class), Struct.Type.JavaClass, null); String addressVarName = "address"; ptClass.addDeclaration(new Function(Function.Type.JavaMethod, fakePointer, null, new Arg(addressVarName, typeRef(long.class))).addModifiers(ModifierType.Public).setBody( block(stat(methodCall("super", varRef(addressVarName)))))); ptClass.addDeclaration(new Function(Function.Type.JavaMethod, fakePointer, null, new Arg(addressVarName, typeRef(org.bridj.Pointer.class))).addModifiers(ModifierType.Public).setBody( block(stat(methodCall("super", varRef(addressVarName)))))); return ptClass; }
instanceStruct.addDeclaration(createProxyCopy(f, (Function) decl)); signatures.addMethod((Function) decl); instanceStruct.addDeclaration(addedF);
implementations.addDeclaration(newStaticInit()); implementations.setResolvedJavaIdentifier(implementationsFullClassName);
implementations.addDeclaration(newStaticInit()); implementations.setResolvedJavaIdentifier(implementationsFullClassName);