coins.ir.hir
Interface IfStmt

All Superinterfaces:
java.lang.Cloneable, HIR, HIR0, IR, IR0, Stmt
All Known Implementing Classes:
IfStmtImpl

public interface IfStmt
extends Stmt

If-statement.


Field Summary
 
Fields inherited from interface coins.ir.hir.HIR
OP_CODE_NAME, OP_CODE_NAME_DENSE
 
Fields inherited from interface coins.ir.IR
OP_INF, OP_LIST, OP_PROG, OP_SUBP_DEF
 
Fields inherited from interface coins.ir.hir.HIR0
FLAG_C_PTR, FLAG_CONST_EXP, FLAG_INIT_BLOCK, FLAG_LOOP_WITH_CONDITIONAL_INIT, FLAG_NOCHANGE, FLAG_NONTERMINAL, OP_ADD, OP_ADD_ASSIGN, OP_ADDR, OP_AND, OP_AND_ASSIGN, OP_ARROW, OP_ASM, OP_ASSIGN, OP_BLOCK, OP_CALL, OP_CMP_EQ, OP_CMP_GE, OP_CMP_GT, OP_CMP_LE, OP_CMP_LT, OP_CMP_NE, OP_COMMA, OP_CONST, OP_CONTENTS, OP_CONV, OP_DECAY, OP_DIV, OP_DIV_ASSIGN, OP_ELEM, OP_ENCLOSE, OP_EQ_ZERO, OP_EXP_STMT, OP_EXPLIST, OP_EXPREPEAT, OP_FOR, OP_IF, OP_INDEX, OP_INDEXED_LOOP, OP_JUMP, OP_LABEL, OP_LABEL_DEF, OP_LABELED_STMT, OP_LG_AND, OP_LG_OR, OP_MOD, OP_MOD_ASSIGN, OP_MULT, OP_MULT_ASSIGN, OP_NEG, OP_NOT, OP_NULL, OP_OFFSET, OP_OR, OP_OR_ASSIGN, OP_PARAM, OP_PHI, OP_POST_DECR, OP_POST_INCR, OP_PRE_DECR, OP_PRE_INCR, OP_QUAL, OP_REPEAT, OP_RETURN, OP_SELECT, OP_SEQ, OP_SETDATA, OP_SHIFT_L_ASSIGN, OP_SHIFT_LL, OP_SHIFT_R, OP_SHIFT_R_ASSIGN, OP_SHIFT_RL, OP_SIZEOF, OP_STMT, OP_STMT_UPPER, OP_SUB, OP_SUB_ASSIGN, OP_SUBP, OP_SUBS, OP_SWITCH, OP_SYM, OP_TYPE, OP_UNDECAY, OP_UNTIL, OP_VAR, OP_WHILE, OP_XOR, OP_XOR_ASSIGN
 
Method Summary
 void addToElsePart(Stmt pStmt, boolean pBeforeBranch)
          addToElsePart Add pStmt to the tail of else-part of this if-statement.
 void addToThenPart(Stmt pStmt, boolean pBeforeBranch)
          addToThenPart Add pStmt to the tail of then-part of this if-statement.
 LabeledStmt getElsePart()
          getElsePart Get the else-part of if-statement.
 Label getEndLabel()
          getEndLabel (##2) Get the end label of if-statement.
 Exp getIfCondition()
          getIfCondition Get the condition part of if-statement.
 LabeledStmt getThenPart()
          getThenPart Get the then-part of if-statement.
 void replaceElsePart(LabeledStmt pNewElsePart)
          replaceThenPart Replace the else-part of this if-statement by pNewElsePart.
 void replaceThenPart(LabeledStmt pNewThenPart)
          replaceThenPart Replace the then-part of this if-statement by pNewThenPart.
 void setIfCondition(Exp pCondition)
          setIfCondition Set the condition part of if-statement.
 
Methods inherited from interface coins.ir.hir.Stmt
addNextStmt, ancestorControlStmtOfConditionalExp, attachLabel, attachLabelAsFirstOne, combineStmt, combineWithConditionalExp, copyPosition, cutLabelLinkOfStmt, deleteThisStmt, getBlockStmt, getFileName, getLabel, getLabelDefList, getLabeledStmt, getLineNumber, getPreviousStmt, getUpperStmt, insertPreviousStmt, insertPreviousStmt, isBranchStmt, isMultiBlock, isolateThisStmt, replaceThisStmtWith, setFileName, setLineNumber
 
Methods inherited from interface coins.ir.hir.HIR
addrExp, asmStmt, checkLinkage, conditionalExp, contains, copyInfListFrom, cutParentLink, exp, expList, expRepeat, forStmt, getExpId, getFlowAnalSym, getIndentSpace, getInfString, getIrName, getSourceNode, getSourceNode1, getSourceNode2, getSymOrExpId, getWork, hirNodeClone, hirSeq, hirSeq, indexedLoopStmt, indexedLoopStmt, infStmt, infStmt, intConstNode, irList, isEmpty, isStmt, isTree, nullNode, nullStmt, offsetConstNode, phiExp, repeatStmt, replaceSource, replaceSource1, replaceSource2, returnStmt, setChild1, setChild2, setChildren, setChildren, setDataStmt, setIndex, setIndexNumberToAllNodes, setParent, setType, setWork, subpDefinition, subpIterator, subscriptedExp, toString, toStringDetail, toStringShort, toStringWithChildren, undecayExp, undecayExp, undecayExp, whileStmt
 
Methods inherited from interface coins.ir.IR
addInf, getChild1, getChild2, getInf, getInfList, getParent, getSym, print, print, removeInf
 
Methods inherited from interface coins.ir.IR0
getChild, getChildCount, getIndex, getOperator, setChild
 
Methods inherited from interface coins.ir.hir.HIR0
accept, assignStmt, blockStmt, callStmt, constNode, contentsExp, convExp, copyWithOperands, copyWithOperandsChangingLabels, decayExp, elemNode, exp, exp, expStmt, falseNode, finishHir, forStmt, functionExp, getChildNumber, getFlag, getFlagBox, getNextStmt, getStmtContainingThisNode, getType, hirClone, hirIterator, hirList, hirSeq, ifStmt, intConstNode, irList, isSameAs, jumpStmt, labelDef, labeledStmt, labelNode, pointedExp, print, program, qualifiedExp, repeatStmt, replaceThisNode, returnStmt, setFlag, setIndexNumberToAllNodes, sizeofExp, sizeofExp, subpDefinition, subpNode, subscriptedExp, switchStmt, symNode, trueNode, undecayExp, varNode, whileStmt
 

Method Detail

getIfCondition

public Exp getIfCondition()
getIfCondition Get the condition part of if-statement. "this" should be IfStmt statement built by ifStmt.

Returns:
the pCondition expression subtree if "this" is if-statement, otherwise return null.

setIfCondition

public void setIfCondition(Exp pCondition)
setIfCondition Set the condition part of if-statement. "this" should be IfStmt statement built by ifStmt.

Parameters:
pCondition - Condition expression to be set.

getThenPart

public LabeledStmt getThenPart()
getThenPart Get the then-part of if-statement. "this" should be IfStmt statement built by ifStmt.

Returns:
the pThenPart subtree if "this" is if-statement, otherwise return null.

getElsePart

public LabeledStmt getElsePart()
getElsePart Get the else-part of if-statement. "this" should be IfStmt statement built by ifStmt.

Returns:
the pElsePart subtree if "this" is if-statement, otherwise return null.

getEndLabel

public Label getEndLabel()
getEndLabel (##2) Get the end label of if-statement. The end label is a label indicating the end of if-statement. "this" should be IfStmt statement built by ifStmt.

Returns:
the end label of this if-statement.

addToThenPart

public void addToThenPart(Stmt pStmt,
                          boolean pBeforeBranch)
addToThenPart Add pStmt to the tail of then-part of this if-statement. If pBeforeBranch is true, the addition is made before a branch statement in the then-part if there is a branch. If then-part is a non-block statement, then it is changed to a block statement containing pStmt. The then-part should not be null.

Parameters:
pStmt - Statement to be added.
pBeforeBranch - true if addition before branch point.

addToElsePart

public void addToElsePart(Stmt pStmt,
                          boolean pBeforeBranch)
addToElsePart Add pStmt to the tail of else-part of this if-statement. If pBeforeBranch is true, the addition is made before a branch statement in the else-part if there is a branch. If else-part is a non-block statement, then it is changed to a block statement containing pStmt. The else-part should not be null.

Parameters:
pStmt - Statement to be added.
pBeforeBranch - true if addition before branch point.

replaceThenPart

public void replaceThenPart(LabeledStmt pNewThenPart)
replaceThenPart Replace the then-part of this if-statement by pNewThenPart. The label kind of the label in pNewThenPart is set to Label.THEN_LABEL.

Parameters:
pNewThenPart - Statement used for replacement.

replaceElsePart

public void replaceElsePart(LabeledStmt pNewElsePart)
replaceThenPart Replace the else-part of this if-statement by pNewElsePart. The label kind of the label in pNewElsePart is set to Label.ELSE_LABEL.

Parameters:
pNewElsePart - Statement used for replacement.