@Override protected List<Java.SwitchStatement.SwitchBlockStatementGroup> generateIndexedGetterImpl(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.ReturnStatement(loc, generateGetInvocation(type, n)) ) )); } list.add(generateDefaultCase()); return list; }
new Java.Type[0], Lists.<Java.BlockStatement>newArrayList( new Java.ReturnStatement(loc, new Java.NewClassInstance( loc,
@Override protected List<Java.SwitchStatement.SwitchBlockStatementGroup> generateIndexedGetterImpl(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.ReturnStatement(loc, generateGetInvocation(fieldTypes[i], i))) ) ); } list.add(generateDefaultCase()); return list; }
@Override protected List<Java.SwitchStatement.SwitchBlockStatementGroup> generateIndexedGetterImpl() 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.ReturnStatement(loc, generateGetInvocation(fieldTypes[i], i))) ) ); } list.add(generateDefaultCase()); return list; }
@Override protected List<Java.SwitchStatement.SwitchBlockStatementGroup> generateIndexedGetterImpl() 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.ReturnStatement(loc, generateGetInvocation(fieldTypes[i], i))) ) ); } list.add(generateDefaultCase()); return list; }
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) ); }
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 public Java.BlockStatement copyReturnStatement(Java.ReturnStatement subject) { return new Java.BreakStatement(subject.getLocation(), returnLabel); } };