scale.clef.expr
Class SelectIndirectOp
java.lang.Object
scale.common.Root
scale.clef.Node
scale.clef.expr.Expression
scale.clef.expr.MonadicOp
scale.clef.expr.AggregateOp
scale.clef.expr.SelectIndirectOp
- All Implemented Interfaces:
- AnnotationInterface, DisplayNode
public class SelectIndirectOp
- extends AggregateOp
A class which represents the address of the value of the "." and
"->" operators in C.
$Id: SelectIndirectOp.java,v 1.32 2007-06-05 14:15:24 burrill Exp $
Copyright 2007 by the Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
The selection operation represents the address of the value of the
operation. The right argument is the address of the structure and
the left argument is the field.
| 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 |
SelectIndirectOp
public SelectIndirectOp(Expression struct,
FieldDecl fd)
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 AggregateOp
- See Also:
Predicate
getConstantValue
public Literal getConstantValue()
- Return the constant value of the expression.
- Overrides:
getConstantValue in class Expression
- See Also:
Lattice