AliasIRInterface.hpp

Go to the documentation of this file.
00001 
00020 #ifndef AliasIRInterface_h
00021 #define AliasIRInterface_h
00022 
00023 #include <iostream>
00024 #include <string>
00025 #include <OpenAnalysis/Utils/OA_ptr.hpp>
00026 #include <OpenAnalysis/IRInterface/IRHandles.hpp>
00027 #include <OpenAnalysis/Location/Locations.hpp>
00028 #include <OpenAnalysis/MemRefExpr/MemRefExpr.hpp>
00029 
00030 namespace OA {
00031 
00033   namespace Alias {
00034 
00035 class PtrAssignPairStmtIterator {
00036   public:
00037     PtrAssignPairStmtIterator() {}
00038     virtual ~PtrAssignPairStmtIterator() {}
00039 
00041     virtual OA_ptr<MemRefExpr> currentSource() const = 0;
00043     virtual OA_ptr<MemRefExpr> currentTarget() const = 0;
00044 
00045     virtual bool isValid() const = 0;
00046                     
00047     virtual void operator++() = 0;
00048     void operator++(int) { ++*this; }
00049 };
00050 
00051 class ParamBindPtrAssignIterator {
00052   public:
00053     ParamBindPtrAssignIterator() {}
00054     virtual ~ParamBindPtrAssignIterator() {}
00055 
00057     virtual OA_ptr<MemRefExpr> currentActual() const = 0;
00059     virtual int currentFormalId() const = 0;
00060 
00061     virtual bool isValid() const = 0;
00062                     
00063     virtual void operator++() = 0;
00064     void operator++(int) { ++*this; }
00065 };
00066 
00071 class AliasIRInterface : public virtual IRHandlesIRInterface {
00072  public:
00073   AliasIRInterface() { }
00074   virtual ~AliasIRInterface() { }
00075  
00078   virtual OA_ptr<IRStmtIterator> getStmtIterator(ProcHandle h) = 0; 
00079   
00083   virtual OA_ptr<MemRefHandleIterator> getAllMemRefs(StmtHandle stmt) = 0;
00084   
00087   virtual OA_ptr<PtrAssignPairStmtIterator>
00088       getPtrAssignStmtPairIterator(StmtHandle stmt) = 0;
00089 
00093   virtual OA_ptr<ParamBindPtrAssignIterator>
00094       getParamBindPtrAssignIterator(CallHandle call) = 0;
00095 
00102   virtual SymHandle getFormalSym(ProcHandle,int) = 0;
00103 
00105   virtual OA_ptr<IRCallsiteIterator> getCallsites(StmtHandle h) = 0;
00106 
00110   virtual OA_ptr<MemRefExpr> getCallMemRefExpr(CallHandle h) = 0;
00111 
00113   virtual ProcHandle getProcHandle(SymHandle sym) = 0;
00114 
00116   virtual SymHandle getSymHandle(ProcHandle h) = 0;
00117   
00120   //virtual OA_ptr<IRSymIterator> getVisibleSymIterator(ProcHandle h) = 0; 
00121 
00125   //virtual OA_ptr<IRStmtIterator> getUnnamedDynAllocStmtIterator(ProcHandle h) = 0; 
00126 
00131   virtual OA_ptr<Location> getLocation(ProcHandle p, SymHandle s) = 0;
00132 
00135   virtual OA_ptr<MemRefExprIterator> 
00136       getMemRefExprIterator(MemRefHandle h) = 0;
00137 
00138 };  
00139 
00140   } // end of namespace Alias
00141 } // end of namespace OA
00142 
00143 #endif 

Generated on Sat Oct 31 05:21:20 2009 for OpenAnalysis by  doxygen 1.6.1