00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 template<typename T> inline
00024 void Repository<T>::Insert(const std::string &key,
00025 const T &object)
00026 {
00027 if(!m_objects.insert(std::make_pair(key, object)).second)
00028 throw DuplicateKeyException(key);
00029 }
00030
00031 template<typename T> inline
00032 void Repository<T>::Remove(const std::string &key) {
00033 if(m_objects.erase(key) < 1)
00034 throw InvalidKeyException(key);
00035 }
00036
00037 template<typename T> inline
00038 T &Repository<T>::Find(const std::string &key) {
00039 const object_map::iterator i = m_objects.find(key);
00040
00041 if(i == m_objects.end())
00042 throw InvalidKeyException(key);
00043
00044 return i->second;
00045 }
00046
00047 template<typename T> inline
00048 const T &Repository<T>::Find(const std::string &key) const {
00049 const object_map::const_iterator i = m_objects.find(key);
00050
00051 if(i == m_objects.end())
00052 throw InvalidKeyException(key);
00053
00054 return i->second;
00055 }
00056
00057 template<typename T> inline
00058 bool Repository<T>::Contains(const std::string &key) const {
00059 return m_objects.find(key) != m_objects.end();
00060 }