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
1.7.1