coins.flow
Class BBlockStmtIterator

java.lang.Object
  extended bycoins.flow.BBlockStmtIterator
All Implemented Interfaces:
BBlockSubtreeIterator

public class BBlockStmtIterator
extends java.lang.Object
implements BBlockSubtreeIterator

BBlockStmtIterator traverses statements in the specified BBlock. IR tree should not be changed after instanciation of BBlockStmtIteratorImpl until all invocations of hasNext() and next() are finished.


Field Summary
(package private)  BBlockHirSubtreeIteratorImpl fSubtreeIterator
           
 
Constructor Summary
BBlockStmtIterator(BBlockHir pBBlock)
           
 
Method Summary
 boolean hasNext()
          hasNext
 IR next()
          next Get the next top subtree in the basic block indicated by this iterator.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

fSubtreeIterator

BBlockHirSubtreeIteratorImpl fSubtreeIterator
Constructor Detail

BBlockStmtIterator

public BBlockStmtIterator(BBlockHir pBBlock)
Method Detail

hasNext

public boolean hasNext()
Description copied from interface: BBlockSubtreeIterator
hasNext

Specified by:
hasNext in interface BBlockSubtreeIterator
Returns:
true if there remains thte next top subtree in the basic block.

next

public IR next()
Description copied from interface: BBlockSubtreeIterator
next Get the next top subtree in the basic block indicated by this iterator. If no one is left, return null. In HIR, statements other than LabeledStmt, AssignStmt, ExpStmt, ReturnStmt, IfStmt, LoopStmt, SwitchStmt //##65 are skipped because other statements does not set/refer data directly. (Other statements may set/refer data indirectly but such set/referes can be caught by above statements included in them. LabeledStmt is picked up to see BBlock boundary.) Expressions treated as top subtree in BBlockSubtreeIterator are conditional expressin in IfStmt, LoopStmt, case-selection expression in SwitchStmt, //##65 call-subtree in Exp. //##65 Conditional expression in IfStmt, LoopStmt The end of top subtree iteration should be checked not by null of next() but by hasNext() because there might be a case where the last top subtree is null (in such case as there remains a sequence of nodes but no top subtree is remaining).

Specified by:
next in interface BBlockSubtreeIterator