PSEvt/src/AliasMap.cpp

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 // File and Version Information:
00003 //      $Id: AliasMap.cpp 11492 2016-03-16 04:30:13Z cpo@SLAC.STANFORD.EDU $
00004 //
00005 // Description:
00006 //      Class AliasMap...
00007 //
00008 // Author List:
00009 //      Andy Salnikov
00010 //
00011 //------------------------------------------------------------------------
00012 
00013 //-----------------------
00014 // This Class's Header --
00015 //-----------------------
00016 #include "PSEvt/AliasMap.h"
00017 
00018 //-----------------
00019 // C/C++ Headers --
00020 //-----------------
00021 
00022 //-------------------------------
00023 // Collaborating Class Headers --
00024 //-------------------------------
00025 #include "PSEvt/EventKey.h"
00026 
00027 //-----------------------------------------------------------------------
00028 // Local Macros, Typedefs, Structures, Unions and Forward Declarations --
00029 //-----------------------------------------------------------------------
00030 
00031 //              ----------------------------------------
00032 //              -- Public Function Member Definitions --
00033 //              ----------------------------------------
00034 
00035 namespace PSEvt {
00036 
00037 //----------------
00038 // Constructors --
00039 //----------------
00040 AliasMap::AliasMap ()
00041   : m_alias2src()
00042   , m_src2alias()
00043   , m_srcs()
00044 {
00045 }
00046 
00047 //--------------
00048 // Destructor --
00049 //--------------
00050 AliasMap::~AliasMap ()
00051 {
00052 }
00053 
00054 // Add one more alias to the map
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 // remove all aliases
00063 void
00064 AliasMap::clear()
00065 {
00066   m_alias2src.clear();
00067   m_src2alias.clear();
00068 }
00069 
00070 // Find matching Src for given alias name.
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 // Find matching alias name for given Src.
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 } // namespace PSEvt

Generated on 19 Dec 2016 for PSANAclasses by  doxygen 1.4.7