InvisibleLoc.hpp

Go to the documentation of this file.
00001 
00015 #ifndef InvisibleLoc_H
00016 #define InvisibleLoc_H
00017 
00018 #include "Location.hpp"
00019 #include <OpenAnalysis/MemRefExpr/MemRefExpr.hpp>
00020 #include <OpenAnalysis/MemRefExpr/MemRefExprVisitor.hpp>
00021 
00022 namespace OA {
00023 
00028 class InvisibleLoc : public Location {
00029   public:
00030     InvisibleLoc(OA_ptr<MemRefExpr> mre) : mMRE(mre) { }
00031 
00033     InvisibleLoc(InvisibleLoc &other);
00034 
00035     ~InvisibleLoc() { }
00036 
00037     void acceptVisitor(LocationVisitor& pVisitor);
00038 
00039     //*****************************************************************
00040     // Subclass type methods 
00041     //*****************************************************************
00042     bool isaInvisible() { return true; }
00043 
00044     //*****************************************************************
00045     // Info methods 
00046     //*****************************************************************
00049     OA_ptr<Location> getBaseLoc(); 
00050 
00051     bool isLocal() { return false; }
00052     bool isUnique() { return false; } // actually unknown
00053 
00054     /* PLM 1/23/07 deprecated hasFullAccuracy
00055     bool hasFullAccuracy() { return mMRE->hasFullAccuracy(); }
00056     */
00057 
00058     OA_ptr<MemRefExpr> getMemRefExpr() { return mMRE; }
00059     SymHandle getBaseSym();
00060     
00061     //*****************************************************************
00062     // Relationship methods 
00063     //*****************************************************************
00064     bool operator<(Location & other);
00065     bool operator==(Location& other);
00066 
00067     bool mayOverlap(Location& other);
00068 
00069     bool mustOverlap(Location& other);
00070 
00071     bool subSetOf(Location& other);
00072 
00073     //*****************************************************************
00074     // Annotation Interface
00075     //*****************************************************************
00076     void output(IRHandlesIRInterface& ir);
00077 
00078     //*****************************************************************
00079     // Debugging
00080     //*****************************************************************
00081     void dump(std::ostream& os);
00082     void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> pIR);
00083 
00084     std::string toString(OA_ptr<IRHandlesIRInterface> pIR);
00085 
00086     virtual int getOrder() { return sOrder; }
00087 
00088   private:
00089     OA_ptr<MemRefExpr> mMRE;
00090 
00091     static const int sOrder = 300;
00092 };
00093 
00094 } // end namespace
00095 #endif

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