static void flatten(Element element, List<Declaration> out) { if (element instanceof SourceFiles) { for (SourceFile f : ((SourceFiles) element).getSourceFiles()) { flatten(f, out); } } if (element instanceof DeclarationsHolder) { for (Declaration d : ((DeclarationsHolder) element).getDeclarations()) { flatten(d, out); } } else if (element instanceof Declaration) { out.add((Declaration) element); } } }
static void flatten(Element element, List<Declaration> out) { if (element instanceof SourceFiles) { for (SourceFile f : ((SourceFiles) element).getSourceFiles()) { flatten(f, out); } } if (element instanceof DeclarationsHolder) { for (Declaration d : ((DeclarationsHolder) element).getDeclarations()) { flatten(d, out); } } else if (element instanceof Declaration) { out.add((Declaration) element); } } }
static List<Declaration> parseDeclarations(String source) throws IOException, LexerException, InterruptedException { JNAeratorConfig config = new JNAeratorConfig(); JNAeratorConfigUtils.autoConfigure(config); //config.noCPlusPlus = true; config.preprocessorConfig.includeStrings.add(source); Result result = new Result(config, null, null); SourceFiles parse = new JNAeratorParser().parse(config, result.typeConverter, null); List<Declaration> ret = new ArrayList<Declaration>(); flatten(parse, ret); return ret; }
static List<Declaration> parseDeclarations(String source) throws IOException, LexerException, InterruptedException { JNAeratorConfig config = new JNAeratorConfig(); JNAeratorConfigUtils.autoConfigure(config); //config.noCPlusPlus = true; config.preprocessorConfig.includeStrings.add(source); Result result = new Result(config, null, null); SourceFiles parse = new JNAeratorParser().parse(config, result.typeConverter, null); List<Declaration> ret = new ArrayList<Declaration>(); flatten(parse, ret); return ret; }