coins.ir.hir
Class AssignStmtImpl

java.lang.Object
  extended bycoins.ir.hir.HIR_Impl
      extended bycoins.ir.hir.StmtImpl
          extended bycoins.ir.hir.AssignStmtImpl
All Implemented Interfaces:
AssignStmt, java.lang.Cloneable, HasStringObject, HIR, HIR0, IR, IR0, Stmt

public class AssignStmtImpl
extends StmtImpl
implements AssignStmt

Assignment statement class.


Field Summary
 
Fields inherited from class coins.ir.hir.StmtImpl
fMultiBlock, fNextStmt, fPrevStmt
 
Fields inherited from class coins.ir.hir.HIR_Impl
fAdditionalChild, fChildCount, fChildNode1, fChildNode2, fDbgLevel, fHirAnnex, fOperator, fParentNode, fType, hirRoot, inversionTable, machineParam, sourceLanguage
 
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
 
Constructor Summary
AssignStmtImpl(HirRoot pHirRoot, Exp pLeftSide, Exp pRightSide)
           
 
Method Summary
 void accept(HirVisitor pVisitor)
          accept Acceptor used in HIR visitor.
 Exp getLeftSide()
          getLeftSide getRightSide These methods get a component of "this" assign statement.
 Exp getRightSide()
          getLeftSide getRightSide These methods get a component of "this" assign statement.
 void replaceResultOperand(IR pOperand)
          replaceResultOperand Replace result variable of "this" node by pOperand.
 void replaceResultVar(IR pOperand)
          replaceResultVar to be DELETED.
 HIR replaceSource(int pNumber, HIR pOperand)
           
 HIR replaceSource1(HIR pOperand)
          replaceSource1 Replace the source operand 1 of "this" node by pOperand.
 HIR replaceSource2(HIR pOperand)
          replaceSource2 Replace the source operand 2 of "this" node by pOperand.
 void setLeftSide(Exp pOperand)
           
 void setRightSide(Exp pOperand)
           
 
Methods inherited from class coins.ir.hir.StmtImpl
addNextStmt, addNextStmt, adjustMultiBlockFlag, adjustMultiBlockFlag, ancestorControlStmtOfConditionalExp, attachLabel, attachLabelAsFirstOne, backTraceLabeledStmt, clone, combineStmt, combineWithConditionalExp, 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
 
Methods inherited from class 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, 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
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
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, 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
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
 

Constructor Detail

AssignStmtImpl

public AssignStmtImpl(HirRoot pHirRoot,
                      Exp pLeftSide,
                      Exp pRightSide)
Method Detail

getLeftSide

public Exp getLeftSide()
getLeftSide getRightSide These methods get a component of "this" assign statement. (##2) If "this" is not an assignment statement, then they return null. "this" should be AssignStmt statement built by buildAssign. getLeftSide return the left hand side expression (pLeftSide). getRightSide return the right hand side expression (pRightSide).

Specified by:
getLeftSide in interface AssignStmt

getRightSide

public Exp getRightSide()
Description copied from interface: AssignStmt
getLeftSide getRightSide These methods get a component of "this" assign statement. (##2) If "this" is not an assignment statement, then they return null. "this" should be AssignStmt statement built by buildAssign. getLeftSide return the left hand side expression (pLeftSide). getRightSide return the right hand side expression (pRightSide).

Specified by:
getRightSide in interface AssignStmt

setLeftSide

public void setLeftSide(Exp pOperand)
Specified by:
setLeftSide in interface AssignStmt

setRightSide

public void setRightSide(Exp pOperand)
Specified by:
setRightSide in interface AssignStmt

replaceSource1

public HIR replaceSource1(HIR pOperand)
Description copied from interface: HIR
replaceSource1 Replace the source operand 1 of "this" node by pOperand. "this" should be a node that can have source operand 1, that is, nonleaf node if "this" is HIR node, etc.

Specified by:
replaceSource1 in interface HIR
Overrides:
replaceSource1 in class HIR_Impl

replaceSource2

public HIR replaceSource2(HIR pOperand)
Description copied from interface: HIR
replaceSource2 Replace the source operand 2 of "this" node by pOperand. Other matters and conditions are just like those of replaceSource1. "this" should be a node that can have source operand 2.

Specified by:
replaceSource2 in interface HIR
Overrides:
replaceSource2 in class HIR_Impl

replaceSource

public HIR replaceSource(int pNumber,
                         HIR pOperand)

replaceResultOperand

public void replaceResultOperand(IR pOperand)
replaceResultOperand Replace result variable of "this" node by pOperand. "this" should be a node that can have variable as its result operand, that is, "this" should be HIR assign node or LIR store node. If "this" is HIR assign node, its child 1 representing left hand side variable is replaced by pOperand. If "this" is LIR store node, the result variable is replaced by pOperand which may be a simple variable or a register or some other expression representing address of variable. (##2)

Parameters:
pOperand - node that takes place of result variable. If "this" is HIR node then it should be HIR node, if "this" is LIR node then it should be LIR node.

replaceResultVar

public void replaceResultVar(IR pOperand)
replaceResultVar to be DELETED. Use replaceResultOperand. Replace result variable of "this" node by pOperand. "this" should be a node that can have variable as its result operand, that is, "this" should be HIR assign node or LIR store node. If "this" is HIR assign node, its child 1 representing left hand side variable is replaced by pOperand. If "this" is LIR store node, the result variable is replaced by pOperand which may be a simple variable or a register or some other expression representing address of variable. (##2)

Parameters:
pOperand - node that takes place of result variable. If "this" is HIR node then it should be HIR node, if "this" is LIR node then it should be LIR node.

accept

public void accept(HirVisitor pVisitor)
Description copied from interface: HIR0
accept Acceptor used in HIR visitor. See HirVisitor, HirVisitorModel1, HirVisitormodel2.

Specified by:
accept in interface HIR0
Overrides:
accept in class HIR_Impl