|
|||||||||
| 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.stmt.Statement
scale.clef.stmt.MultiBranchStmt
public abstract class MultiBranchStmt
This is the base class for all multi-way branch statements.
$Id: MultiBranchStmt.java,v 1.29 2006-03-31 23:29:37 burrill Exp $
Copyright 2008 by the
Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
| Constructor Summary | |
|---|---|
MultiBranchStmt(Expression expr,
Vector<LabelDecl> labels)
|
|
| Method Summary | |
|---|---|
Node |
getChild(int i)
Return the specified AST child of this node. |
Expression |
getExpr()
|
LabelDecl |
getLabel(int i)
|
int |
numChildren()
Return the number of AST children of this node. |
int |
numLabels()
|
protected void |
setExpr(Expression expr)
|
protected void |
setLabels(Vector<LabelDecl> labels)
|
void |
visit(Predicate p)
Process a node by calling its associated routine. |
| Methods inherited from class scale.clef.stmt.Statement |
|---|
containsLoopStmt, dump, getDisplayColorHint, getDisplayLabel, getDisplayShapeHint, getPragma, getSourceLineNumber, hasReturnStmt, numTotalStmts, setPragma, setSourceLineNumber |
| Methods inherited from class scale.clef.Node |
|---|
getCoreType, getDecl, getType, setAnnotationLevel, setReportLevel, toString, 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 MultiBranchStmt(Expression expr,
Vector<LabelDecl> labels)
expr - is the selection valuelabels - is the set of statement labels.| 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 StatementPredicatepublic final Expression getExpr()
protected final void setExpr(Expression expr)
protected final void setLabels(Vector<LabelDecl> labels)
public final int numLabels()
public final LabelDecl getLabel(int i)
public Node getChild(int i)
getChild in class Nodepublic int numChildren()
numChildren in class Node
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||