coins.ir.hir
Interface BlockStmt

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

public interface BlockStmt
extends Stmt

Block representing a sequence of statements.


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 addBeforeBranchStmt(Stmt pStatement)
          addBeforeBranchStmt (##6) If the last statement of this block is a branch statement (jump, if, switch, call, return), then insert pStatement in front of it.
 Stmt addFirstStmt(Stmt pStatement)
          addFirstStmt
 Stmt addLastStmt(Stmt pStatement)
          addLastStmt
 Stmt getFirstStmt()
          getFirstStrmt
 Stmt getLastStmt()
          getLastStmt Get the last statement of this block.
 boolean getSubpBodyFlag()
           
 SymTable getSymTable()
          getSymTable
 void setSubpBodyFlag(boolean pFlag)
           
 void setSymTable(SymTable pSymTable)
          setSymTable Set pSymTable as the local symbol tabel of this BlockStmt.
 
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

getSymTable

public SymTable getSymTable()
getSymTable

Returns:
the symbol table containing symbols locally declared in this BlockStmt. If there is no local symbols declared in this block, then the symbol table may be null.

setSymTable

public void setSymTable(SymTable pSymTable)
setSymTable Set pSymTable as the local symbol tabel of this BlockStmt.

Parameters:
pSymTable - local symbol tabel to be attached to this block.

addFirstStmt

public Stmt addFirstStmt(Stmt pStatement)
addFirstStmt
  Add pStatement as the first statement of this block.
  If this block has already has several statements, this method inserts
  pStatement in front of the existing statements.
  If pStatement is null, no statement is added and the current
  first statement is returned.
  This method  changes statement linkages (linkages
  get by getNextStmt(), getPreviousStmt(), getParent()). If these
  linkages are used later, then make a copy (by copyWithOperands())
  and use the copy as the parameter.

Parameters:
pStatement - Statement that was added.
Returns:
the new first statement of the block.

addLastStmt

public Stmt addLastStmt(Stmt pStatement)
addLastStmt
  Add pStatement as the last statement of this block.
  If this block has no statement, this method does the same
  operation as that of addFirstStmt.
  Successive call of addlastStmt add a sequence of statements
  to this block in the order of addition.
  If this block has already labeled statement as the last statement
  where the label of the last statement is either RETURN_POINT_LABEL
  or LOOP_STEP_LABEL, then pStatement is inserted in front of the
  last labeled statement.
  If pStatement is null, no statement is added and the current
  last statement is returned.
  This method  changes statement linkages (linkages
  get by getNextStmt(), getPreviousStmt(), getParent()). If these
  linkages are used later, then make a copy (by copyWithOperands())
  and use the copy as the parameter.

Parameters:
pStatement - Statement that was added.
Returns:
the new last statement of the block.

addBeforeBranchStmt

public void addBeforeBranchStmt(Stmt pStatement)
addBeforeBranchStmt (##6) If the last statement of this block is a branch statement (jump, if, switch, call, return), then insert pStatement in front of it. If the last statement is not a branch, then add pStatement as the last statement of this block. This method changes statement linkages (linkages get by getNextStmt(), getPreviousStmt(), getParent()). If these linkages are used later, then make a copy (by copyWithOperands()) and use the copy as the parameter.

Parameters:
pStatement - Statement that was added.

getFirstStmt

public Stmt getFirstStmt()
getFirstStrmt
  Get the first statement of this block.
  If this block has no statement, then null is returned.
  After getting the first statement, successive call of
  getNextStmt() will traverse all statements in this block.
    for (Stmt lStmt = lBBlock.getFirstStmt(); lStmt != null;
         lStmt = lStmt.getNextStmt()) { ...... }

Returns:
the first statement of this block.

getLastStmt

public Stmt getLastStmt()
getLastStmt Get the last statement of this block. If this block has no statement, then null is returned.

Returns:
the last statement of this block.

getSubpBodyFlag

public boolean getSubpBodyFlag()

setSubpBodyFlag

public void setSubpBodyFlag(boolean pFlag)