scale.clef.expr
Class SelectOp
java.lang.Object
   scale.common.Root
scale.common.Root
       scale.clef.Node
scale.clef.Node
           scale.clef.expr.Expression
scale.clef.expr.Expression
               scale.clef.expr.MonadicOp
scale.clef.expr.MonadicOp
                   scale.clef.expr.AggregateOp
scale.clef.expr.AggregateOp
                       scale.clef.expr.SelectOp
scale.clef.expr.SelectOp
- All Implemented Interfaces: 
- AnnotationInterface, DisplayNode
- public class SelectOp 
- extends AggregateOp
A class which represents value of the "." and "->"
 operators in C.
 
 $Id: SelectOp.java,v 1.29 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 value of the operation.  The
 right argument is the address of the structure and the left
 argument is the field.
 
| Method Summary | 
|  void | visit(Predicate p)Process a node by calling its associated routine.
 | 
 
 
 
| 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 | 
 
SelectOp
public SelectOp(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, inclass ABC:
 
   public void visit(Predicate p)
   {
     p.visitABC(this);
   }
 and the class that implementsPredicatehas a method
   public void visitABC(Node n)
   {
     ABC a = (ABC) n;
     ...
   }
 Thus, the class that implementsPredicatecan call
   n.visit(this);
  wherenis aNodesub-class without
 determining which specific sub-classnis.
 The visit pattern basically avoids implementing a largeswitchstatement or defining different methods
 in each class for some purpose.
 
- 
- Overrides:
- visitin class- AggregateOp
 
- 
- See Also:
- Predicate