gnu.kawa.reflect
Class SingletonType

java.lang.Object
  extended by gnu.bytecode.Type
      extended by gnu.bytecode.ObjectType
          extended by gnu.kawa.reflect.SingletonType

public class SingletonType
extends ObjectType


Field Summary
 
Fields inherited from class gnu.bytecode.ObjectType
flags
 
Fields inherited from class gnu.bytecode.Type
boolean_ctype, boolean_type, booleanValue_method, byte_type, char_type, clone_method, double_type, doubleValue_method, float_type, floatValue_method, int_type, intValue_method, java_lang_Class_type, long_type, longValue_method, neverReturnsType, nullType, number_type, pointer_type, reflectClass, short_type, string_type, throwable_type, toString_method, tostring_type, typeArray0, void_type
 
Constructor Summary
SingletonType(java.lang.String name)
           
 
Method Summary
 java.lang.Object coerceFromObject(java.lang.Object obj)
          Convert an object to a value of this Type.
static java.lang.Object coerceToSingleton(java.lang.Object obj)
           
 int compare(Type other)
          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.
 void emitCoerceFromObject(CodeAttr code)
          Compile (in given method) cast from Object to this Type.
 Type getImplementationType()
          The type used to implement types not natively understood by the JVM.
static SingletonType getInstance()
           
 java.lang.Class getReflectClass()
          Get the java.lang.Class object for the representation type.
 boolean isInstance(java.lang.Object obj)
           
 
Methods inherited from class gnu.bytecode.ObjectType
getInternalName, getMethods, isExisting, promote, setExisting
 
Methods inherited from class gnu.bytecode.Type
coerceToObject, emitCoerceToObject, emitIsInstance, getName, getSignature, getSize, getSizeInWords, getType, hashCode, isMoreSpecific, isSubtype, isValidJavaTypeName, isVoid, lookupType, lowestCommonSuperType, make, registerTypeForClass, setName, setReflectClass, setSignature, signatureLength, signatureLength, signatureToName, signatureToPrimitive, signatureToType, signatureToType, swappedCompareResult, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SingletonType

public SingletonType(java.lang.String name)
Method Detail

getInstance

public static final SingletonType getInstance()

getReflectClass

public java.lang.Class getReflectClass()
Description copied from class: ObjectType
Get the java.lang.Class object for the representation type.

Overrides:
getReflectClass in class ObjectType

getImplementationType

public Type getImplementationType()
Description copied from class: Type
The type used to implement types not natively understood by the JVM. Usually, the identity function. However, a language might handle union types or template types or type expressions calculated at run time. In that case return the type used at the JVM level, and known at compile time.

Overrides:
getImplementationType in class ObjectType

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 member" 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 not 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.

Overrides:
compare in class ObjectType

coerceToSingleton

public static java.lang.Object coerceToSingleton(java.lang.Object obj)

coerceFromObject

public java.lang.Object coerceFromObject(java.lang.Object obj)
Description copied from class: ObjectType
Convert an object to a value of this Type. Throw a ClassCastException when this is not possible.

Overrides:
coerceFromObject in class ObjectType

emitCoerceFromObject

public void emitCoerceFromObject(CodeAttr code)
Description copied from class: ObjectType
Compile (in given method) cast from Object to this Type.

Overrides:
emitCoerceFromObject in class ObjectType

isInstance

public boolean isInstance(java.lang.Object obj)
Overrides:
isInstance in class ObjectType