|
|||||||||
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.expr.Expression scale.clef.expr.HeapOp scale.clef.expr.AllocatePlacementOp
public class AllocatePlacementOp
This class represents a heap allocation operation that has a default value and a placement parameter.
$Id: AllocatePlacementOp.java,v 1.33 2007-08-28 17:58:20 burrill Exp $
Copyright 2008 by the
Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
The result type of the operation should be a pointer to the object type (ie., a pointer to type).
Constructor Summary | |
---|---|
AllocatePlacementOp(Type rt,
Type alloctype,
Expression defv,
Expression placement)
|
Method Summary | |
---|---|
boolean |
equivalent(java.lang.Object exp)
Return true if the two expressions are equivalent. |
Node |
getChild(int i)
Return the specified AST child of this node. |
void |
getDeclList(java.util.AbstractCollection<Declaration> varList)
Add all declarations referenced in this expression to the collection. |
Expression |
getExpr()
Return the default value. |
Expression |
getPlacement()
Return the placement expression. |
int |
numChildren()
Return the number of AST children of this node. |
protected void |
setExpr(Expression expr)
Specify the default value. |
protected void |
setPlacement(Expression placement)
Specify the placement expression. |
void |
visit(Predicate p)
Process a node by calling its associated routine. |
Methods inherited from class scale.clef.expr.HeapOp |
---|
getAllocType |
Methods inherited from class scale.clef.expr.Expression |
---|
canonical, containsDeclaration, getConstantValue, getCoreType, getDisplayColorHint, getDisplayLabel, getDisplayShapeHint, getPointedToCore, getType, hasTrueFalseResult, isSimpleOp, setType, toStringSpecial |
Methods inherited from class scale.clef.Node |
---|
getDecl, getSourceLineNumber, setAnnotationLevel, setReportLevel, setSourceLineNumber, toString, toString, toStringChildren |
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 AllocatePlacementOp(Type rt, Type alloctype, Expression defv, Expression placement)
rt
- is the type of the resultalloctype
- is the type of the allocated object, not the type of the resultdefv
- is the default valueplacement
- is the placement expressionMethod Detail |
---|
public boolean equivalent(java.lang.Object exp)
equivalent
in class HeapOp
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 HeapOp
Predicate
public final Expression getExpr()
public final Expression getPlacement()
protected final void setExpr(Expression expr)
protected final void setPlacement(Expression placement)
public Node getChild(int i)
getChild
in class Node
public int numChildren()
numChildren
in class Node
public void getDeclList(java.util.AbstractCollection<Declaration> varList)
Expression
getDeclList
in class Expression
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |