AliasTagInterface.hpp

Go to the documentation of this file.
00001 
00014 #ifndef AliasTagInterface_H
00015 #define AliasTagInterface_H
00016 
00017 #include <OpenAnalysis/Utils/OA_ptr.hpp>
00018 #include <OpenAnalysis/IRInterface/IRHandles.hpp>
00019 #include <OpenAnalysis/MemRefExpr/MemRefExpr.hpp>
00020 #include <OpenAnalysis/Alias/AliasTag.hpp>
00021 
00022 namespace OA {
00023   namespace AliasTag {
00024 
00025      
00026 typedef enum {
00027     NOALIAS,     
00028     MAYALIAS,  
00029     MUSTALIAS   
00030 } AliasResultType;
00031 
00033 class AliasTagIterator {
00034 public:
00035   AliasTagIterator() { }
00036   virtual ~AliasTagIterator() { }
00037 
00038   virtual AliasTag current() = 0;  // Returns the current item.
00039   virtual bool isValid() = 0;        // False when all items are exhausted.
00040         
00041   virtual void operator++() = 0;
00042   void operator++(int) { ++*this; } ;
00043 
00044   virtual void reset() = 0;
00045 };
00046 
00047 
00048 class AliasTagInterface {
00049   public:
00050     AliasTagInterface() {}
00051     virtual ~AliasTagInterface() {};
00052 
00054     virtual AliasResultType alias(MemRefHandle ref1, 
00055                                   MemRefHandle ref2) = 0;
00056        
00059     
00060     //virtual OA_ptr<TagIterator> getAliasTags( OA_ptr<MemRefExpr> mre, 
00061     //                    CallContext context, SymHandle stmt ) = 0;
00062     
00063     virtual OA_ptr<AliasTagIterator> getAliasTags( OA_ptr<MemRefExpr> mre )=0;
00064 
00065     //virtual OA_ptr<TagIterator> getAliasTags( MemRefHandle memref,
00066     //                    CallContext context, SymHandle stmt ) = 0;
00067                 
00068     virtual OA_ptr<AliasTagIterator> getAliasTags( MemRefHandle memref )=0;
00069 
00072     //FIXME: will need to uncomment at some point, MMS 12/16/07
00073     // virtual OA_ptr<MemRefExprIterator> getMemRefExprIterator(AliasTag tag)=0;
00074    
00077     // FIXME: MMS 12/16/07, is this used anymore?
00078     //virtual OA_ptr<MemRefIterator> getMemRefIter() = 0;
00079 
00080 };
00081 
00082 //typedef MemRefHandleIterator MemRefIterator;
00083 
00084   } // end of Alias namespace
00085 } // end of OA namespace
00086 
00087 #endif
00088 

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