|
|||||||||
| 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.IntegerType
public abstract class IntegerType
The IntegerType class represents a primitive integer type.
$Id: IntegerType.java,v 1.62 2007-03-21 13:31:56 burrill Exp $
Copyright 2006 by the Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
Examples of integer types are C's short, int, and long types. The size of the type is specified as the minimum number of bits that are required to represent a value of that type.
| Field Summary | |
|---|---|
static boolean |
cCharsAreSigned
If true, the default for the C char
type is signed. |
| Constructor Summary | |
|---|---|
IntegerType(int bits)
|
|
| Method Summary | |
|---|---|
int |
bitSize()
Return the number of bits required to represent the type. |
boolean |
equivalent(Type t)
Return true if the types are equivalent. |
abstract Type |
getSignedType()
Return the equivalent signed type. |
boolean |
isIntegerType()
Return true if type represents an integer value. |
abstract java.lang.String |
mapTypeToCString()
Map a type to a C string. |
abstract java.lang.String |
mapTypeToF77String()
Map a type to a Fortran string. |
abstract long |
putValueInRange(long value)
Transform an integer value to be in a suitable range. |
IntegerType |
returnIntegerType()
Return if this is a IntegerType
return this. |
java.lang.String |
toStringShort()
|
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, memorySize, returnAtomicType |
| Methods inherited from class scale.clef.Node |
|---|
getChild, getDecl, getSourceLineNumber, numChildren, 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 |
| Field Detail |
|---|
public static boolean cCharsAreSigned
true, the default for the C char
type is signed. If false, the default for the C
char type is unsigned.
| Constructor Detail |
|---|
public IntegerType(int bits)
| Method Detail |
|---|
public java.lang.String toStringShort()
toStringShort in class Typepublic 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 abstract Type getSignedType()
getSignedType in class Typepublic abstract long putValueInRange(long value)
public abstract java.lang.String mapTypeToCString()
mapTypeToCString in class Typepublic abstract java.lang.String mapTypeToF77String()
mapTypeToF77String in class Typepublic final boolean isIntegerType()
isIntegerType in class Typepublic final IntegerType returnIntegerType()
Typethis is a IntegerType
return this. Otherwise, return null.
returnIntegerType in class Typepublic final int bitSize()
AtomicType
bitSize in class AtomicTypepublic final boolean equivalent(Type t)
equivalent in class Type
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||