|
|||||||||
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
public abstract class AtomicType
This class represents types directly supported by (most) hardware (e.g., integers, reals, and pointers).
$Id: AtomicType.java,v 1.30 2007-03-21 13:31:55 burrill Exp $
Copyright 2006 by the Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
It is assumed that a variable of atomic type can be placed in one or two registers.
Constructor Summary | |
---|---|
AtomicType()
|
Method Summary | |
---|---|
int |
alignment(Machine machine)
Calculate the alignment needed for this data type. |
abstract int |
bitSize()
Return the number of bits required to represent the type. |
boolean |
isAtomicType()
Return true if type represents a scaler value. |
long |
memorySize(Machine machine)
Calculate how many addressable memory units are needed to represent the type. |
AtomicType |
returnAtomicType()
Return if this is a AtomicType
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.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 |
Constructor Detail |
---|
public AtomicType()
Method Detail |
---|
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 Type
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 Type
TypePredicate
public boolean isAtomicType()
isAtomicType
in class Type
public final AtomicType returnAtomicType()
Type
this
is a AtomicType
return this
. Otherwise, return null
.
returnAtomicType
in class Type
public long memorySize(Machine machine)
memorySize
in class Type
machine
- is the machine-specific data machine
public int alignment(Machine machine)
alignment
in class Type
public abstract int bitSize()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |