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
1.7.1