From: adam Date: Mon, 27 Jun 2005 08:30:01 +0000 (+0000) Subject: refactored a lot of functionality up from MethodGen into Type.Class.Method X-Git-Url: http://git.megacz.com/?p=org.ibex.classgen.git;a=commitdiff_plain;h=e2310783b3b5cf06044d90387938209726054980 refactored a lot of functionality up from MethodGen into Type.Class.Method darcs-hash:20050627083001-5007d-98b135f8f7eeddb1bc30e4af05bfb8d58d8708be.gz --- diff --git a/src/org/ibex/classgen/CGConst.java b/src/org/ibex/classgen/CGConst.java index d789292..9d8d6d4 100644 --- a/src/org/ibex/classgen/CGConst.java +++ b/src/org/ibex/classgen/CGConst.java @@ -20,11 +20,12 @@ public interface CGConst { public static final int SYNCHRONIZED = 0x0020; public static final int NATIVE = 0x0100; public static final int STRICT = 0x0800; + public static final int VALID_METHOD_FLAGS = PUBLIC|PRIVATE|PROTECTED|STATIC|FINAL|SYNCHRONIZED|NATIVE|ABSTRACT|STRICT; // Field only public static final int VOLATILE = 0x0040; public static final int TRANSIENT = 0x0080; - + // Constant Pool Stuff public static final int CONSTANT_UTF8 = 1; diff --git a/src/org/ibex/classgen/ClassFile.java b/src/org/ibex/classgen/ClassFile.java index 8cb2853..f70ed48 100644 --- a/src/org/ibex/classgen/ClassFile.java +++ b/src/org/ibex/classgen/ClassFile.java @@ -86,7 +86,7 @@ public class ClassFile implements CGConst { @see CGConst */ public final MethodGen addMethod(String name, Type ret, Type[] args, int flags) { - MethodGen mg = new MethodGen(this, name, ret, args, flags, (this.flags & INTERFACE) != 0); + MethodGen mg = new MethodGen(this.getType(), name, ret, args, flags, (this.flags & INTERFACE) != 0); methods.addElement(mg); return mg; } @@ -215,7 +215,7 @@ public class ClassFile implements CGConst { int numFields = i.readShort(); for(int j=0; j")) sb.append("static "); - else { - if (name.equals("")) - sb.append(constructorName); - else - sb.append(ret.debugToString()).append(" ").append(name); - sb.append("("); - for(int i=0; i 0) { - sb.append("throws"); - for(Enumeration e = thrownExceptions.keys();e.hasMoreElements();) - sb.append(" ").append(((Type.Class)e.nextElement()).debugToString()).append(","); - sb.setLength(sb.length()-1); - sb.append(" "); - } + sb.append(method.debugToString()); + if(thrownExceptions.size() > 0) { + sb.append("throws"); + for(Enumeration e = thrownExceptions.keys();e.hasMoreElements();) + sb.append(" ").append(((Type.Class)e.nextElement()).debugToString()).append(","); + sb.setLength(sb.length()-1); + sb.append(" "); } if((flags & (NATIVE|ABSTRACT))==0) { sb.append("{\n"); @@ -118,17 +104,11 @@ public class MethodGen implements CGConst { } } - MethodGen(ClassFile cf, DataInput in, ConstantPool cp, boolean ownerInterface) throws IOException { - this.cf = cf; - flags = in.readShort(); - if((flags & ~(PUBLIC|PRIVATE|PROTECTED|STATIC|FINAL|SYNCHRONIZED|NATIVE|ABSTRACT|STRICT)) != 0) - throw new ClassFile.ClassReadExn("invalid flags"); - this.name = cp.getUtf8KeyByIndex(in.readShort()); - //System.err.println("Processing " + name + "..."); - Type.Class.Method m = cf.getType().method(name+cp.getUtf8KeyByIndex(in.readShort())); - this.ret = m.returnType; - this.args = new Type[m.getNumArgs()]; - for(int i=0; i")) sb.append("static "); + else { + if (name.equals("")) + sb.append(Class.this.getShortName()); + else + sb.append(returnType).append(" ").append(name); + sb.append("("); + for(int i=0; i