00001 #ifndef LoopIRInterface_hpp 00002 #define LoopIRInterface_hpp 00003 00004 #include <list> 00005 #include <OpenAnalysis/Utils/OA_ptr.hpp> 00006 #include <OpenAnalysis/Loop/LoopAbstraction.hpp> 00007 #include "AffineExprIRInterface.hpp" 00008 using namespace std; 00009 00010 namespace OA { 00011 namespace Loop { 00012 00014 class LoopIRInterface : public virtual IRHandlesIRInterface, 00015 public virtual AffineExpr::AffineExprIRInterface 00016 { 00017 public: 00018 LoopIRInterface() {} 00019 virtual ~LoopIRInterface() {} 00020 00021 virtual OA_ptr<list<OA_ptr<LoopAbstraction> > > 00022 gatherLoops(const ProcHandle &proc) = 0; 00023 00025 virtual StmtHandle findEnclosingLoop(const StmtHandle &stmt) = 0; 00026 00027 virtual OA_ptr<IRStmtIterator> getStmtIterator(ProcHandle h) = 0; 00028 virtual OA_ptr<MemRefHandleIterator> getAllMemRefs(StmtHandle stmt) = 0; 00029 virtual OA_ptr<MemRefExprIterator> 00030 getMemRefExprIterator(MemRefHandle h) = 0; 00031 }; 00032 00033 } } // end namespaces 00034 00035 #endif 00036
1.7.1