coins.ir.hir
クラス SwitchStmtImpl

java.lang.Object
  |
  +--coins.ir.hir.HIR_Impl
        |
        +--coins.ir.hir.StmtImpl
              |
              +--coins.ir.hir.SwitchStmtImpl
すべての実装インタフェース:
java.lang.Cloneable, HasStringObject, HIR, HIR0, IR, IR0, Stmt, SwitchStmt
直系の既知のサブクラス:
SwitchModify

public class SwitchStmtImpl
extends StmtImpl
implements SwitchStmt

switch statement class. (by S. Fukuda)


フィールドの概要
 Label defaultLabel
           
 Label endLabel
           
 
クラス 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
 
コンストラクタの概要
SwitchStmtImpl()
           
SwitchStmtImpl(HirRoot pHirRoot)
           
SwitchStmtImpl(HirRoot pHirRoot, Exp pSelectionExp, IrList pJumpList, Label pDefaultLabel, Stmt pBodyStmt, Label pEndLabel)
          SwitchStmtImpl SwitchStmt -> ( switchCode Exp @ // Case selection expression.
 
メソッドの概要
 void accept(HirVisitor pVisitor)
          accept Acceptor used in HIR visitor.
 java.lang.Object clone()
          clone Override Object.clone in HIR.
 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 getBodyStmt()
          Gget switch-body statement that contains case statements.
 Const getCaseConst(int index)
          Get the n-th (head is 0) case constant.
 int getCaseCount()
           
 Label getCaseLabel(int index)
          getCaseLabel Get n-th (head is 0) case label.
 LabelNode getCaseLabelNode(int index)
          getCaseLabelNode Get LabelNode of n-th (head is 0) case label.
 Label getDefaultLabel()
          Get default label
 LabelNode getDefaultLabelNode()
          Get default label node
 Label getEndLabel()
          Get break destination label (switch-end label) of this switch statement.
 Exp getSelectionExp()
          Get selection expression
 LabeledStmt getSwitchEndNode()
          Get the switch end node to where break statements jump.
 void setSelectionExp(Exp pSelectionExp)
          Set selection expression
 
クラス coins.ir.hir.StmtImpl から継承したメソッド
addNextStmt, addNextStmt, adjustMultiBlockFlag, adjustMultiBlockFlag, ancestorControlStmtOfConditionalExp, attachLabel, attachLabelAsFirstOne, backTraceLabeledStmt, 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
 

フィールドの詳細

defaultLabel

public Label defaultLabel

endLabel

public Label endLabel
コンストラクタの詳細

SwitchStmtImpl

public SwitchStmtImpl(HirRoot pHirRoot,
                      Exp pSelectionExp,
                      IrList pJumpList,
                      Label pDefaultLabel,
                      Stmt pBodyStmt,
                      Label pEndLabel)
SwitchStmtImpl SwitchStmt -> ( switchCode Exp @ // Case selection expression. JumpTable_ @ // List of constants and statement // labels. Stmt @ // Collection of statements to be // selected. LabelStmt_ @ ) // Indicates end of switch statement. JumpTable_ -> ( seqCode JumpList_ @ LabelNode @ ) // Default label. JumpList_ -> ( listCode List_of_SwitchCase @ ) // Corelate // Exp value and list of SwitchCase_ pairs. SwitchCase_ -> ( seqCode ConstNode @ // Corelate Exp value and LabelNode @ ) // switch statement label. child1: case selection expression child2: JumpTable of the form (seq jumpList LabelNode) where labelNode indicates default label, and jumpList is a list of const-label pairs (hirList (hirSeq constNode labelNode) ... ) child3: statement containing statements to be selected. child4: LabeledStmt indicating end of switch statement. If default statement does not appear (defaultLabel.getHIRposition() is null), then the defaultLabel is attached to the switch end statement (statement with endlabel).


SwitchStmtImpl

public SwitchStmtImpl()

SwitchStmtImpl

public SwitchStmtImpl(HirRoot pHirRoot)
メソッドの詳細

getSelectionExp

public Exp getSelectionExp()
インタフェース SwitchStmt の記述:
Get selection expression

定義:
インタフェース SwitchStmt 内の getSelectionExp
戻り値:
the selection expression.

setSelectionExp

public void setSelectionExp(Exp pSelectionExp)
インタフェース SwitchStmt の記述:
Set selection expression

定義:
インタフェース SwitchStmt 内の setSelectionExp
パラメータ:
pSelectionExp - Selection expression of this switch statement.

getCaseCount

public int getCaseCount()
定義:
インタフェース SwitchStmt 内の getCaseCount
戻り値:
the number of case branches of this switch.

getCaseConst

public Const getCaseConst(int index)
インタフェース SwitchStmt の記述:
Get the n-th (head is 0) case constant. If out of range , return null

定義:
インタフェース SwitchStmt 内の getCaseConst
戻り値:
the n-th case constant.

getCaseLabel

public Label getCaseLabel(int index)
インタフェース SwitchStmt の記述:
getCaseLabel Get n-th (head is 0) case label. If out of range , return null.

定義:
インタフェース SwitchStmt 内の getCaseLabel
戻り値:
the n-th case label.

getCaseLabelNode

public LabelNode getCaseLabelNode(int index)
インタフェース SwitchStmt の記述:
getCaseLabelNode Get LabelNode of n-th (head is 0) case label. If out of range , return null.

定義:
インタフェース SwitchStmt 内の getCaseLabelNode
戻り値:
the n-th case label node.

getDefaultLabel

public Label getDefaultLabel()
インタフェース SwitchStmt の記述:
Get default label

定義:
インタフェース SwitchStmt 内の getDefaultLabel
戻り値:
the default label

getDefaultLabelNode

public LabelNode getDefaultLabelNode()
インタフェース SwitchStmt の記述:
Get default label node

定義:
インタフェース SwitchStmt 内の getDefaultLabelNode
戻り値:
the default label node

getEndLabel

public Label getEndLabel()
インタフェース SwitchStmt の記述:
Get break destination label (switch-end label) of this switch statement.

定義:
インタフェース SwitchStmt 内の getEndLabel
戻り値:
the break destination label.

getBodyStmt

public Stmt getBodyStmt()
インタフェース SwitchStmt の記述:
Gget switch-body statement that contains case statements. (Usually, it is BlockStmt.)

定義:
インタフェース SwitchStmt 内の getBodyStmt
戻り値:
the body statement of this switch statement.

getSwitchEndNode

public LabeledStmt getSwitchEndNode()
インタフェース SwitchStmt の記述:
Get the switch end node to where break statements jump.

定義:
インタフェース SwitchStmt 内の getSwitchEndNode
戻り値:
the switch end node with switch-end label.

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.

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
クラス HIR_Impl の記述:
clone Override Object.clone in HIR.

オーバーライド:
クラス StmtImpl 内の clone
戻り値:
cloned HIR object.
例外:
java.lang.CloneNotSupportedException

accept

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

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