#include <string>
#include <vector>
-#include <unordered_map>
+#include <map>
#include <cstdio>
#include <cstdarg>
typedef std::vector<XMLProperty*> XMLPropertyList;
typedef XMLPropertyList::iterator XMLPropertyIterator;
typedef XMLPropertyList::const_iterator XMLPropertyConstIterator;
-typedef std::unordered_map<std::string, XMLProperty*> XMLPropertyMap;
+typedef std::map<std::string, XMLProperty*> XMLPropertyMap;
class LIBPBD_API XMLTree {
public:
std::string attribute_value();
const XMLPropertyList& properties() const { return _proplist; }
- XMLProperty* property(const char*);
- XMLProperty* property(const std::string&);
- const XMLProperty* property(const char* n) const { return const_cast<XMLNode*>(this)->property(n); }
- const XMLProperty* property(const std::string& n) const { return const_cast<XMLNode*>(this)->property(n); }
+ XMLProperty const * property(const char*) const;
+ XMLProperty const * property(const std::string&) const;
+ XMLProperty * property(const char*);
+ XMLProperty * property(const std::string&);
+
+ bool has_property_with_value (const std::string&, const std::string&) const;
XMLProperty* add_property(const char* name, const std::string& value);
XMLProperty* add_property(const char* name, const char* value = "");