|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object scale.common.Root scale.clef.Node scale.clef.type.Type scale.clef.type.AtomicType scale.clef.type.NumericType scale.clef.type.EnumerationType
public class EnumerationType
This class represents a C style enumeration type.
$Id: EnumerationType.java,v 1.52 2007-08-27 18:13:32 burrill Exp $
Copyright 2008 by the
Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
Method Summary | |
---|---|
int |
bitSize()
Return the number of bits required to represent the type. |
static void |
cleanup()
Remove static lists of types. |
boolean |
compareEnums(EnumerationType et)
Return true if the bases are the same. |
boolean |
compareEnums(Vector<EnumElementDecl> enumVals)
Return true if the elements of the list are "equal" to this type's enumeration. |
boolean |
compareOrderedEnumerators(EnumerationType t2,
boolean name,
boolean value)
Return true if the enums are the same and the order of elements is the same. |
boolean |
compareUnorderedEnumerators(EnumerationType t2,
boolean name,
boolean value)
Return true if the enums are the same even though the order of elements may be different. |
static EnumerationType |
create(Vector<EnumElementDecl> enums)
Re-use an existing instance of a particular enumeration type. |
boolean |
equivalent(Type t)
Return true if the types are equivalent. |
Node |
getChild(int i)
Return the specified AST child of this node. |
EnumElementDecl |
getEnum(int i)
Return the specified enum element. |
int |
getNumEnums()
Return the number of elements in this enum type. |
static java.util.Enumeration<EnumerationType> |
getTypes()
Return an enumeration of all the different types. |
boolean |
isEnumerationType()
Return true if type represents an enumeration value. |
long |
memorySize(Machine machine)
Calculate how many addressable memory units are needed to represent the type. |
int |
numChildren()
Return the number of AST children of this node. |
EnumerationType |
returnEnumerationType()
Return if this is a EnumerationType , return this . |
void |
visit(Predicate p)
Process a node by calling its associated routine. |
void |
visit(TypePredicate p)
Process a node by calling its associated routine. |
Methods inherited from class scale.clef.type.NumericType |
---|
isNumericType, returnNumericType |
Methods inherited from class scale.clef.type.AtomicType |
---|
alignment, isAtomicType, returnAtomicType |
Methods inherited from class scale.clef.Node |
---|
getDecl, getSourceLineNumber, setAnnotationLevel, setReportLevel, setSourceLineNumber, toString, toStringChildren, toStringSpecial |
Methods inherited from class scale.common.Root |
---|
addAnnotation, allAnnotations, allMatchingAnnotations, getAnnotation, getDisplayName, getDisplayString, getNodeCount, getNodeID, hasAnnotation, hasEqualAnnotation, hashCode, removeAnnotation, removeAnnotations, toStringAnnotations, toStringClass, trace, trace, trace |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait |
Method Detail |
---|
public static EnumerationType create(Vector<EnumElementDecl> enums)
enums
- is a vector of EnumElementDecl instancespublic boolean isEnumerationType()
isEnumerationType
in class Type
public final EnumerationType returnEnumerationType()
Type
this
is a EnumerationType
, return this
. Otherwise, return
null
.
returnEnumerationType
in class Type
public boolean compareEnums(EnumerationType et)
public boolean compareEnums(Vector<EnumElementDecl> enumVals)
public int getNumEnums()
public EnumElementDecl getEnum(int i)
public void visit(Predicate p)
Node
Each class has a visit(Predicate p)
method. For
example, in class ABC
:
public void visit(Predicate p) { p.visitABC(this); }and the class that implements
Predicate
has a method
public void visitABC(Node n) { ABC a = (ABC) n; ... }Thus, the class that implements
Predicate
can call
n.visit(this);where
n
is a Node
sub-class without
determining which specific sub-class n
is.
The visit pattern basically avoids implementing a large
switch
statement or defining different methods
in each class for some purpose.
visit
in class NumericType
Predicate
public void visit(TypePredicate p)
Type
Each type class has a visit(TypePredicate p)
method.
For example, in class ABC
:
public void visit(Predicate p) { p.visitABC(this); }and the class that implements
Predicate
has a method
public void visitABC(Node n) { ABC a = (ABC) n; ... }Thus, the class that implements
TypePredicate
can call
n.visit(this);where
n
is a Node
sub-class without
determining which specific sub-class n
is.
The visit pattern basically avoids implementing a large
switch
statement or defining different methods
in each class for some purpose.
visit
in class NumericType
TypePredicate
public Node getChild(int i)
getChild
in class Node
public int numChildren()
numChildren
in class Node
public boolean compareUnorderedEnumerators(EnumerationType t2, boolean name, boolean value)
t2
- is the other enumname
- is true if the enum names should be comparedvalue
- is true if the enum values should be comparedpublic boolean compareOrderedEnumerators(EnumerationType t2, boolean name, boolean value)
t2
- is the other enumname
- is true if the enum names should be comparedvalue
- is true if the enum values should be comparedpublic boolean equivalent(Type t)
equivalent
in class Type
public static java.util.Enumeration<EnumerationType> getTypes()
public int bitSize()
AtomicType
bitSize
in class AtomicType
public long memorySize(Machine machine)
memorySize
in class AtomicType
machine
- is the machine-specific data machine
public static void cleanup()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |