ptolemy.data.type
Class BaseType

java.lang.Object
  extended by ptolemy.data.type.BaseType
All Implemented Interfaces:
java.io.Serializable, Type
Direct Known Subclasses:
BaseType.ArrayBottomType, BaseType.BooleanType, BaseType.ComplexType, BaseType.DoubleType, BaseType.EventType, BaseType.FloatType, BaseType.GeneralType, BaseType.IntType, BaseType.LongType, BaseType.NilType, BaseType.PetiteType, BaseType.ScalarType, BaseType.ShortType, BaseType.StringType, BaseType.UnknownType, BaseType.UnsignedByteType, BaseType.UnsizedFixType, BaseType.XmlTokenType

public abstract class BaseType
extends java.lang.Object
implements Type, java.io.Serializable

The type of base token classes. This class provides a type safe enumeration of base types.

Since:
Ptolemy II 0.4
Version:
$Id: BaseType.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Yuhong Xiong, Steve Neuendorffer
See Also:
Serialized Form
Accepted Rating:
Red
Proposed Rating:
Red (yuhong)

Nested Class Summary
static class BaseType.ArrayBottomType
          The bottom element of the array type lattice.
static class BaseType.BooleanType
          The boolean data type.
static class BaseType.ComplexType
          The complex data type.
static class BaseType.DoubleType
          The double data type.
static class BaseType.EventType
          The event data type.
static class BaseType.FloatType
          The float data type.
static class BaseType.GeneralType
          The general data type: The top of the lattice.
static class BaseType.IntType
          The integer data type.
static class BaseType.LongType
          The long integer data type.
static class BaseType.NilType
          The nil data type.
static class BaseType.PetiteType
          The petite data type.
static class BaseType.ScalarType
          The scalar data type: The least upper bound of all the scalar types.
static class BaseType.ShortType
          The short integer data type.
static class BaseType.StringType
          The string data type.
static class BaseType.UnknownType
          The bottom element of the data type lattice.
static class BaseType.UnsignedByteType
          The unsigned byte data type.
static class BaseType.UnsizedFixType
          The fix data type.
static class BaseType.XmlTokenType
          The XmlToken data type.
 
Field Summary
private static java.util.Map _classNameToType
          A map from class name to the type for all base types.
private  java.lang.String _name
          The name of the type.
private static java.util.Map _nameToType
          A map from type name to the type for all base types.
private  java.lang.Class _tokenClass
          The class of tokens with this type.
static Type ACTOR
          The actor data type.
static BaseType.ArrayBottomType ARRAY_BOTTOM
          The bottom element of the array type lattice.
static BaseType.BooleanType BOOLEAN
          The boolean data type.
static MatrixType.BooleanMatrixType BOOLEAN_MATRIX
          The boolean matrix data type.
static BaseType.ComplexType COMPLEX
          The complex data type.
static MatrixType.ComplexMatrixType COMPLEX_MATRIX
          The complex matrix data type.
static BaseType.DoubleType DOUBLE
          The double data type.
static MatrixType.DoubleMatrixType DOUBLE_MATRIX
          The double matrix data type.
static BaseType.EventType EVENT
          The event data type.
static BaseType.UnsizedFixType FIX
          An alias for the unsized fix data type, provided for backward compatibility with the previous versions of Ptolemy.
static MatrixType.FixMatrixType FIX_MATRIX
          The fix matrix data type.
static BaseType.FloatType FLOAT
          The float data type.
static BaseType.GeneralType GENERAL
          The general data type: The top of the lattice.
static BaseType.IntType INT
          The integer data type.
static MatrixType.IntMatrixType INT_MATRIX
          The integer matrix data type.
static BaseType.LongType LONG
          The long integer data type.
static MatrixType.LongMatrixType LONG_MATRIX
          The long integer matrix data type.
static MatrixType MATRIX
          The matrix data type: The least upper bound of all the matrix types.
static BaseType.NilType NIL
          The nil data type.
static ObjectType OBJECT
          The object data type.
static BaseType.PetiteType PETITE
          The petite data type.
static RecordType RECORD
          Setting the type of something to RECORD allows it to take on a value that is any record with any fields.
static BaseType.ScalarType SCALAR
          The scalar data type: The least upper bound of all the scalar types.
static BaseType.ShortType SHORT
          The short integer data type.
static FixType SIZED_FIX
          The fix data type, with a precision specified.
static BaseType.StringType STRING
          The string data type.
static BaseType.UnknownType UNKNOWN
          The bottom element of the data type lattice.
static BaseType.UnsignedByteType UNSIGNED_BYTE
          The unsigned byte data type.
static BaseType.UnsizedFixType UNSIZED_FIX
          The unsized fix data type.
static BaseType.XmlTokenType XMLTOKEN
          The XmlToken data type.
 
Fields inherited from interface ptolemy.data.type.Type
HASH_INVALID, HASH_MAX
 
Constructor Summary
private BaseType(java.lang.Class c, java.lang.String name)
          The constructor is private to make a type safe enumeration.
 
Method Summary
(package private) static void _addType(Type type, java.lang.String name, java.lang.Class theClass)
          Add entries in this class to index the given name and class to the given type.
 Type add(Type rightArgumentType)
          Return a new type which represents the type that results from adding a token of this type and a token of the given argument type.
 java.lang.Object clone()
          Return this, that is, return the reference to this object.
abstract  Token convert(Token t)
          Convert the specified token to a token having the type represented by this object.
 Type divide(Type rightArgumentType)
          Return a new type which represents the type that results from dividing a token of this type and a token of the given argument type.
 boolean equals(java.lang.Object object)
          Determine if the argument represents the same BaseType as this object.
static Type forClassName(java.lang.String className)
          Return an instance of Type of that corresponds to tokens of a class with the given name, or null if none exists.
static Type forName(java.lang.String name)
          Return an instance of this class with the specified name, or null if none exists.
 java.lang.Class getTokenClass()
          Return the class for tokens that this basetype represents.
 int getTypeHash()
          Return a perfect hash for this type.
 int hashCode()
          Return a hash code value for this object.
 boolean isAbstract()
          Return true if this type does not correspond to a single token class.
 boolean isCompatible(Type type)
          Test if the argument type is compatible with this type.
 boolean isConstant()
          Test if this Type is UNKNOWN.
 boolean isInstantiable()
          Determine if this type corresponds to an instantiable token classes.
 boolean isSubstitutionInstance(Type type)
          Return true if the argument is a substitution instance of this type.
 Type modulo(Type rightArgumentType)
          Return a new type which represents the type that results from moduloing a token of this type and a token of the given argument type.
 Type multiply(Type rightArgumentType)
          Return a new type which represents the type that results from multiplying a token of this type and a token of the given argument type.
 Type one()
          Return the type of the multiplicative identity for elements of this type.
 Type subtract(Type rightArgumentType)
          Return a new type which represents the type that results from subtracting a token of this type and a token of the given argument type.
 java.lang.String toString()
          Return the string representation of this type.
 Type zero()
          Return the type of the additive identity for elements of this type.
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

UNKNOWN

public static final BaseType.UnknownType UNKNOWN
The bottom element of the data type lattice.


ARRAY_BOTTOM

public static final BaseType.ArrayBottomType ARRAY_BOTTOM
The bottom element of the array type lattice.


BOOLEAN

public static final BaseType.BooleanType BOOLEAN
The boolean data type.


BOOLEAN_MATRIX

public static final MatrixType.BooleanMatrixType BOOLEAN_MATRIX
The boolean matrix data type.


UNSIGNED_BYTE

public static final BaseType.UnsignedByteType UNSIGNED_BYTE
The unsigned byte data type.


COMPLEX

public static final BaseType.ComplexType COMPLEX
The complex data type.


COMPLEX_MATRIX

public static final MatrixType.ComplexMatrixType COMPLEX_MATRIX
The complex matrix data type.


FLOAT

public static final BaseType.FloatType FLOAT
The float data type.


DOUBLE

public static final BaseType.DoubleType DOUBLE
The double data type.


DOUBLE_MATRIX

public static final MatrixType.DoubleMatrixType DOUBLE_MATRIX
The double matrix data type.


FIX

public static final BaseType.UnsizedFixType FIX
An alias for the unsized fix data type, provided for backward compatibility with the previous versions of Ptolemy.


UNSIZED_FIX

public static final BaseType.UnsizedFixType UNSIZED_FIX
The unsized fix data type.


SIZED_FIX

public static final FixType SIZED_FIX
The fix data type, with a precision specified.


FIX_MATRIX

public static final MatrixType.FixMatrixType FIX_MATRIX
The fix matrix data type.


SHORT

public static final BaseType.ShortType SHORT
The short integer data type.


INT

public static final BaseType.IntType INT
The integer data type.


INT_MATRIX

public static final MatrixType.IntMatrixType INT_MATRIX
The integer matrix data type.


LONG

public static final BaseType.LongType LONG
The long integer data type.


LONG_MATRIX

public static final MatrixType.LongMatrixType LONG_MATRIX
The long integer matrix data type.


OBJECT

public static final ObjectType OBJECT
The object data type.


ACTOR

public static final Type ACTOR
The actor data type.


XMLTOKEN

public static final BaseType.XmlTokenType XMLTOKEN
The XmlToken data type.


SCALAR

public static final BaseType.ScalarType SCALAR
The scalar data type: The least upper bound of all the scalar types.


MATRIX

public static final MatrixType MATRIX
The matrix data type: The least upper bound of all the matrix types.


STRING

public static final BaseType.StringType STRING
The string data type.


GENERAL

public static final BaseType.GeneralType GENERAL
The general data type: The top of the lattice.


EVENT

public static final BaseType.EventType EVENT
The event data type.


PETITE

public static final BaseType.PetiteType PETITE
The petite data type.


NIL

public static final BaseType.NilType NIL
The nil data type.


RECORD

public static final RecordType RECORD
Setting the type of something to RECORD allows it to take on a value that is any record with any fields. This is because a lossless conversion any such record to an empty record just returns the original record. So to force something to have a record type without specifying what fields it should have, do
    something.setTypeEquals(BaseType.RECORD);
  
To allow the type to resolve to a specific record type (with particular fields), do instead
    something.setTypeAtMost(BaseType.RECORD);
  
This will work for example to require a parameter to have a record value, but to allow its type to resolve to the specific record specified.


_tokenClass

private java.lang.Class _tokenClass
The class of tokens with this type.


_name

private java.lang.String _name
The name of the type.


_nameToType

private static java.util.Map _nameToType
A map from type name to the type for all base types.


_classNameToType

private static java.util.Map _classNameToType
A map from class name to the type for all base types.

Constructor Detail

BaseType

private BaseType(java.lang.Class c,
                 java.lang.String name)
The constructor is private to make a type safe enumeration.

Method Detail

add

public Type add(Type rightArgumentType)
Return a new type which represents the type that results from adding a token of this type and a token of the given argument type.

Specified by:
add in interface Type
Parameters:
rightArgumentType - The type to add to this type.
Returns:
A new type, or BaseType.GENERAL, if the operation does not make sense for the given types.

clone

public java.lang.Object clone()
Return this, that is, return the reference to this object.

Specified by:
clone in interface Type
Overrides:
clone in class java.lang.Object
Returns:
A BaseType.

convert

public abstract Token convert(Token t)
                       throws IllegalActionException
Convert the specified token to a token having the type represented by this object.

Specified by:
convert in interface Type
Parameters:
t - A token.
Returns:
A token.
Throws:
IllegalActionException - If lossless conversion cannot be done.

divide

public Type divide(Type rightArgumentType)
Return a new type which represents the type that results from dividing a token of this type and a token of the given argument type.

Specified by:
divide in interface Type
Parameters:
rightArgumentType - The type to add to this type.
Returns:
A new type, or BaseType.GENERAL, if the operation does not make sense for the given types.

equals

public boolean equals(java.lang.Object object)
Determine if the argument represents the same BaseType as this object.

Specified by:
equals in interface Type
Overrides:
equals in class java.lang.Object
Parameters:
object - Another object.
Returns:
True if the argument represents the same BaseType as this object; false otherwise.

forClassName

public static Type forClassName(java.lang.String className)
Return an instance of Type of that corresponds to tokens of a class with the given name, or null if none exists.

Parameters:
className - The name of the class.
Returns:
An instance of BaseType.

forName

public static Type forName(java.lang.String name)
Return an instance of this class with the specified name, or null if none exists.

Parameters:
name - The name of the type.
Returns:
An instance of BaseType.

getTokenClass

public java.lang.Class getTokenClass()
Return the class for tokens that this basetype represents.

Specified by:
getTokenClass in interface Type
Returns:
The class for tokens that this type represents.

getTypeHash

public int getTypeHash()
Return a perfect hash for this type. This number corresponds uniquely to a particular type, and is used to improve performance of certain operations in the TypeLattice class. All instances of a particular type (e.g. integer array) must return the same number. Types that return HASH_INVALID will not have results in TypeLattice cached. Note that it is safer to return HASH_INVALID, than to return a number that is not unique, or different number for the same type from different instances. This base class returns HASH_INVALID.

Specified by:
getTypeHash in interface Type
Returns:
A number between 0 and HASH_MAX, or HASH_INVALID.

hashCode

public int hashCode()
Return a hash code value for this object.

Overrides:
hashCode in class java.lang.Object

modulo

public Type modulo(Type rightArgumentType)
Return a new type which represents the type that results from moduloing a token of this type and a token of the given argument type.

Specified by:
modulo in interface Type
Parameters:
rightArgumentType - The type to add to this type.
Returns:
A new type, or BaseType.GENERAL, if the operation does not make sense for the given types.

multiply

public Type multiply(Type rightArgumentType)
Return a new type which represents the type that results from multiplying a token of this type and a token of the given argument type.

Specified by:
multiply in interface Type
Parameters:
rightArgumentType - The type to add to this type.
Returns:
A new type, or BaseType.GENERAL, if the operation does not make sense for the given types.

isAbstract

public boolean isAbstract()
Return true if this type does not correspond to a single token class. This occurs if the type is not instantiable, or it represents either an abstract base class or an interface.

Specified by:
isAbstract in interface Type
Returns:
True if this type does not correspond to a single token class.

isCompatible

public boolean isCompatible(Type type)
Test if the argument type is compatible with this type. The method returns true if this type is UNKNOWN, since any type is a substitution instance of it. If this type is not UNKNOWN, this method returns true if the argument type is less than or equal to this type in the type lattice, and false otherwise.

Specified by:
isCompatible in interface Type
Parameters:
type - An instance of Type.
Returns:
True if the argument is compatible with this type.

isConstant

public boolean isConstant()
Test if this Type is UNKNOWN.

Specified by:
isConstant in interface Type
Returns:
True if this Type is not UNKNOWN; false otherwise.

isInstantiable

public boolean isInstantiable()
Determine if this type corresponds to an instantiable token classes. A BaseType is instantiable if it does not correspond to an abstract token class, or an interface, or UNKNOWN.

Specified by:
isInstantiable in interface Type
Returns:
True if this type is instantiable.

isSubstitutionInstance

public boolean isSubstitutionInstance(Type type)
Return true if the argument is a substitution instance of this type.

Specified by:
isSubstitutionInstance in interface Type
Parameters:
type - A Type.
Returns:
True if this type is UNKNOWN; false otherwise.

one

public Type one()
Return the type of the multiplicative identity for elements of this type.

Specified by:
one in interface Type
Returns:
A new type, or BaseType.GENERAL, if the operation does not make sense for the given types.

subtract

public Type subtract(Type rightArgumentType)
Return a new type which represents the type that results from subtracting a token of this type and a token of the given argument type.

Specified by:
subtract in interface Type
Parameters:
rightArgumentType - The type to add to this type.
Returns:
A new type, or BaseType.GENERAL, if the operation does not make sense for the given types.

toString

public java.lang.String toString()
Return the string representation of this type.

Specified by:
toString in interface Type
Overrides:
toString in class java.lang.Object
Returns:
A String.

zero

public Type zero()
Return the type of the additive identity for elements of this type.

Specified by:
zero in interface Type
Returns:
A new type, or BaseType.GENERAL, if the operation does not make sense for the given types.

_addType

static void _addType(Type type,
                     java.lang.String name,
                     java.lang.Class theClass)
Add entries in this class to index the given name and class to the given type.