@Override protected List<Java.SwitchStatement.SwitchBlockStatementGroup> generateIndexedSetterImpl(String value, Class type) throws CompileException { List<Java.SwitchStatement.SwitchBlockStatementGroup> list = Lists.newArrayList(); for (int n=0; n < fieldNames.length; n++) { if (!type.equals(fieldTypes[n])) { continue; } list.add(new Java.SwitchStatement.SwitchBlockStatementGroup(loc, Lists.<Java.Rvalue>newArrayList(new Java.IntegerLiteral(loc, String.valueOf(n+1))), false, Lists.<Java.BlockStatement>newArrayList( new Java.ExpressionStatement(generateSetInvocation(type, n, value)), new Java.BreakStatement(loc, null) ) )); } list.add(generateDefaultCase()); return list; }
private Java.BlockStatement maybeGenerateReturn(Location loc, Java.Rvalue statement) throws Exception { if (returnType.equals(Void.TYPE)) { return new Java.ExpressionStatement(statement); } else { return new Java.ReturnStatement(loc, statement); } }
@Override protected List<Java.SwitchStatement.SwitchBlockStatementGroup> generateIndexedSetterImpl(String value, Class type) throws CompileException { List<Java.SwitchStatement.SwitchBlockStatementGroup> list = Lists.newArrayList(); for (int i=0; i<fieldTypes.length; i++) { if (!type.equals(fieldTypes[i])) { continue; } list.add( new Java.SwitchStatement.SwitchBlockStatementGroup( loc, Lists.<Java.Rvalue>newArrayList(new Java.IntegerLiteral(loc, String.valueOf(i+1))), false, Lists.<Java.BlockStatement>newArrayList( new Java.ExpressionStatement(generateSetInvocation(fieldTypes[i], i, value)), new Java.BreakStatement(loc, null) ) ) ); } list.add(generateDefaultCase()); return list; }
@Override protected List<Java.SwitchStatement.SwitchBlockStatementGroup> generateIndexedSetterImpl(String value) throws CompileException { List<Java.SwitchStatement.SwitchBlockStatementGroup> list = Lists.newArrayList(); for (int i=0; i<fieldTypes.length; i++) { list.add( new Java.SwitchStatement.SwitchBlockStatementGroup( loc, Lists.<Java.Rvalue>newArrayList(new Java.IntegerLiteral(loc, String.valueOf(i+1))), false, Lists.<Java.BlockStatement>newArrayList( new Java.ExpressionStatement(generateSetInvocation(fieldTypes[i], i, value)), new Java.BreakStatement(loc, null) ) ) ); } list.add(generateDefaultCase()); return list; }
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 ); }
@Override protected List<Java.SwitchStatement.SwitchBlockStatementGroup> generateIndexedSetterImpl(String value) throws CompileException { List<Java.SwitchStatement.SwitchBlockStatementGroup> list = Lists.newArrayList(); for (int i=0; i < fieldNames.length; i++) { list.add( new Java.SwitchStatement.SwitchBlockStatementGroup(loc, Lists.<Java.Rvalue>newArrayList(new Java.IntegerLiteral(loc, Integer.toString(i+1))), false, Lists.<Java.BlockStatement>newArrayList( new Java.ExpressionStatement(generateSetInvocation(fieldTypes[i], i, value)), new Java.BreakStatement(loc, null) ) ) ); } list.add(generateDefaultCase()); return list; }
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) ); }