X-Git-Url: http://git.megacz.com/?p=org.ibex.classgen.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fclassgen%2FType.java;fp=src%2Forg%2Fibex%2Fclassgen%2FType.java;h=6e20f672dcf80c339379c032a6f3825a336230e8;hp=08c346fba161b6773def91c5c6e7dd5a22e9b51b;hb=0b535cb6b45f0d8a1d43eee75a3fe187ed383ef8;hpb=e70f9a95d3058a30dc93d8d45078ece8bb7a7dc6 diff --git a/src/org/ibex/classgen/Type.java b/src/org/ibex/classgen/Type.java index 08c346f..6e20f67 100644 --- a/src/org/ibex/classgen/Type.java +++ b/src/org/ibex/classgen/Type.java @@ -115,10 +115,16 @@ public abstract class Type implements CGConst { return a; } - public Field field(String name, Type type) { return new Field(name, type); } - public abstract class Body extends HasFlags { + public abstract class Body extends HasAttributes { + public Body(int flags, ClassFile.AttrGen attrs) { + super(flags, attrs); + if ((flags & ~(PUBLIC|FINAL|SUPER|INTERFACE|ABSTRACT)) != 0) + throw new IllegalArgumentException("invalid flags: " + Integer.toString(flags,16)); + } } + public Field field(String name, Type type) { return new Field(name, type); } + public Method method(String name, Type returnType, Type[] argTypes) { return new Method(name, returnType, argTypes); } public Method method(String leftCrap, String rightCrap) { return method(leftCrap+rightCrap); } @@ -164,14 +170,12 @@ public abstract class Type implements CGConst { public String getTypeDescriptor() { return type.getDescriptor(); } public Type getType() { return type; } public String debugToString() { return getDeclaringClass().debugToString()+"."+name+"["+type.debugToString()+"]"; } - public class Body extends HasFlags { - public final int flags; - public Body(int flags) { + public class Body extends HasAttributes { + public Field getField() { return Field.this; } + public Body(int flags, ClassFile.AttrGen attrs) { + super(flags, attrs); if ((flags & ~VALID_FIELD_FLAGS) != 0) throw new IllegalArgumentException("invalid flags"); - this.flags = flags; } - public int getFlags() { return flags; } - public Field getField() { return Field.this; } } } @@ -217,9 +221,13 @@ public abstract class Type implements CGConst { sb.append(returnType.getDescriptor()); return sb.toString(); } - public abstract class Body extends HasFlags { + public abstract class Body extends HasAttributes { public abstract java.util.Hashtable getThrownExceptions(); public abstract void debugBodyToString(StringBuffer sb); + public Body(int flags, ClassFile.AttrGen attrs) { + super(flags, attrs); + if ((flags & ~VALID_METHOD_FLAGS) != 0) throw new IllegalArgumentException("invalid flags"); + } public void debugToString(StringBuffer sb, String constructorName) { int flags = getFlags(); sb.append(" ").append(ClassFile.flagsToString(flags,false));