|
|||||||||
| 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.ComplexType
public class ComplexType
This class represents the complex type with a real and an imaginary part.
$Id: ComplexType.java,v 1.51 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 |
alignment(Machine machine)
Calculate the alignment needed for this data type. |
int |
bitSize()
Return the number of bits required to represent the type. |
static void |
cleanup()
Remove static lists of types. |
static ComplexType |
create(int realMinbitSize,
int imaginaryMinbitSize)
Re-use an existing instance of a particular complex type. |
boolean |
equivalent(Type t)
Return true if the types are equivalent. |
int |
getImaginaryMinbitSize()
Return the minimum number of bits allowed for the imaginary part. |
RealType |
getImaginaryType()
Return the real type for the real part of the complex value. |
int |
getRealMinbitSize()
Return the minimum number of bits allowed for the real part. |
RealType |
getRealType()
Return the real type for the real part of the complex value. |
static java.util.Enumeration<ComplexType> |
getTypes()
Return an enumeration of all the different types. |
boolean |
isComplexType()
Return true if type represents a complex value. |
boolean |
isRealType()
Return true if type represents a floating point value. |
java.lang.String |
mapTypeToCString()
Map a type to a C string. |
java.lang.String |
mapTypeToF77String()
Map a type to a Fortran string. |
long |
memorySize(Machine machine)
Calculate how many addressable memory units are needed to represent the type. |
ComplexType |
returnComplexType()
Return if this is a ComplexType
return this. |
java.lang.String |
toString()
|
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 |
|---|
isAtomicType, 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 |
| Method Detail |
|---|
public static ComplexType create(int realMinbitSize,
int imaginaryMinbitSize)
realMinbitSize - is the minimum number of bits for the real
partimaginaryMinbitSize - is the minimum number of bits for the
imaginary partpublic final int getRealMinbitSize()
public final int getImaginaryMinbitSize()
public RealType getRealType()
public RealType getImaginaryType()
public int bitSize()
AtomicType
bitSize in class AtomicTypepublic long memorySize(Machine machine)
memorySize in class AtomicTypemachine - is the machine-specific data machine
public int alignment(Machine machine)
alignment in class AtomicTypepublic boolean isRealType()
isRealType in class Typepublic final ComplexType returnComplexType()
Typethis is a ComplexType
return this. Otherwise, return null.
returnComplexType in class Typepublic boolean isComplexType()
isComplexType in class Typepublic java.lang.String toString()
toString 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 boolean equivalent(Type t)
equivalent in class Typepublic static java.util.Enumeration<ComplexType> getTypes()
public java.lang.String mapTypeToCString()
mapTypeToCString in class Typepublic java.lang.String mapTypeToF77String()
mapTypeToF77String in class Typepublic static void cleanup()
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||