metadata[name_str] = "";
}
-Annotations::Annotations(const std::string &n)
+Annotations::Annotations(const std::string n)
{
metadata[name_str] = n;
}
}
}
-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()) {
}
}
-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();
typedef metadata_map::size_type size_type;
Annotations();
- Annotations(const std::string& n);
+ Annotations(const std::string n);
Annotations(const Annotations&);
Annotations(const AnnotationsRef);
//! remove some key from our "dictionary"
void erase(const std::string& key);
//! set a metadata element
- void set(const std::string& key, const std::string &value );
+ void set(const std::string key, const std::string value );
//! look for a key, \throws annotation_key_error if it doesn't find it
- std::string get(const std::string& key) const;
+ std::string get(const std::string key) const;
+ //! look for a key, if not found return default
+ std::string getdefault(const std::string key, std::string default_value) const;
//! check for a key
- bool has_key(const std::string& key) const;
+ bool has_key(const std::string key) const;
//! return all the keys of our metadata map
//std::list<std::string> keys() const;
size_type size() const { return metadata.size(); }
BOOST_CHECK_THROW( asp->get("not there"), annotations_key_error );
}
+
+BOOST_AUTO_TEST_CASE( annotations_getdefault_metadata )
+{
+ boost::shared_ptr<Annotations> asp(new Annotations("asp"));
+ asp->set("header", "> amsp");
+
+ BOOST_CHECK_EQUAL( asp->size(), 2 );
+ BOOST_CHECK_EQUAL( asp->getdefault("header", "foo"), "> amsp" );
+ BOOST_CHECK_EQUAL( asp->getdefault("not there", "foo"), "foo" );
+}
BOOST_AUTO_TEST_CASE( annotations_has_key )
{
boost::shared_ptr<Annotations> asp(new Annotations("asp"));