* Bugfix: InstrucIter no longer used for int_function iteration.
[dyninst.git] / dyninstAPI / src / InstrucIter-Function.h
1 #if !defined(INSTRUC_ITER_FUNCTION_H)
2 #define INSTRUC_ITER_FUNCTION_H
3
4 #include "common/h/Types.h"
5 #include <vector>
6 #include "InstrucIter.h"
7
8
9 class image_func;
10 class int_function;
11
12 class InstrucIterFunction : public InstrucIter
13 {
14  public:
15   InstrucIterFunction(int_function* func);
16   InstrucIterFunction(Address start, int_function* func);
17   InstrucIterFunction(const InstrucIterFunction& ii);
18   
19   virtual ~InstrucIterFunction() {};
20   
21   virtual Address operator++();
22   virtual Address operator--();
23   virtual Address operator++(int);
24   virtual Address operator--(int);
25   virtual Address operator* () const;
26   virtual instruction getInstruction();
27   virtual instruction* getInsnPtr();
28   virtual bool hasMore();
29   virtual bool hasPrev();
30   virtual Address peekNext();
31   virtual Address peekPrev();
32   virtual void setCurrentAddress(Address a);
33   virtual Address getCurrentAddress();
34   
35  private:
36   typedef std::vector<InstrucIter> subIterContT;
37   subIterContT subIters;
38   subIterContT::iterator currentBlock;
39   void debugPrint() const;
40   
41   
42 };
43
44 #endif //!defined(INSTRUC_ITER_FUNCTION_H)