]> git.tdb.fi Git - libs/core.git/blobdiff - source/core/maputils.h
Use the new utilities to format some strings
[libs/core.git] / source / core / maputils.h
index 0f863b46fdf7dea307f251be4823a4e63cdcbc4e..66b4e3baf82c50d815f5bcf4ce0615729ebbf0fb 100644 (file)
@@ -74,8 +74,14 @@ const typename T::mapped_type &get_item(const T &map, const typename T::key_type
        return i->second;
 }
 
+template<typename D, typename T>
+D *get_item(const T &map, const typename T::key_type &key)
+{
+       return dynamic_cast<D *>(get_item(map, key));
+}
+
 template<typename T>
-const typename T::iterator insert_unique(T &map, const typename T::key_type &key, const typename T::mapped_type &item)
+typename T::iterator insert_unique(T &map, const typename T::key_type &key, const typename T::mapped_type &item)
 {
        if(map.count(key))
                throw key_error(key);
@@ -83,6 +89,15 @@ const typename T::iterator insert_unique(T &map, const typename T::key_type &key
        return map.insert(typename T::value_type(key, item)).first;
 }
 
+template<typename T>
+void remove_existing(T &map, const typename T::key_type &key)
+{
+       if(!map.count(key))
+               throw key_error(key);
+
+       map.erase(key);
+}
+
 } // namespace Msp
 
 #endif