public void call(SourceUnit source, GeneratorContext context, ClassNode classNode) throws CompilationFailedException { EnumVisitor ev = new EnumVisitor(CompilationUnit.this, source); ev.visitClass(classNode); } }, Phases.CONVERSION);
public void visitClass(ClassNode node) { if (!node.isEnum()) return; completeEnum(node); }
private void completeEnum(ClassNode enumClass) { boolean isAic = isAnonymousInnerClass(enumClass); // create MIN_VALUE and MAX_VALUE fields FieldNode minValue = null, maxValue = null, values = null; if (!isAic) { ClassNode enumRef = enumClass.getPlainNodeReference(); // create values field values = new FieldNode("$VALUES", PRIVATE_FS | Opcodes.ACC_SYNTHETIC, enumRef.makeArray(), enumClass, null); values.setSynthetic(true); addMethods(enumClass, values); checkForAbstractMethods(enumClass); // create MIN_VALUE and MAX_VALUE fields minValue = new FieldNode("MIN_VALUE", PUBLIC_FS, enumRef, enumClass, null); maxValue = new FieldNode("MAX_VALUE", PUBLIC_FS, enumRef, enumClass, null); } addInit(enumClass, minValue, maxValue, values, isAic); }
public void visitClass(ClassNode node) { if (!isEnum(node)) return; completeEnum(node); }
private String getUniqueVariableName(final String name, Statement code) { if (code==null) return name; final Object[] found=new Object[1]; CodeVisitorSupport cv = new CodeVisitorSupport() { public void visitVariableExpression(VariableExpression expression) { if (expression.getName().equals(name)) found[0]=Boolean.TRUE; } }; code.visit(cv); if (found[0]!=null) return getUniqueVariableName("_"+name, code); return name; }
private void completeEnum(ClassNode enumClass) { boolean isAic = isAnonymousInnerClass(enumClass); // create MIN_VALUE and MAX_VALUE fields FieldNode minValue = null, maxValue = null, values = null; if (!isAic) { ClassNode enumRef = enumClass.getPlainNodeReference(); // create values field values = new FieldNode("$VALUES", PRIVATE_FS | Opcodes.ACC_SYNTHETIC, enumRef.makeArray(), enumClass, null); values.setSynthetic(true); addMethods(enumClass, values); // create MIN_VALUE and MAX_VALUE fields minValue = new FieldNode("MIN_VALUE", PUBLIC_FS, enumRef, enumClass, null); maxValue = new FieldNode("MAX_VALUE", PUBLIC_FS, enumRef, enumClass, null); } addInit(enumClass, minValue, maxValue, values, isAic); }
enumClass.addMethod(valueOfMethod); addConstructor(enumClass);
public void visitClass(ClassNode node) { if (!isEnum(node)) return; completeEnum(node); }
private String getUniqueVariableName(final String name, Statement code) { if (code==null) return name; final Object[] found=new Object[1]; CodeVisitorSupport cv = new CodeVisitorSupport() { public void visitVariableExpression(VariableExpression expression) { if (expression.getName().equals(name)) found[0]=Boolean.TRUE; } }; code.visit(cv); if (found[0]!=null) return getUniqueVariableName("_"+name, code); return name; }
enumClass.addMethod(valueOfMethod); addConstructor(enumClass);
public void call(SourceUnit source, GeneratorContext context, ClassNode classNode) throws CompilationFailedException { EnumVisitor ev = new EnumVisitor(CompilationUnit.this, source); ev.visitClass(classNode); } }, Phases.CONVERSION);
public void visitClass(ClassNode node) { if (!isEnum(node)) return; completeEnum(node); }
private String getUniqueVariableName(final String name, Statement code) { if (code==null) return name; final Object[] found=new Object[1]; CodeVisitorSupport cv = new CodeVisitorSupport() { public void visitVariableExpression(VariableExpression expression) { if (expression.getName().equals(name)) found[0]=Boolean.TRUE; } }; code.visit(cv); if (found[0]!=null) return getUniqueVariableName("_"+name, code); return name; }
public void visitClass(ClassNode node) { if (!node.isEnum()) return; completeEnum(node); }
enumClass.addMethod(valueOfMethod); addConstructor(enumClass);
public void call(SourceUnit source, GeneratorContext context, ClassNode classNode) throws CompilationFailedException { EnumVisitor ev = new EnumVisitor(CompilationUnit.this, source); ev.visitClass(classNode); } }, Phases.CONVERSION);
String stringParameterName = getUniqueVariableName("__str",ctor.getCode()); newP[0] = new Parameter(ClassHelper.STRING_TYPE,stringParameterName); String intParameterName = getUniqueVariableName("__int",ctor.getCode()); newP[1] = new Parameter(ClassHelper.int_TYPE,intParameterName); System.arraycopy(oldP, 0, newP, 2, oldP.length);
public void call(SourceUnit source, GeneratorContext context, ClassNode classNode) throws CompilationFailedException { EnumVisitor ev = new EnumVisitor(CompilationUnit.this, source); ev.visitClass(classNode); } }, Phases.CONVERSION);
String stringParameterName = getUniqueVariableName("__str",ctor.getCode()); newP[0] = new Parameter(ClassHelper.STRING_TYPE,stringParameterName); String intParameterName = getUniqueVariableName("__int",ctor.getCode()); newP[1] = new Parameter(ClassHelper.int_TYPE,intParameterName); System.arraycopy(oldP, 0, newP, 2, oldP.length);
public void call(SourceUnit source, GeneratorContext context, ClassNode classNode) throws CompilationFailedException { EnumVisitor ev = new EnumVisitor(CompilationUnit.this, source); ev.visitClass(classNode); } }, Phases.CONVERSION);