coins.ir.hir
Class ExpListExpImpl

java.lang.Object
  extended bycoins.ir.hir.HIR_Impl
      extended bycoins.ir.hir.ExpImpl
          extended bycoins.ir.hir.ExpListExpImpl
All Implemented Interfaces:
java.lang.Cloneable, Exp, ExpListExp, HasStringObject, HIR, HIR0, HirList, IR, IR0, IrList

public class ExpListExpImpl
extends ExpImpl
implements ExpListExp

ExpListExpImpl Expression representing a list of expressions (Exp). Its operator is OP_EXPLIST. This is used to represent a list of initial values. The element of the list may be a repetition specification that specifies repetition count (as child 1) and elements to be repeated (as child 2).


Field Summary
(package private)  java.util.LinkedList values
           
 
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
ExpListExpImpl(HirRoot pHirRoot, java.util.List list)
           
 
Method Summary
 void add(int pInsertionPosition, java.lang.Object pObjectToBeInserted)
           
 void add(java.lang.Object pElement)
           Specifications of following methods are the same to those of List in java.util.
 void clear()
           
 java.lang.Object clone()
          clone Override Object.clone in HIR.
 boolean contains(java.lang.Object pObject)
           
 java.lang.Object get(int pIndex)
           
 Exp getExp(int index)
          getExp Get the i-th element of the expression list, where i is given by the parameter pIndex.
 java.lang.Object getFirst()
           
 Exp getWithRepeat(int index)
          getWithRepeat
 HirList hirListClone()
          hirListClone Make the clone of this node to get a clone in the situation where clone() can not be used directly.
 int indexOf(java.lang.Object pObject)
           
 boolean isEmpty()
           
 java.util.ListIterator iterator()
          Make iterator to traverse all elements of the list.
 int length()
          length
 void print(int indent)
          Print the list enclosing the string images of all elements by parenthesis.
 void print(int indent, boolean detail)
          Print the list enclosing the detailed string images of all elements by parenthesis.
 java.lang.Object remove(int pRemovePosition)
           
 boolean remove(java.lang.Object pObject)
           
 void set(int pIndex, java.lang.Object pElement)
           
 void setExp(int index, Exp exp)
          set Set pExp as pIndex-th element of the expression list.
 int size()
          size
 java.lang.String toStringWithChildren()
          toStringWithChildren Get the string of this node and its children traversing the children in depth-first order.
 
Methods inherited from class coins.ir.hir.ExpImpl
accept, adjustTypesOfBinaryOperands, evaluate, evaluateAsDouble, evaluateAsFloat, evaluateAsInt, evaluateAsLong, findSubpType, fold, getActualParamList, getArrayExp, getConstSym, getElem, getElemSizeExp, getExp1, getExp2, getLabel, getPointedElem, getPointerExp, getQualifiedElem, getQualifierExp, getSubp, getSubpSpec, getSubscriptExp, getSym, getValueString, getVar, initiateArray, isEvaluable, isLValue
 
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, getNextStmt, getOperator, getParent, getResultOperand, getResultVar, getSourceNode, getSourceNode1, getSourceNode2, getStmtContainingThisNode, 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, 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, toStringDetail, toStringShort, 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.ExpListExp
toString
 
Methods inherited from interface coins.ir.hir.Exp
adjustTypesOfBinaryOperands, evaluate, evaluateAsDouble, evaluateAsFloat, evaluateAsInt, evaluateAsLong, findSubpType, fold, getActualParamList, getArrayExp, getConstSym, getElem, getElemSizeExp, getExp1, getExp2, getLabel, getPointedElem, getPointerExp, getQualifiedElem, getQualifierExp, getSubp, getSubpSpec, getSubscriptExp, getValueString, getVar, initiateArray, isEvaluable
 
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, toStringDetail, toStringShort, undecayExp, undecayExp, undecayExp, whileStmt
 
Methods inherited from interface coins.ir.IR
addInf, getChild1, getChild2, getInf, getInfList, getParent, getSym, 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, program, qualifiedExp, repeatStmt, replaceThisNode, returnStmt, setFlag, setIndexNumberToAllNodes, sizeofExp, sizeofExp, subpDefinition, subpNode, subscriptedExp, switchStmt, symNode, trueNode, undecayExp, varNode, whileStmt
 
Methods inherited from interface coins.ir.IrList
getClone, toStringShort
 

Field Detail

values

java.util.LinkedList values
Constructor Detail

ExpListExpImpl

public ExpListExpImpl(HirRoot pHirRoot,
                      java.util.List list)
Method Detail

size

public int size()
Description copied from interface: ExpListExp
size

Specified by:
size in interface ExpListExp
Returns:
the size (number of elements) of the expression list.

length

public int length()
Description copied from interface: ExpListExp
length

Specified by:
length in interface ExpListExp
Returns:
the length (number of elements) of the expression list.

getExp

public Exp getExp(int index)
Description copied from interface: ExpListExp
getExp Get the i-th element of the expression list, where i is given by the parameter pIndex. If there is no i-th element, return null.

Specified by:
getExp in interface ExpListExp
Parameters:
index - element index number.
Returns:
the pIndex-th element of the expression list.

getWithRepeat

public Exp getWithRepeat(int index)
Description copied from interface: ExpListExp
getWithRepeat
 Get the i-th final element of the expression list assuming as if
 the nest of list is expanded, where i is given by the parameter
 pIndex.
 If the i-th element is (exprepeatCode n elem), then
 elem is assumed to be repeated n-times and its first one
 is treated as the i-th element.
 If there is no i-th element, return null.
 The end of list may be detected by encountering null
 as the return value of getWithRepeat method.
 Example
   Given list:
     (OP_EXPLIST c1 c2 (OP_EXPREPEAT c3 c4) c5)
   Sequence of Exp to be get by getWithRepeat:
     c1 c2 c4 c4 c4 c5
   where, each of c1, c2, c3, c4, c5 represents constant expression
   whose value is 1, 2, 3, 4, 5 respectively.

Specified by:
getWithRepeat in interface ExpListExp
Parameters:
index - index number corresponding to the element to be returned.
Returns:
the pIndex-th element of the expression list; if there is no pIndex-th element, then return null.

setExp

public void setExp(int index,
                   Exp exp)
Description copied from interface: ExpListExp
set Set pExp as pIndex-th element of the expression list. If there is no pIndex-th element in the list, then do nothing.

Specified by:
setExp in interface ExpListExp
Parameters:
index - index number corresponding to the element to be set.
exp - element to be set.

set

public void set(int pIndex,
                java.lang.Object pElement)
Specified by:
set in interface HirList

add

public void add(java.lang.Object pElement)
Description copied from interface: HirList
 Specifications of following methods are the same
  to those of List in java.util.
    add
    isEmpty
    size
    contains
    indexOf
    remove
    listIterator

Specified by:
add in interface HirList

add

public void add(int pInsertionPosition,
                java.lang.Object pObjectToBeInserted)
Specified by:
add in interface HirList

getFirst

public java.lang.Object getFirst()
Specified by:
getFirst in interface HirList

get

public java.lang.Object get(int pIndex)
Specified by:
get in interface HirList

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface HirList

contains

public boolean contains(java.lang.Object pObject)
Specified by:
contains in interface HirList

indexOf

public int indexOf(java.lang.Object pObject)
Specified by:
indexOf in interface HirList

remove

public java.lang.Object remove(int pRemovePosition)
Specified by:
remove in interface HirList

remove

public boolean remove(java.lang.Object pObject)
Specified by:
remove in interface HirList

clear

public void clear()
Specified by:
clear in interface IrList

iterator

public java.util.ListIterator iterator()
Description copied from interface: ExpListExp
Make iterator to traverse all elements of the list.

Specified by:
iterator in interface ExpListExp
Returns:
the iterator.

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Description copied from class: HIR_Impl
clone Override Object.clone in HIR.

Overrides:
clone in class HIR_Impl
Returns:
cloned HIR object.
Throws:
java.lang.CloneNotSupportedException

hirListClone

public HirList hirListClone()
                     throws java.lang.CloneNotSupportedException
Description copied from interface: HirList
hirListClone Make the clone of this node to get a clone in the situation where clone() can not be used directly.

Specified by:
hirListClone in interface HirList
Returns:
the clone of this node.
Throws:
java.lang.CloneNotSupportedException

print

public void print(int indent)
Description copied from interface: ExpListExp
Print the list enclosing the string images of all elements by parenthesis. The start column is indicated by pIndent.

Specified by:
print in interface ExpListExp
Overrides:
print in class HIR_Impl

print

public void print(int indent,
                  boolean detail)
Description copied from interface: ExpListExp
Print the list enclosing the detailed string images of all elements by parenthesis. The start column is indicated by pIndent.

Specified by:
print in interface ExpListExp
Overrides:
print in class HIR_Impl

toStringWithChildren

public java.lang.String toStringWithChildren()
Description copied from interface: HIR
toStringWithChildren Get the string of this node and its children traversing the children in depth-first order. The result is shown in compact form.

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