| 
 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectscale.common.Root
scale.clef.Node
scale.clef.type.Type
scale.clef.type.CompositeType
public abstract class CompositeType
This is the abstract class for types that are composed of multiple instances of other types such as arrays and structures.
$Id: CompositeType.java,v 1.29 2007-10-04 19:58:08 burrill Exp $
 Copyright 2007 by the
 Scale Compiler Group,
 Department of Computer Science
 University of Massachusetts,
 Amherst MA. 01003, USA
 All Rights Reserved.
| Constructor Summary | |
|---|---|
| CompositeType() | |
| Method Summary | |
|---|---|
|  boolean | isCompositeType()Return true if type represents a composite type. | 
|  CompositeType | returnCompositeType()Return if thisis aCompositeType, returnthis. | 
|  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 CompositeType()
| 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 TypePredicatepublic 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 TypeTypePredicatepublic boolean isCompositeType()
isCompositeType in class Typepublic final CompositeType returnCompositeType()
Typethis is a CompositeType, return this.  Otherwise, return
 null.
returnCompositeType in class Type| 
 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||