X-Git-Url: http://git.megacz.com/?p=org.ibex.classgen.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fclassgen%2FType.java;h=cb5548e12aab813966fa7db69d7f5065477d30c9;hp=87705b4058904dd333df6bb16f467398096fdff5;hb=7f1eaf5d7ee54b09ffd9d91a7f8fc23803d9703a;hpb=cb0bae954e7dd0067e77c436c78ee19ace52d9e3 diff --git a/src/org/ibex/classgen/Type.java b/src/org/ibex/classgen/Type.java index 87705b4..cb5548e 100644 --- a/src/org/ibex/classgen/Type.java +++ b/src/org/ibex/classgen/Type.java @@ -5,45 +5,115 @@ import java.util.StringTokenizer; public class Type { public static final Type VOID = new Type("V"); public static final Type INT = new Type("I"); - public static final Type STRING = new Type.Object("java.lang.String"); - public static final Type[] NO_ARGS = new Type[0]; + public static final Type LONG = new Type("J"); + public static final Type BOOLEAN = new Type("Z"); + public static final Type DOUBLE = new Type("D"); + public static final Type FLOAT = new Type("F"); + public static final Type BYTE = new Type("B"); + public static final Type CHAR = new Type("C"); + public static final Type SHORT = new Type("S"); - String descriptor; + public static final Type.Object OBJECT = new Type.Object("java.lang.Object"); + public static final Type.Object STRING = new Type.Object("java.lang.String"); + public static final Type.Object STRINGBUFFER = new Type.Object("java.lang.StringBuffer"); + public static final Type.Object INTEGER_OBJECT = new Type.Object("java.lang.Integer"); + public static final Type.Object DOUBLE_OBJECT = new Type.Object("java.lang.Double"); + public static final Type.Object FLOAT_OBJECT = new Type.Object("java.lang.Float"); - Type() { } - Type(String descriptor) { this.descriptor = descriptor; } + /** A zero element Type[] array (can be passed as the "args" param when a method takes no arguments */ + public static final Type[] NO_ARGS = new Type[0]; - public final String getDescriptor() { return descriptor; } - public int hashCode() { return descriptor.hashCode(); } - public boolean equals(Object o) { return o instanceof Type && ((Type)o).descriptor.equals(descriptor); } + final String descriptor; + + public String humanReadable() { + if (descriptor.equals("V")) return "void"; + if (descriptor.equals("I")) return "int"; + if (descriptor.equals("J")) return "long"; + if (descriptor.equals("Z")) return "boolean"; + if (descriptor.equals("D")) return "double"; + if (descriptor.equals("F")) return "float"; + if (descriptor.equals("B")) return "byte"; + if (descriptor.equals("C")) return "char"; + if (descriptor.equals("S")) return "short"; + throw new Error("confounded by Type("+descriptor+")"); + } + + protected Type(String descriptor) { this.descriptor = descriptor; } - public static Type arrayType(Type base) { return arrayType(base,1); } - public static Type arrayType(Type base, int dim) { - StringBuffer sb = new StringBuffer(base.descriptor.length() + dim); - for(int i=0;i