InterAliasMap.hpp

Go to the documentation of this file.
00001 
00016 #ifndef InterAliasMap_H
00017 #define InterAliasMap_H
00018 
00019 #include <OpenAnalysis/Alias/ManagerAliasMapBasic.hpp>
00020 #include <OpenAnalysis/Alias/InterAliasInterface.hpp>
00021 #include <map>
00022 
00023 namespace OA {
00024   namespace Alias {
00025 
00026 class InterAliasMap : public virtual InterAliasInterface,
00027                       public virtual Annotation {
00028   public:
00029     InterAliasMap() {}
00030     virtual ~InterAliasMap() {}
00031 
00033     OA_ptr<Alias::Interface> getAliasResults(ProcHandle proc)
00034       { assert(!mProcToAliasMap[proc].ptrEqual(0));
00035         return mProcToAliasMap[proc];
00036       }
00037 
00041     OA_ptr<Alias::AliasMap> getAliasMapResults(ProcHandle proc)
00042       { assert(!mProcToAliasMap[proc].ptrEqual(0));
00043         return mProcToAliasMap[proc];
00044       }
00045 
00046     //*****************************************************************
00047     // Output
00048     //*****************************************************************
00050     void output(IRHandlesIRInterface& ir)
00051       {
00052           sOutBuild->objStart("InterAliasMap");
00053           std::map<ProcHandle,OA_ptr<AliasMap> >::iterator mapIter;
00054           for (mapIter=mProcToAliasMap.begin();
00055                mapIter!=mProcToAliasMap.end();
00056                mapIter++) 
00057           {
00058               OA_ptr<AliasMap> alias = mapIter->second;
00059               alias->output(ir);
00060           }
00061           sOutBuild->objEnd("InterAliasMap");
00062 
00063       }
00065     void dump(std::ostream& os, OA_ptr<IRHandlesIRInterface> ir)
00066       {
00067         os << "====================== InterAliasMap" << std::endl;
00068         std::map<ProcHandle,OA_ptr<AliasMap> >::iterator mapIter;
00069         for (mapIter=mProcToAliasMap.begin();
00070              mapIter!=mProcToAliasMap.end();
00071              mapIter++) 
00072         {
00073             OA_ptr<AliasMap> alias = mapIter->second;
00074             alias->dump(os,ir);
00075             os << "-------------------------------" << std::endl;
00076         }
00077 
00078       }
00079     
00080     //*****************************************************************
00081     // Construction methods 
00082     //*****************************************************************
00083 
00085     void mapProcToAliasMap(ProcHandle proc, OA_ptr<AliasMap> alias)
00086       { mProcToAliasMap[proc] = alias; }
00087 
00088   private:
00089     OA_ptr<ManagerAliasMapBasic> mAliasMapMan;
00090     std::map<ProcHandle,OA_ptr<AliasMap> > mProcToAliasMap;
00091 
00092 
00093 };
00094 
00095   } // end of Alias namespace
00096 } // end of OA namespace
00097 
00098 #endif
00099