View Javadoc

1   /*
2    * Created on Dec 4, 2003
3    *
4    * Define some typed iterators.
5    */
6   package joeq.Compiler.Analysis.IPSSA;
7   
8   import java.util.Iterator;
9   import jwutil.collections.UnmodifiableIterator;
10  
11  /***
12   * @author V.Benjamin Livshits
13   * @version $Id: SSAIterator.java 1931 2004-09-22 22:17:47Z joewhaley $
14   */
15  public class SSAIterator {
16      public static class DefinitionIterator extends UnmodifiableIterator {
17          private Iterator _iter;
18          
19          public DefinitionIterator(Iterator iter) {
20              this._iter = iter;
21          }
22          
23          public boolean hasNext() {
24              return _iter.hasNext();
25          }
26      
27          public Object next() {
28              return _iter.next();
29          }
30          
31          public SSADefinition nextDefinition() {
32              return (SSADefinition) _iter.next();
33          }
34      }
35      
36      public static class ValueIterator extends UnmodifiableIterator {
37          private Iterator _iter;
38          
39          public ValueIterator(Iterator iter) {
40              this._iter = iter;
41          }
42          
43          public boolean hasNext() {
44              return _iter.hasNext();
45          }
46      
47          public Object next() {
48              return _iter.next();
49          }
50          
51          public SSAValue nextValue() {
52              return (SSAValue) _iter.next();
53          }
54      }
55      
56      public static class BindingIterator extends UnmodifiableIterator {
57          private Iterator _iter;
58      
59          public BindingIterator(Iterator iter) {
60              this._iter = iter;
61          }
62      
63          public boolean hasNext() {
64              return _iter.hasNext();
65          }
66  
67          public Object next() {
68              return _iter.next();
69          }
70      
71          public SSABinding nextBinding() {
72              return (SSABinding) _iter.next();
73          }
74      }
75  }