@Override public void visitMethodDeclarator(Java.MethodDeclarator md) { if (md.optionalStatements == null) { this.pw.print(';'); } else if (md.optionalStatements.isEmpty()) { this.pw.print(" {}"); } else { this.pw.println(' '); // Add labels to handle return statements within function templates String[] fQCN = md.getDeclaringType().getClassName().split("\\."); returnLabel = fQCN[fQCN.length - 1] + "_" + md.name; this.pw.println(returnLabel + ": {"); this.pw.print(AutoIndentWriter.INDENT); this.unparseStatements(md.optionalStatements); this.pw.print(AutoIndentWriter.UNINDENT); this.pw.println("}"); this.pw.print(' '); } }
@Override public void traverseMethodDeclarator(MethodDeclarator md) { // logger.debug(c.getName() + ": Found {}, include {}", md.name, captureMethods); if(captureMethods){ StringWriter writer = new StringWriter(); ModifiedUnparseVisitor v = new ModifiedUnparseVisitor(writer); // UnparseVisitor v = new UnparseVisitor(writer); md.accept(v); v.close(); writer.flush(); methods.put(md.name, writer.getBuffer().toString()); } } }
String[] fQCN = methodDeclarator.getDeclaringType().getClassName().split("\\."); String returnLabel = fQCN[fQCN.length - 1] + "_" + methodDeclarator.name; Java.Block methodBodyBlock = new Java.Block(methodDeclarator.getLocation()); new Java.LabeledStatement(methodDeclarator.getLocation(), returnLabel, methodBodyBlock);
cd.addDeclaredMethod(new Java.MethodDeclarator( loc, null,
private Java.MethodDeclarator generateFrontendMethod(Location loc) throws Exception { return new Java.MethodDeclarator(loc, null, new Java.Modifiers(Mod.PUBLIC), classToType(loc, returnType), "evaluate", generateArgs(loc, FastTuple.class), new Java.Type[0], Lists.<Java.BlockStatement>newArrayList( maybeGenerateReturn(loc, new Java.MethodInvocation( loc, null, "doEval", new Java.Rvalue[] { new Java.Cast( loc, new Java.ReferenceType(loc, schema.tupleClass().getCanonicalName().split("\\."), null), new Java.AmbiguousName(loc, new String[] {"tuple"}) ) } ) ) ) ); }
private Java.MethodDeclarator generateBackendMethod(Parser parser) throws Exception { Location loc = parser.location(); List<Java.BlockStatement> statements = Lists.newArrayList(); Java.Rvalue[] exprs = parser.parseExpressionList(); for (int i=0; i<exprs.length; i++) { if (i == exprs.length - 1) { statements.add(maybeGenerateReturn(loc, exprs[i])); } else { statements.add(new Java.ExpressionStatement(exprs[i])); } } return new Java.MethodDeclarator(loc, null, new Java.Modifiers(Mod.PRIVATE), classToType(loc, returnType), "doEval", generateArgs(loc, schema.tupleClass()), new Java.Type[0], statements ); }
protected Java.MethodDeclarator generateGetter(String name, Class type, int index) throws CompileException { // unsafe().get* (long) Java.BlockStatement st = new Java.ReturnStatement(loc, generateGetInvocation(type, index)); return new Java.MethodDeclarator( loc, null, new Java.Modifiers(Mod.PUBLIC), classToType(loc, type), name, new Java.FunctionDeclarator.FormalParameters(loc, new Java.FunctionDeclarator.FormalParameter[] {}, false), new Java.Type[] {}, Lists.newArrayList(st) ); }
protected Java.MethodDeclarator generateSetter(String name, Class type, int index) throws CompileException { Java.BlockStatement st = new Java.ExpressionStatement(generateSetInvocation(type, index, "value")); return new Java.MethodDeclarator( loc, null, new Java.Modifiers(Mod.PUBLIC), classToType(loc, Void.TYPE), name, new Java.FunctionDeclarator.FormalParameters(loc, new Java.FunctionDeclarator.FormalParameter[] { new Java.FunctionDeclarator.FormalParameter(loc, true, classToType(loc, type), "value") }, false), new Java.Type[] {}, Lists.newArrayList(st) ); }