cvs commit: jakarta-bcel/src/java/org/apache/bcel/generic Type.java

[email protected]
Newsgroups gmane.comp.jakarta.bcel.devel
Message-ID <[email protected]>
mdahm       2002/06/05 04:05:37

  Modified:    src/java/org/apache/bcel/generic Type.java
  Log:
  Convert class to type
  
  Revision  Changes    Path
  1.3       +40 -1     jakarta-bcel/src/java/org/apache/bcel/generic/Type.java
  
  Index: Type.java
  ===================================================================
  RCS file: /home/cvs/jakarta-bcel/src/java/org/apache/bcel/generic/Type.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Type.java	24 Apr 2002 11:01:31 -0000	1.2
  +++ Type.java	5 Jun 2002 11:05:37 -0000	1.3
  @@ -63,7 +63,7 @@
    * Abstract super class for all possible java types, namely basic types
    * such as int, object types like String and array types, e.g. int[]
    *
  - * @version $Id: Type.java,v 1.2 2002/04/24 11:01:31 mdahm Exp $
  + * @version $Id: Type.java,v 1.3 2002/06/05 11:05:37 mdahm Exp $
    * @author  <A HREF="mailto:[email protected]">M. Dahm</A>
    */
   public abstract class Type {
  @@ -228,5 +228,44 @@
       types = new Type[vec.size()];
       vec.toArray(types);
       return types;
  +  }
  +
  +  public static Type getType(Class cl) {
  +    if(cl == null) {
  +      throw new IllegalArgumentException("Class must not be null");
  +    }
  +
  +    /* That's an amzingly easy case, because getName() returns
  +     * the signature. That's what we would have liked anyway.
  +     */
  +    if(cl.isArray()) {
  +      return getType(cl.getName());
  +    } else if(cl.isPrimitive()) {
  +      if(cl == Integer.TYPE) {
  +	return INT;
  +      } else if(cl == Void.TYPE) {
  +	return VOID;
  +      } else if(cl == Double.TYPE) {
  +	return DOUBLE;
  +      } else if(cl == Float.TYPE) {
  +	return FLOAT;
  +      } else if(cl == Boolean.TYPE) {
  +	return BOOLEAN;
  +      } else if(cl == Byte.TYPE) {
  +	return BYTE;
  +      } else if(cl == Short.TYPE) {
  +	return SHORT;
  +      } else if(cl == Byte.TYPE) {
  +	return BYTE;
  +      } else if(cl == Long.TYPE) {
  +	return LONG;
  +      } else if(cl == Character.TYPE) {
  +	return CHAR;
  +      } else {
  +	throw new IllegalStateException("Ooops, what primitive type is " + cl);
  +      }
  +    } else { // "Real" class
  +      return new ObjectType(cl.getName());
  +    }
     }
   }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.