00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "PSEvt/AliasMap.h"
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "PSEvt/EventKey.h"
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 namespace PSEvt {
00036
00037
00038
00039
00040 AliasMap::AliasMap ()
00041 : m_alias2src()
00042 , m_src2alias()
00043 , m_srcs()
00044 {
00045 }
00046
00047
00048
00049
00050 AliasMap::~AliasMap ()
00051 {
00052 }
00053
00054
00055 void
00056 AliasMap::add(const std::string& alias, const Pds::Src& src)
00057 {
00058 m_alias2src.insert(std::make_pair(alias, src));
00059 m_src2alias.insert(std::make_pair(src, alias));
00060 }
00061
00062
00063 void
00064 AliasMap::clear()
00065 {
00066 m_alias2src.clear();
00067 m_src2alias.clear();
00068 }
00069
00070
00071 Pds::Src
00072 AliasMap::src(const std::string& alias) const
00073 {
00074 Pds::Src res;
00075 std::map<std::string, Pds::Src>::const_iterator itr = m_alias2src.find(alias);
00076 if (itr != m_alias2src.end()) res = itr->second;
00077 return res;
00078 }
00079
00080
00081 std::string
00082 AliasMap::alias(const Pds::Src& src) const
00083 {
00084 std::string res;
00085 std::map<Pds::Src, std::string, SrcCmp>::const_iterator itr = m_src2alias.find(src);
00086 if (itr != m_src2alias.end()) res = itr->second;
00087 return res;
00088 }
00089
00090 bool
00091 AliasMap::SrcCmp::operator()(const Pds::Src& lhs, const Pds::Src& rhs) const
00092 {
00093 return PSEvt::cmpPdsSrc(lhs, rhs) < 0;
00094 }
00095
00096 void
00097 AliasMap::addsrc(const Pds::Src& src)
00098 {
00099 for(std::vector<Pds::Src>::const_iterator s = m_srcs.begin(); s != m_srcs.end(); ++s)
00100 if (*s==src) return;
00101 m_srcs.push_back(src);
00102 }
00103
00104 const std::vector<Pds::Src>&
00105 AliasMap::srcs()
00106 {
00107 return m_srcs;
00108 }
00109
00110 }