|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object ptolemy.data.type.StructuredType ptolemy.data.type.RecordType
public class RecordType
A class representing the type of a RecordToken. To set the type of a typeable object (such as a port or parameter) to a record with particular fields, create an instance of this class and call setTypeEquals() with that instance as an argument.
Note that a record type with more fields is a subtype of a record type with a subset of the fields. For example, {x = double, y = int} is a subtype of {x = double}. When a record of type {x = double, y = int} is converted to one of type {x = double}, the extra field is discarded. The converted record, therefore, will have exactly the fields in the type.
A consequence of this is that all record types are subtypes of the empty record type. Hence, to require that a typeable object be a record type without specifying what the fields are, use
typeable.setTypeAtMost(new RecordType(new String[0], new Type[0]));Note, however, that by itself this type constraint will not be useful because it does not, by itself, prevent the type from resolving to unknown (the unknown type is at the bottom of the type lattice, and hence satisfies this type constraint).
Red (cxh) |
Red (neuendor) |
Nested Class Summary | |
---|---|
private class |
RecordType.FieldType
|
Field Summary | |
---|---|
private java.util.Map |
_fields
|
static RecordType |
EMPTY_RECORD
An empty record. |
Fields inherited from class ptolemy.data.type.StructuredType |
---|
MAXDEPTHBOUND |
Fields inherited from interface ptolemy.data.type.Type |
---|
HASH_INVALID, HASH_MAX |
Constructor Summary | |
---|---|
RecordType(java.util.Map fieldMap)
Construct a RecordType with the labels and values specified by a given Map object. |
|
RecordType(java.lang.String[] labels,
Type[] types)
Construct a new RecordType with the specified labels and types. |
Method Summary | |
---|---|
protected int |
_compare(StructuredType type)
Compare this type with the specified type. |
protected StructuredType |
_getRepresentative()
Return a static instance of RecordType. |
protected StructuredType |
_greatestLowerBound(StructuredType type)
Return the greatest lower bound of this type with the specified type. |
private boolean |
_isLessThanOrEqualTo(RecordType t1,
RecordType t2)
|
protected StructuredType |
_leastUpperBound(StructuredType type)
Return the least Upper bound of this type with the specified type. |
java.lang.Object |
clone()
Return a deep copy of this RecordType if it is a variable, or itself if it is a constant. |
Token |
convert(Token token)
Convert the argument token into a RecordToken having this type, if lossless conversion can be done. |
int |
depth()
Return the depth of a record type. |
boolean |
equals(java.lang.Object object)
Determine if the argument represents the same RecordType as this object. |
Type |
get(java.lang.String label)
Return the type of the specified label. |
java.lang.Class |
getTokenClass()
Return the class for tokens that this type represents. |
InequalityTerm |
getTypeTerm(java.lang.String label)
Return the InequalityTerm representing the type of the specified label. |
int |
hashCode()
Return a hash code value for this object. |
void |
initialize(Type type)
Set the elements that have declared type BaseType.UNKNOWN (the leaf type variable) to the specified type. |
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 RecordType is a constant. |
boolean |
isInstantiable()
Test if this type corresponds to an instantiable token class. |
boolean |
isSubstitutionInstance(Type type)
Test if the specified type is a substitution instance of this type. |
java.util.Set |
labelSet()
Return the labels of this record type as a Set. |
java.lang.String |
toString()
Return the string representation of this type. |
void |
updateType(StructuredType newType)
Update this Type to the specified RecordType. |
Methods inherited from class ptolemy.data.type.StructuredType |
---|
add, divide, getTypeHash, modulo, multiply, one, subtract, zero |
Methods inherited from class java.lang.Object |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static RecordType EMPTY_RECORD
private java.util.Map _fields
Constructor Detail |
---|
public RecordType(java.lang.String[] labels, Type[] types)
labels
- An array of String.types
- An array of Type.
java.lang.IllegalArgumentException
- If the two arrays do not have
the same size.
java.lang.NullPointerException
- If one of the arguments is null.public RecordType(java.util.Map fieldMap) throws IllegalActionException
fieldMap
- A Map that has keys of type String and
values of type Token.
IllegalActionException
- If the map contains null
keys or values, or if it contains non-String keys or non-Type
valuesMethod Detail |
---|
public java.lang.Object clone()
clone
in interface Type
clone
in class StructuredType
public Token convert(Token token) throws IllegalActionException
convert
in interface Type
token
- A token.
IllegalActionException
- If lossless conversion
cannot be done.public int depth()
depth
in class StructuredType
public boolean equals(java.lang.Object object)
equals
in interface Type
equals
in class java.lang.Object
object
- Another object.
public Type get(java.lang.String label)
label
- The specified label.
public java.lang.Class getTokenClass()
getTokenClass
in interface Type
public InequalityTerm getTypeTerm(java.lang.String label)
label
- The specified label.
InequalityTerm
public int hashCode()
hashCode
in class java.lang.Object
public boolean isAbstract()
isAbstract
in interface Type
isAbstract
in class StructuredType
public void initialize(Type type)
initialize
in class StructuredType
type
- the type to set the leaf type variable to.public boolean isCompatible(Type type)
isCompatible
in interface Type
type
- An instance of Type.
public boolean isConstant()
isConstant
in interface Type
public boolean isInstantiable()
isInstantiable
in interface Type
public boolean isSubstitutionInstance(Type type)
isSubstitutionInstance
in interface Type
type
- A Type.
isSubstitutionInstance(ptolemy.data.type.Type)
public java.util.Set labelSet()
public java.lang.String toString()
toString
in interface Type
toString
in class java.lang.Object
public void updateType(StructuredType newType) throws IllegalActionException
updateType
in class StructuredType
newType
- A StructuredType.
IllegalActionException
- If the specified type is not a
RecordType or it does not have the same structure as this one.protected int _compare(StructuredType type)
_compare
in class StructuredType
type
- a RecordType.
java.lang.IllegalArgumentException
- If the specified type is
not a RecordType.protected StructuredType _getRepresentative()
_getRepresentative
in class StructuredType
protected StructuredType _greatestLowerBound(StructuredType type)
_greatestLowerBound
in class StructuredType
type
- a RecordType.
java.lang.IllegalArgumentException
- If the specified type is
not a RecordType.protected StructuredType _leastUpperBound(StructuredType type)
_leastUpperBound
in class StructuredType
type
- a RecordType.
java.lang.IllegalArgumentException
- If the specified type is
not a RecordType.private boolean _isLessThanOrEqualTo(RecordType t1, RecordType t2)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |