View Javadoc

    1   /*
    2    * Copyright  2000-2004 The Apache Software Foundation
    3    *
    4    *  Licensed under the Apache License, Version 2.0 (the "License");
    5    *  you may not use this file except in compliance with the License.
    6    *  You may obtain a copy of the License at
    7    *
    8    *      http://www.apache.org/licenses/LICENSE-2.0
    9    *
    10   *  Unless required by applicable law or agreed to in writing, software
    11   *  distributed under the License is distributed on an "AS IS" BASIS,
    12   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   *  See the License for the specific language governing permissions and
    14   *  limitations under the License.
    15   *
    16   */
    17  package org.apache.bcel.generic;
    18
    19  import org.apache.bcel.Constants;
    20
    21  /***
    22   * Denotes basic type such as int.
    23   *
    24   * @version $Id: BasicType.java 386056 2006-03-15 11:31:56Z tcurdt $
    25   * @author  <A HREF="mailto:m.dahm@gmx.de">M. Dahm</A>
    26   */
    27  public final class BasicType extends Type {
    28
    29      /***
    30       * Constructor for basic types such as int, long, `void'
    31       *
    32       * @param type one of T_INT, T_BOOLEAN, ..., T_VOID
    33       * @see org.apache.bcel.Constants
    34       */
    35      BasicType(byte type) {
    36          super(type, Constants.SHORT_TYPE_NAMES[type]);
    37          if ((type < Constants.T_BOOLEAN) || (type > Constants.T_VOID)) {
    38              throw new ClassGenException("Invalid type: " + type);
    39          }
    40      }
    41
    42
    43      public static final BasicType getType( byte type ) {
    44          switch (type) {
    45              case Constants.T_VOID:
    46                  return VOID;
    47              case Constants.T_BOOLEAN:
    48                  return BOOLEAN;
    49              case Constants.T_BYTE:
    50                  return BYTE;
    51              case Constants.T_SHORT:
    52                  return SHORT;
    53              case Constants.T_CHAR:
    54                  return CHAR;
    55              case Constants.T_INT:
    56                  return INT;
    57              case Constants.T_LONG:
    58                  return LONG;
    59              case Constants.T_DOUBLE:
    60                  return DOUBLE;
    61              case Constants.T_FLOAT:
    62                  return FLOAT;
    63              default:
    64                  throw new ClassGenException("Invalid type: " + type);
    65          }
    66      }
    67
    68
    69      /*** @return a hash code value for the object.
    70       */
    71      public int hashCode() {
    72          return type;
    73      }
    74
    75
    76      /*** @return true if both type objects refer to the same type
    77       */
    78      public boolean equals( Object _type ) {
    79          return (_type instanceof BasicType) ? ((BasicType) _type).type == this.type : false;
    80      }
    81  }