00001 #include "DataFormats/PatCandidates/interface/StringMap.h" 00002 00003 void StringMap::add(const std::string &string, int32_t value) { 00004 entries_.push_back(value_type(string,value)); 00005 } 00006 00007 void StringMap::sort() { 00008 std::sort(entries_.begin(), entries_.end()); 00009 } 00010 00011 void StringMap::clear() { 00012 entries_.clear(); 00013 } 00014 00015 int32_t StringMap::operator[](const std::string &string) const { 00016 vector_type::const_iterator match = std::lower_bound(entries_.begin(), entries_.end(), string, MatchByString()); 00017 return (match == end() ? -1 : match->second); 00018 } 00019 00020 const std::string & StringMap::operator[](int32_t number) const { 00021 static std::string empty_; 00022 vector_type::const_iterator match = find(number); 00023 return (match == end() ? empty_ : match->first); 00024 } 00025 00026 StringMap::const_iterator StringMap::find(const std::string &string) const { 00027 vector_type::const_iterator match = std::lower_bound(entries_.begin(), entries_.end(), string, MatchByString()); 00028 return (match->first == string ? match : end()); 00029 } 00030 00031 StringMap::const_iterator StringMap::find(int32_t number) const { 00032 return std::find_if(entries_.begin(), entries_.end(), MatchByNumber(number)); 00033 } 00034 00035