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=cf9e4a7b29823eb7172cb2d4d46c7af048f21091;hp=85ff1696c48a31bb3bcded2aa72afdd68d2127b9;hb=582bed9ac8d5e11965e69ac0b44fcf9be2967e2e;hpb=ce71fa77f336c3aa7b254dbf18811372e446bd37 diff --git a/src/org/ibex/classgen/Type.java b/src/org/ibex/classgen/Type.java index 85ff169..cf9e4a7 100644 --- a/src/org/ibex/classgen/Type.java +++ b/src/org/ibex/classgen/Type.java @@ -189,6 +189,8 @@ public abstract class Type implements CGConst { public String getName() { return name; } public abstract String getTypeDescriptor(); public abstract String toString(); + public abstract int hashCode(); + public abstract boolean equals(Object o); } public class Field extends Member { @@ -204,6 +206,15 @@ public abstract class Type implements CGConst { if ((flags & ~VALID_FIELD_FLAGS) != 0) throw new IllegalArgumentException("invalid flags"); } } + public int hashCode() { + return type.hashCode() ^ name.hashCode() ^ getDeclaringClass().hashCode(); + } + public boolean equals(Object o_) { + if(o_ == this) return true; + if(!(o_ instanceof Field)) return false; + Field o = (Field) o_; + return o.getDeclaringClass() == getDeclaringClass() && o.type == type && o.name.equals(name); + } } public class Method extends Member { @@ -279,6 +290,21 @@ public abstract class Type implements CGConst { } } } + public int hashCode() { + int h = returnType.hashCode() ^ name.hashCode() ^ getDeclaringClass().hashCode(); + for(int i=0;i