public void addDeclarations(Collection<? extends Declaration> ds) { for (Declaration d : ds) addDeclaration(d); }
private void parseFunctions(String framework, Node signatures, SourceFile sf) throws XPathExpressionException { for (Node function : XMLUtils.getChildrenByName(signatures, "function")) { String name = XMLUtils.getAttribute(function, "name"); Node retval = XMLUtils.getFirstNamedNode(function, "retval"); String already_retained = retval != null ? XMLUtils.getAttribute(retval, "already_retained") : null; if (already_retained != null && (already_retained = already_retained.trim()).length() > 0) { boolean alreadyRetained = "true".equals(already_retained); Result.getMap(result.retainedRetValFunctions, framework).put(name, alreadyRetained); } if ("true".equals(XMLUtils.getAttribute(function, "inline"))) { continue; // TODO handle inline functions : link to BridgeSupport auxiliary library } try { Function f = parseFunction(Type.CFunction, function, sf); if (f == null) { continue; } sf.addDeclaration(f); // f.accept(result); } catch (Exception ex) { ex.printStackTrace(); } } }
private void parseFunctions(String framework, Node signatures, SourceFile sf) throws XPathExpressionException { for (Node function : XMLUtils.getChildrenByName(signatures, "function")) { String name = XMLUtils.getAttribute(function, "name"); Node retval = XMLUtils.getFirstNamedNode(function, "retval"); String already_retained = retval != null ? XMLUtils.getAttribute(retval, "already_retained") : null; if (already_retained != null && (already_retained = already_retained.trim()).length() > 0) { boolean alreadyRetained = "true".equals(already_retained); Result.getMap(result.retainedRetValFunctions, framework).put(name, alreadyRetained); } if ("true".equals(XMLUtils.getAttribute(function, "inline"))) { continue; // TODO handle inline functions : link to BridgeSupport auxiliary library } try { Function f = parseFunction(Type.CFunction, function, sf); if (f == null) { continue; } sf.addDeclaration(f); // f.accept(result); } catch (Exception ex) { ex.printStackTrace(); } } }
private void parseEnums(Node signatures, SourceFile sf) { for (Node en : XMLUtils.getChildrenByName(signatures, "enum")) { String name = XMLUtils.getAttribute(en, "name"); String value = XMLUtils.getAttribute(en, "value"); if (value != null) { try { try { int i = value.matches(".*?\\.0+$") ? value.lastIndexOf('.') : -1; String v = i > 0 ? value.substring(0, i) : value; sf.addDeclaration(new VariablesDeclaration(typeRef("int").addModifiers(ModifierType.Const), new DirectDeclarator(name, expr(Integer.parseInt(v))))); } catch (NumberFormatException fex) { sf.addDeclaration(new VariablesDeclaration(typeRef("double").addModifiers(ModifierType.Const), new DirectDeclarator(name, expr(Double.parseDouble(value))))); } } catch (Exception ex) { System.err.println("Parsing of enum " + name + " with value '" + value + "' failed : " + ex); } } } }
private void parseEnums(Node signatures, SourceFile sf) { for (Node en : XMLUtils.getChildrenByName(signatures, "enum")) { String name = XMLUtils.getAttribute(en, "name"); String value = XMLUtils.getAttribute(en, "value"); if (value != null) { try { try { int i = value.matches(".*?\\.0+$") ? value.lastIndexOf('.') : -1; String v = i > 0 ? value.substring(0, i) : value; sf.addDeclaration(new VariablesDeclaration(typeRef("int").addModifiers(ModifierType.Const), new DirectDeclarator(name, expr(Integer.parseInt(v))))); } catch (NumberFormatException fex) { sf.addDeclaration(new VariablesDeclaration(typeRef("double").addModifiers(ModifierType.Const), new DirectDeclarator(name, expr(Double.parseDouble(value))))); } } catch (Exception ex) { System.err.println("Parsing of enum " + name + " with value '" + value + "' failed : " + ex); } } } }
private void parseConstants(Node signatures, SourceFile sf) { for (Node cn : XMLUtils.getChildrenByName(signatures, "constant")) { String name = XMLUtils.getAttribute(cn, "name"); try { TypeRef tr = parseType(cn); if (tr == null) { continue; } sf.addDeclaration(new VariablesDeclaration(tr.addModifiers(ModifierType.Extern, ModifierType.Const), new DirectDeclarator(name))); } catch (Exception ex) { System.err.println("Parsing of constant " + name + " failed : " + ex); } } }
private void parseConstants(Node signatures, SourceFile sf) { for (Node cn : XMLUtils.getChildrenByName(signatures, "constant")) { String name = XMLUtils.getAttribute(cn, "name"); try { TypeRef tr = parseType(cn); if (tr == null) { continue; } sf.addDeclaration(new VariablesDeclaration(tr.addModifiers(ModifierType.Extern, ModifierType.Const), new DirectDeclarator(name))); } catch (Exception ex) { System.err.println("Parsing of constant " + name + " failed : " + ex); } } }
sourceFile.setElementFile(sourcePath); for (String inc : new String[]{"v8.h", "node.h", "node_buffer.h"}) { sourceFile.addDeclaration(new Include(Include.Type.CInclude, inc)); if (librarySourceFiles != null) { for (File file : librarySourceFiles) { sourceFile.addDeclaration(new Include(Include.Type.CInclude, file.toString())); sourceFile.addDeclaration(new Include(Include.Type.ObjCImport, otherFramework + "/" + otherFramework + ".h")); initMethod.setBody(new Block()); sourceFile.addDeclaration(initMethod); new Arg("hint", new TypeRef.Pointer(typeRef("void"), Declarator.PointerStyle.Pointer))); dummyNodeBufferFreeCallback.setBody(new Block()); sourceFile.addDeclaration(dummyNodeBufferFreeCallback); sourceFile.addDeclaration(initMethod); sourceFile.addDeclaration(decl(stat(methodCall("NODE_MODULE", varRef(ident(library)), varRef(ident(initFunctionName)))))); writeLibraryInterface(result, sourceFiles, sourceFile, library, null);
StoredDeclarations.TypeDef td = new StoredDeclarations.TypeDef(tr, new Declarator.DirectDeclarator(name)); sf.addDeclaration(td);
sourceFile.setElementFile(sourcePath); for (String inc : new String[]{"v8.h", "node.h", "node_buffer.h"}) { sourceFile.addDeclaration(new Include(Include.Type.CInclude, inc)); if (librarySourceFiles != null) { for (File file : librarySourceFiles) { sourceFile.addDeclaration(new Include(Include.Type.CInclude, file.toString())); sourceFile.addDeclaration(new Include(Include.Type.ObjCImport, otherFramework + "/" + otherFramework + ".h")); initMethod.setBody(new Block()); sourceFile.addDeclaration(initMethod); new Arg("hint", new TypeRef.Pointer(typeRef("void"), Declarator.PointerStyle.Pointer))); dummyNodeBufferFreeCallback.setBody(new Block()); sourceFile.addDeclaration(dummyNodeBufferFreeCallback); sourceFile.addDeclaration(initMethod); sourceFile.addDeclaration(decl(stat(methodCall("NODE_MODULE", varRef(ident(library)), varRef(ident(initFunctionName)))))); writeLibraryInterface(result, sourceFiles, sourceFile, library, null);
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; }
StoredDeclarations.TypeDef td = new StoredDeclarations.TypeDef(tr, new Declarator.DirectDeclarator(name)); sf.addDeclaration(td);
sourceFile.addDeclaration((declaration1!=null?declaration1.declaration:null));