@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(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; }
@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 < 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; }
@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; }
@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; }
@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.Rvalue generateSetInvocation(Class type, int index, String value) throws CompileException { return new Java.MethodInvocation(loc, new Java.AmbiguousName(loc, new String[] {"unsafe"}), "put" + accessorForType(type), new Java.Rvalue[]{ new Java.BinaryOperation(loc, new Java.AmbiguousName(loc, new String[]{"address"}), "+", new Java.IntegerLiteral(loc, Integer.toString(layout[index]))), new Java.Cast(loc, classToRefType(type), new Java.AmbiguousName(loc, new String[] {value})) } ); }
protected Java.Rvalue generateGetInvocation(Class type, int index) throws CompileException { return new Java.MethodInvocation(loc, new Java.AmbiguousName(loc, new String[] {"unsafe"}), "get" + accessorForType(type), new Java.Rvalue[] { new Java.BinaryOperation(loc, new Java.AmbiguousName(loc, new String[] {"address"}), "+", new Java.IntegerLiteral(loc, Integer.toString(layout[index]))) } ); }