Member.getDescriptor
authorbrian <brian@brianweb.net>
Sat, 2 Jul 2005 23:06:01 +0000 (23:06 +0000)
committerbrian <brian@brianweb.net>
Sat, 2 Jul 2005 23:06:01 +0000 (23:06 +0000)
darcs-hash:20050702230601-24bed-9e63b489bd661489230fff789495b2d8e47cfc8d.gz

src/org/ibex/classgen/ConstantPool.java
src/org/ibex/classgen/MethodGen.java
src/org/ibex/classgen/Type.java

index dbd958c..eb2497d 100644 (file)
@@ -236,7 +236,7 @@ class ConstantPool implements CGConst {
                     : m instanceof Type.Class.Method ? CONSTANT_METHODREF
                     : 0;
             if (tag == 0) throw new Error("should never happen");
-            ent = new MemberEnt(tag, m.getDeclaringClass(), m.name, m.getDescriptor());
+            ent = new MemberEnt(tag, m.getDeclaringClass(), m.name, m.getTypeDescriptor());
         } 
         else {
             throw new IllegalArgumentException("Unknown type passed to add");
index 90edacd..c4ebfe9 100644 (file)
@@ -579,7 +579,7 @@ public class MethodGen extends Type.Class.Method.Body implements CGConst {
     */
     void finish(ConstantPool cp) {
         cp.addUtf8(method.name);
-        cp.addUtf8(method.getDescriptor());
+        cp.addUtf8(method.getTypeDescriptor());
         
         for(Enumeration e = thrownExceptions.keys();e.hasMoreElements();)
             cp.add(e.nextElement());
@@ -901,7 +901,7 @@ public class MethodGen extends Type.Class.Method.Body implements CGConst {
         
         o.writeShort(flags);
         o.writeShort(cp.getUtf8Index(method.name));
-        o.writeShort(cp.getUtf8Index(method.getDescriptor()));
+        o.writeShort(cp.getUtf8Index(method.getTypeDescriptor()));
         attrs.dump(o,cp);
     }
     
index 1a6ac97..f136d84 100644 (file)
@@ -132,6 +132,14 @@ public class Type implements CGConst {
             private Member(String name) { this.name = name; }
             public Type.Class getDeclaringClass() { return Type.Class.this; }
             public abstract String getDescriptor();
+            public boolean equals(Object o_) {
+                if(!(o_ instanceof Member)) return false;
+                Member o = (Member) o_;
+                return o.getDeclaringClass().equals(getDeclaringClass()) &&
+                    o.name.equals(name) &&
+                    o.getDescriptor().equals(getDescriptor());
+            }
+            public int hashCode() { return getDeclaringClass().hashCode() ^ name.hashCode() ^ getDescriptor().hashCode(); }
             public String toString() { return debugToString(); }
             public abstract String debugToString();
         }
@@ -139,7 +147,7 @@ public class Type implements CGConst {
         public class Field extends Member {
             public final Type type;
             private Field(String name, Type t) { super(name); this.type = t; }
-            public String getDescriptor() { return type.getDescriptor(); }
+            public String getTypeDescriptor() { return type.getDescriptor(); }
             public Type getType() { return type; }
             public String debugToString() { return getDeclaringClass()+"."+name+"["+type+"]"; }
             public class Body extends HasFlags {
@@ -183,7 +191,6 @@ public class Type implements CGConst {
                 this.argTypes = argTypes;
                 this.returnType = returnType;
             }
-            //public Method.Body getBody(Context cx) { }
             public String getDescriptor() {
                 StringBuffer sb = new StringBuffer(argTypes.length*4);
                 sb.append("(");