|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectscale.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 Typepublic final EnumerationType returnEnumerationType()
Typethis is a EnumerationType, return this. Otherwise, return
null.
returnEnumerationType in class Typepublic 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 NumericTypePredicatepublic 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 NumericTypeTypePredicatepublic Node getChild(int i)
getChild in class Nodepublic 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 compared
public 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 Typepublic static java.util.Enumeration<EnumerationType> getTypes()
public int bitSize()
AtomicType
bitSize in class AtomicTypepublic long memorySize(Machine machine)
memorySize in class AtomicTypemachine - 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 | ||||||||