Package gnu.bytecode

Class PrimType

  • All Implemented Interfaces:
    Type
    Direct Known Subclasses:
    LangPrimType

    public class PrimType
    extends Type
    • Constructor Detail

      • PrimType

        public PrimType​(String nam,
                        String sig,
                        int siz,
                        Class reflectClass)
      • PrimType

        protected PrimType​(PrimType type)
    • Method Detail

      • isUnsigned

        public boolean isUnsigned()
      • coerceFromObject

        public Object coerceFromObject​(Object obj)
        Description copied from class: Type
        Convert an object to a value of this Type. The result is actually of the implementation type, boxed as appropriate, so it is suitable for standard reflective operations, like the arguments to Field#set or Method#invoke. Throw a ClassCastException when this is not possible.
        Specified by:
        coerceFromObject in class Type
      • charValue

        public char charValue​(Object value)
        Coerce value to a char. Only defined if getSignature() is "C".
      • booleanValue

        public static boolean booleanValue​(Object value)
        Coerce value to a boolean. Only defined if getSignature() is "Z".
      • unboxedType

        public static PrimType unboxedType​(Type type)
      • emitCoerceToObject

        public void emitCoerceToObject​(CodeAttr code)
        Description copied from class: Type
        Compile code to convert a object of this type on the stack to Object.
        Overrides:
        emitCoerceToObject in class Type
      • emitCoerceFromObject

        public void emitCoerceFromObject​(CodeAttr code)
        Description copied from class: Type
        Compile code to coerce/convert from Object to this type.
        Overrides:
        emitCoerceFromObject in class Type
      • promotedType

        public Type promotedType()
      • compare

        public int compare​(Type other)
        Description copied from class: Type
        Return a numeric code showing "subtype" relationship: 1: if other is a pure subtype of this; 0: if has the same values; -1: if this is a pure subtype of other; -2: if they have values in common but neither is a subtype of the other; -3: if the types have no values in common. "Same values" is rather loose; by "A is a subtype of B" we mean that all instance of A can be "widened" to B. More formally, A.compare(B) returns: 1: all B values can be converted to A without a coercion failure (i.e. a ClassCastException or overflow or major loss of information), but not vice versa. 0: all A values can be converted to B without a coercion failure and vice versa; -1: all A values can be converted to B without a coercion failure but not vice versa; -2: there are (potentially) some A values that can be converted to B, and some B values can be converted to A; -3: there are no A values that can be converted to B, and neither are there any B values that can be converted to A.
        Specified by:
        compare in class Type