Add getdefault to Annotations
[mussa.git] / alg / annotations.cpp
index ff84ffe4f06a2c4f881019df30dcfd6259facd87..996e314b4eecb6378f4cbf31773bf9e044a75e67 100644 (file)
@@ -7,7 +7,7 @@ Annotations::Annotations()
   metadata[name_str] = ""; 
 }
 
-Annotations::Annotations(const std::string &n)
+Annotations::Annotations(const std::string n)
 { 
   metadata[name_str] = n; 
 }
@@ -38,12 +38,12 @@ void Annotations::erase(const std::string& key)
   }
 }
   
-void Annotations::set(const std::string& key, const std::string &value )
+void Annotations::set(const std::string key, const std::string value )
 {
   metadata[key] = value;
 }
 
-std::string Annotations::get(const std::string& key) const
+std::string Annotations::get(const std::string key) const
 {
   metadata_map::const_iterator map_i(metadata.find(key));
   if (map_i == metadata.end()) {
@@ -53,7 +53,16 @@ std::string Annotations::get(const std::string& key) const
   }  
 }
 
-bool Annotations::has_key(const std::string& key) const
+std::string Annotations::getdefault(const std::string key, std::string default_value) const
+{
+  try {
+    return get(key);
+  } catch(annotations_key_error e) {
+    return default_value;
+  }
+}
+
+bool Annotations::has_key(const std::string key) const
 {
   metadata_map::const_iterator map_i(metadata.find(key));
   return map_i != metadata.end();