|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object scale.common.Root scale.score.Note scale.score.expr.Expr scale.score.expr.TernaryExpr scale.score.expr.ConditionalExpr
public class ConditionalExpr
This class is used to represents some cases of the C conditional operator.
$Id: ConditionalExpr.java,v 1.15 2007-04-27 18:04:36 burrill Exp $
Copyright 2008 by the
Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
This class represents the C ?:
operator.
Note - the semantics of the ConditionalExp
r are not the same as the
ExpressionIfOp
. For ExpressionIfOp
,
one of the conditional expression will not be evaluated. For ConditionExpr
,
both expressions are evaluated.
Field Summary |
---|
Fields inherited from class scale.score.expr.Expr |
---|
fpReorder, SE_DOMAIN, SE_NONE, SE_OVERFLOW, SE_STATE |
Constructor Summary | |
---|---|
ConditionalExpr(Type type,
Expr predicate,
Expr trueExpr,
Expr falseExpr)
|
Method Summary | |
---|---|
Expr |
copy()
Perform a deep copy of the expression tree. |
static Expr |
create(Type type,
Expr predicate,
Expr trueExpr,
Expr falseExpr)
|
int |
executionCostEstimate()
Return a relative cost estimate for executing the expression. |
Literal |
getConstantValue()
Return the constant value of the expression. |
Literal |
getConstantValue(HashMap<Expr,Literal> cvMap)
Return the constant value of the expression. |
java.lang.String |
getDisplayLabel()
Return a String suitable for labeling this node in a graphical display. |
Expr |
getFalseExpr()
Return the false expression. |
Expr |
getTest()
Return the test expression. |
Expr |
getTrueExpr()
Return the true expression. |
boolean |
hasTrueFalseResult()
Return true if the result of the expression is either true (1) or false (0). |
void |
visit(Predicate p)
Process a node by calling its associated routine. |
Methods inherited from class scale.score.expr.TernaryExpr |
---|
containsDeclaration, dependsOnDeclaration, equivalent, getDeclList, getExprList, getLA, getLoadExprList, getMA, getOperand, getOperandArray, getRA, loopClean, numOperands, optimizationCandidate, pushOperands, recordRefs, removeRefs, removeUseDef, replaceDecl, setLA, setMA, setOperand, setRA, sideEffects, unlinkExpression, validate |
Methods inherited from class scale.score.Note |
---|
getChord, getEssentialUse, setAnnotationLevel, setReportLevel, toString |
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 ConditionalExpr(Type type, Expr predicate, Expr trueExpr, Expr falseExpr)
Method Detail |
---|
public static Expr create(Type type, Expr predicate, Expr trueExpr, Expr falseExpr)
public Expr copy()
Expr
copy
in class Expr
public final Expr getTest()
public final Expr getTrueExpr()
public final Expr getFalseExpr()
public void visit(Predicate p)
Note
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(Note n) { ABC a = (ABC) n; ... }Thus, the class that implements
Predicate
can call
n.visit(this);where
n
is a Note
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 Note
Predicate
public java.lang.String getDisplayLabel()
Expr
getDisplayLabel
in interface DisplayNode
getDisplayLabel
in class Expr
public int executionCostEstimate()
executionCostEstimate
in class Note
public Literal getConstantValue(HashMap<Expr,Literal> cvMap)
getConstantValue
in class Expr
Lattice
public Literal getConstantValue()
getConstantValue
in class Expr
Lattice
public boolean hasTrueFalseResult()
hasTrueFalseResult
in class Expr
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |