Loop/Interface.hpp

Go to the documentation of this file.
00001 
00012 #ifndef LoopInterface_H
00013 #define LoopInterface_H
00014 
00015 #include <OpenAnalysis/IRInterface/IRHandles.hpp>
00016 #include <OpenAnalysis/Utils/ListIterator.hpp>
00017 #include "LoopAbstraction.hpp"
00018 #include <list>
00019 using namespace std;
00020 
00021 
00022 namespace OA {
00023   namespace Loop {
00024 
00026 typedef ListIterator<OA_ptr<LoopAbstraction> > LoopIterator;
00027 
00029 class Interface {
00030   public:
00031     Interface() {}
00032     virtual ~Interface() {}
00033 
00034     //[Result builder]
00036     virtual void addLoop(OA_ptr<LoopAbstraction> l) = 0;
00037 
00038 
00039     //[Results queries]
00043     virtual OA_ptr<LoopAbstraction> getLoop(StmtHandle stmt) = 0;
00044 
00045 
00050     virtual OA_ptr<list<OA_ptr<LoopIndex> > >
00051         getIndexVars(OA_ptr<LoopAbstraction> loop) = 0;
00052 };
00053 
00054 } } // namespaces
00055 
00056 #endif
00057