coins.ir.hir
クラス IfStmtImpl

java.lang.Object
  |
  +--coins.ir.hir.HIR_Impl
        |
        +--coins.ir.hir.StmtImpl
              |
              +--coins.ir.hir.IfStmtImpl
すべての実装インタフェース:
java.lang.Cloneable, HasStringObject, HIR, HIR0, IfStmt, IR, IR0, Stmt

public class IfStmtImpl
extends StmtImpl
implements IfStmt

If-statement class. If then-part is not given, NullNode with label is inserted. (2001/6)


フィールドの概要
 
クラス coins.ir.hir.StmtImpl から継承したフィールド
fMultiBlock, fNextStmt, fPrevStmt
 
クラス coins.ir.hir.HIR_Impl から継承したフィールド
fAdditionalChild, fChildCount, fChildNode1, fChildNode2, fDbgLevel, fHirAnnex, fOperator, fParentNode, fType, hirRoot, inversionTable, machineParam, sourceLanguage
 
インタフェース coins.ir.hir.HIR から継承したフィールド
OP_CODE_NAME, OP_CODE_NAME_DENSE
 
インタフェース coins.ir.IR から継承したフィールド
OP_INF, OP_LIST, OP_PROG, OP_SUBP_DEF
 
インタフェース 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
 
コンストラクタの概要
IfStmtImpl(HirRoot pHirRoot, Exp pCondition, Stmt pThenPart, Stmt pElsePart)
           
 
メソッドの概要
 void accept(HirVisitor pVisitor)
          accept Acceptor used in HIR visitor.
 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.
 void combineWithConditionalExp(Stmt pStmt, HIR pCond)
          Combine pStmt with conditional expression part pCond of control statement so that pStmt should be executed before pCond.
 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.
 
クラス coins.ir.hir.StmtImpl から継承したメソッド
addNextStmt, addNextStmt, adjustMultiBlockFlag, adjustMultiBlockFlag, ancestorControlStmtOfConditionalExp, attachLabel, attachLabelAsFirstOne, backTraceLabeledStmt, clone, combineStmt, copyPosition, cutLabelLinkOfStmt, deleteNextStmt, deletePreviousStmt, deleteThisStmt, getBlockStmt, getFileName, getLabel, getLabelDefList, getLabeledStmt, getLineNumber, getNextStmt, getPreviousStmt, getStmtWithLabel, getUpperStmt, insertPreviousStmt, insertPreviousStmt, isBranchStmt, isLoopStmt, isMultiBlock, isolateThisStmt, printLinkage, replaceThisStmtWith, setFileName, setLineNumber, toStringDetail, traceFirstStmt, traceLastStmt
 
クラス coins.ir.hir.HIR_Impl から継承したメソッド
addInf, addrExp, asmStmt, assignStmt, blockStmt, callStmt, checkLinkage, conditionalExp, conditionalExp1, constNode, contains, contentsExp, convExp, copyInfListFrom, copyWithOperands, copyWithOperandsChangingLabels, cutParentLink, cutParentLink, decayExp, elemNode, exp, exp, exp, expList, expRepeat, expStmt, falseNode, fatalError, finishHir, flagsAreAllFalse, forStmt, forStmt, functionExp, getChild, getChild1, getChild2, getChildCount, getChildNumber, getClone, getExpId, getFlag, getFlagBox, getFlowAnalSym, getIndentSpace, getIndex, getInf, getInfList, getInfString, getIrName, getNextNode, getNextNodeSeeingAncestor, getOperator, getParent, getResultOperand, getResultVar, getSourceNode, getSourceNode1, getSourceNode2, getStmtContainingThisNode, getSym, getSymOrExpId, getType, getWork, hirClone, hirIterator, hirList, hirNodeClone, hirSeq, hirSeq, hirSeq, ifStmt, indexedLoopStmt, indexedLoopStmt, infStmt, infStmt, intConstNode, intConstNode, irList, irList, isEmpty, isHIR, isLIR, isSameAs, isStmt, isSym, isTerminal, isTree, isTree, jumpStmt, labelDef, labeledStmt, labelNode, nullNode, nullStmt, offsetConstNode, phiExp, pointedExp, print, print, program, qualifiedExp, removeInf, repeatStmt, repeatStmt, replaceOperator, replaceResultOperand, replaceResultVar, replaceSource, replaceSource1, replaceSource2, replaceThisNode, returnStmt, returnStmt, setChild, setChild1, setChild2, setChildren, setChildren, setChildren, setChildren, setDataStmt, setFlag, setIndex, setIndexNumberToAllNodes, setIndexNumberToAllNodes, setIndexNumberToAllNodes2, setParameters, setParent, setType, setWork, severeError, sizeofExp, sizeofExp, slightError, subpDefinition, subpDefinition, subpDefinition, subpIterator, subpNode, subscriptedExp, subscriptedExp, switchStmt, symNode, toString, toStringShort, toStringWithChildren, trueNode, typeNode, undecayExp, undecayExp, undecayExp, undecayExp, varNode, warinig, whileStmt, whileStmt, withInf
 
クラス java.lang.Object から継承したメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
インタフェース coins.ir.hir.Stmt から継承したメソッド
addNextStmt, ancestorControlStmtOfConditionalExp, attachLabel, attachLabelAsFirstOne, combineStmt, copyPosition, cutLabelLinkOfStmt, deleteThisStmt, getBlockStmt, getFileName, getLabel, getLabelDefList, getLabeledStmt, getLineNumber, getPreviousStmt, getUpperStmt, insertPreviousStmt, insertPreviousStmt, isBranchStmt, isMultiBlock, isolateThisStmt, replaceThisStmtWith, setFileName, setLineNumber
 
インタフェース 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
 
インタフェース coins.ir.IR から継承したメソッド
addInf, getChild1, getChild2, getInf, getInfList, getParent, getSym, print, print, removeInf
 
インタフェース coins.ir.IR0 から継承したメソッド
getChild, getChildCount, getIndex, getOperator, setChild
 
インタフェース coins.ir.hir.HIR0 から継承したメソッド
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
 

コンストラクタの詳細

IfStmtImpl

public IfStmtImpl(HirRoot pHirRoot,
                  Exp pCondition,
                  Stmt pThenPart,
                  Stmt pElsePart)
メソッドの詳細

getIfCondition

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

定義:
インタフェース IfStmt 内の getIfCondition
戻り値:
the pCondition expression subtree if "this" is if-statement, otherwise return null.

setIfCondition

public void setIfCondition(Exp pCondition)
インタフェース IfStmt の記述:
setIfCondition Set the condition part of if-statement. "this" should be IfStmt statement built by ifStmt.

定義:
インタフェース IfStmt 内の setIfCondition
パラメータ:
pCondition - Condition expression to be set.

getThenPart

public LabeledStmt getThenPart()
インタフェース IfStmt の記述:
getThenPart Get the then-part of if-statement. "this" should be IfStmt statement built by ifStmt.

定義:
インタフェース IfStmt 内の getThenPart
戻り値:
the pThenPart subtree if "this" is if-statement, otherwise return null.

getElsePart

public LabeledStmt getElsePart()
インタフェース IfStmt の記述:
getElsePart Get the else-part of if-statement. "this" should be IfStmt statement built by ifStmt.

定義:
インタフェース IfStmt 内の getElsePart
戻り値:
the pElsePart subtree if "this" is if-statement, otherwise return null.

getEndLabel

public Label getEndLabel()
インタフェース IfStmt の記述:
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.

定義:
インタフェース IfStmt 内の getEndLabel
戻り値:
the end label of this if-statement.

addToThenPart

public void addToThenPart(Stmt pStmt,
                          boolean pBeforeBranch)
インタフェース IfStmt の記述:
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.

定義:
インタフェース IfStmt 内の addToThenPart
パラメータ:
pStmt - Statement to be added.
pBeforeBranch - true if addition before branch point.

addToElsePart

public void addToElsePart(Stmt pStmt,
                          boolean pBeforeBranch)
インタフェース IfStmt の記述:
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.

定義:
インタフェース IfStmt 内の addToElsePart
パラメータ:
pStmt - Statement to be added.
pBeforeBranch - true if addition before branch point.

replaceThenPart

public void replaceThenPart(LabeledStmt pNewThenPart)
インタフェース IfStmt の記述:
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.

定義:
インタフェース IfStmt 内の replaceThenPart
パラメータ:
pNewThenPart - Statement used for replacement.

replaceElsePart

public void replaceElsePart(LabeledStmt pNewElsePart)
インタフェース IfStmt の記述:
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.

定義:
インタフェース IfStmt 内の replaceElsePart
パラメータ:
pNewElsePart - Statement used for replacement.

combineWithConditionalExp

public void combineWithConditionalExp(Stmt pStmt,
                                      HIR pCond)
Combine pStmt with conditional expression part pCond of control statement so that pStmt should be executed before pCond.

定義:
インタフェース Stmt 内の combineWithConditionalExp
オーバーライド:
クラス StmtImpl 内の combineWithConditionalExp
パラメータ:
pStmt - statement to be executed before pCond.
pCond - conditional expression to be combined with pStmt.

accept

public void accept(HirVisitor pVisitor)
インタフェース HIR0 の記述:
accept Acceptor used in HIR visitor. See HirVisitor, HirVisitorModel1, HirVisitormodel2.

定義:
インタフェース HIR0 内の accept
オーバーライド:
クラス HIR_Impl 内の accept
パラメータ:
pVisitor - HirVisitor