From 73e201d59d3cdaeca7490164bded5d7fb2ab1aef Mon Sep 17 00:00:00 2001 From: jochen Date: Tue, 13 Apr 1999 10:43:44 +0000 Subject: [PATCH] tType(Class) and tMethod(Class[], Class) git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@569 379699f6-c40d-0410-875b-85095c16579e --- jode/jode/type/Type.java | 54 +++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 20 deletions(-) diff --git a/jode/jode/type/Type.java b/jode/jode/type/Type.java index ec085eb..49a039e 100644 --- a/jode/jode/type/Type.java +++ b/jode/jode/type/Type.java @@ -143,35 +143,49 @@ public class Type { public static final Type tStringBuffer = tClass("java.lang.StringBuffer"); public static final Type tJavaLangClass = tClass("java.lang.Class"); - public static final Type tType(Class javaType) { + private static final StringBuffer appendSignature(StringBuffer sb, + Class javaType) { if (javaType.isPrimitive()) { if (javaType == Boolean.TYPE) - return Type.tBoolean; + return sb.append('Z'); else if (javaType == Byte.TYPE) - return Type.tByte; + return sb.append('B'); else if (javaType == Character.TYPE) - return Type.tChar; + return sb.append('C'); else if (javaType == Short.TYPE) - return Type.tShort; + return sb.append('S'); else if (javaType == Integer.TYPE) - return Type.tInt; + return sb.append('I'); else if (javaType == Long.TYPE) - return Type.tLong; + return sb.append('J'); else if (javaType == Float.TYPE) - return Type.tFloat; + return sb.append('F'); else if (javaType == Double.TYPE) - return Type.tDouble; + return sb.append('D'); else if (javaType == Void.TYPE) - return Type.tVoid; + return sb.append('V'); else throw new AssertError("Unknown primitive type: "+javaType); } else if (javaType.isArray()) { - return tArray(tType(javaType.getComponentType())); + return appendSignature(sb.append('['), + javaType.getComponentType()); } else { - return tClass(javaType.getName()); + return sb.append('L') + .append(javaType.getName().replace('.','/')).append(';'); } } + private static String getSignature(Class clazz) { + return appendSignature(new StringBuffer(), clazz).toString(); + } + + private static String getSignature(Class paramT[], Class returnT) { + StringBuffer sig = new StringBuffer("("); + for (int i=0; i< paramT.length; i++) + appendSignature(sig, paramT[i]); + return appendSignature(sig.append(')'), returnT).toString(); + } + public static final Type tType(String type) { if (type == null || type.length() == 0) return tError; @@ -207,6 +221,10 @@ public class Type { throw new AssertError("Unknown type signature: "+type); } + public static final Type tType(Class javaType) { + return Type.tType(getSignature(javaType)); + } + public static final ClassInterfacesType tClass(String clazzname) { return tClass(ClassInfo.forName(clazzname.replace('/','.'))); } @@ -255,7 +273,7 @@ public class Type { return result; } - public static final MethodType tMethod(String signature) { + public static MethodType tMethod(String signature) { ///#ifdef JDK12 /// java.lang.ref.Reference died; /// while ((died = methodQueue.poll()) != null) @@ -275,6 +293,9 @@ public class Type { } return result; } + public static MethodType tMethod(Class paramT[], Class returnT) { + return tMethod(getSignature(paramT, returnT)); + } public static final Type tRange(ReferenceType bottom, ReferenceType top) { @@ -289,13 +310,6 @@ public class Type { return type.getSubType(); } - public static Type tClassOrArray(String ident) { - if (ident.charAt(0) == '[') - return Type.tType(ident); - else - return Type.tClass(ident); - } - public static void setEnvironment(JodeEnvironment e) { env = e; }