scale.clef.expr
Class CallFunctionOp
java.lang.Object
scale.common.Root
scale.clef.Node
scale.clef.expr.Expression
scale.clef.expr.CallOp
scale.clef.expr.CallFunctionOp
- All Implemented Interfaces:
- AnnotationInterface, DisplayNode
public class CallFunctionOp
- extends CallOp
A class which represents a call to a function.
$Id: CallFunctionOp.java,v 1.27 2005-02-07 21:27:55 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 should be the the return type of the called function.
Method Summary |
void |
visit(Predicate p)
Process a node by calling its associated routine. |
Methods inherited from class scale.clef.expr.CallOp |
containsDeclaration, equivalent, getArg, getChild, getDeclList, getNumArgs, getProcedureInfo, getRoutine, isSimpleOp, numChildren, setArg, setArgList, setRoutine |
Methods inherited from class scale.clef.expr.Expression |
canonical, getConstantValue, getCoreType, getDisplayColorHint, getDisplayLabel, getDisplayShapeHint, getPointedToCore, getType, hasTrueFalseResult, setType, 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 |
CallFunctionOp
public CallFunctionOp(Type returnType,
Expression routine,
Vector<Expression> argList)
visit
public void visit(Predicate p)
- Description copied from class:
Node
- Process a node by calling its associated routine.
See the "visitor" design pattern in Design Patterns:
Elements of Reusable Object-Oriented Software by E. Gamma,
et al, Addison Wesley, ISBN 0-201-63361-2.
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.
- Overrides:
visit
in class CallOp
- See Also:
Predicate