File indexing completed on 2024-04-06 12:13:12
0001 #ifndef FWCore_Utilities_Map_h
0002 #define FWCore_Utilities_Map_h
0003
0004 #include <cassert>
0005 #include <map>
0006
0007
0008
0009
0010
0011 namespace edm {
0012
0013
0014
0015 template <typename Key, typename Value>
0016 inline Value& findOrInsert(std::map<Key, Value>& m, Key const& k) {
0017 return m[k];
0018 }
0019
0020
0021
0022
0023 template <typename Key, typename Value>
0024 inline Value const& findOrDefault(std::map<Key, Value> const& m, Key const& k, Value const& defaultValue) {
0025 typename std::map<Key, Value>::const_iterator it = m.find(k);
0026 return (it == m.end() ? defaultValue : it->second);
0027 }
0028
0029 template <typename Key, typename Value>
0030 inline Value& findOrDefault(std::map<Key, Value>& m, Key const& k, Value& defaultValue) {
0031 typename std::map<Key, Value>::const_iterator it = m.find(k);
0032 return (it == m.end() ? defaultValue : it->second);
0033 }
0034
0035
0036
0037
0038 template <typename Key, typename Value>
0039 inline Value findOrDefault(std::map<Key, Value> const& m, Key const& k) {
0040 typename std::map<Key, Value>::const_iterator it = m.find(k);
0041 return (it == m.end() ? Value() : it->second);
0042 }
0043
0044
0045
0046
0047 template <typename Key, typename Value>
0048 inline Value const& findOrAssert(std::map<Key, Value> const& m, Key const& k) {
0049 typename std::map<Key, Value>::const_iterator it = m.find(k);
0050 if (it == m.end())
0051 assert("findOrAssert" && 0);
0052 return it->second;
0053 }
0054
0055 template <typename Key, typename Value>
0056 inline Value& findOrAssert(std::map<Key, Value>& m, Key const& k) {
0057 typename std::map<Key, Value>::const_iterator it = m.find(k);
0058 if (it == m.end())
0059 assert("findOrAssert" && 0);
0060 return it->second;
0061 }
0062 }
0063 #endif