Move PBD::canonical_path to pbd/file_utils.h/cc and reimplement for Windows
[ardour.git] / libs / pbd / pbd / xml++.h
index dac8de67cd1473e781f1b579a81d2995445d9981..f0956edd259617584de6dc692080aad4de3ee9e2 100644 (file)
@@ -29,7 +29,7 @@
 
 #include <string>
 #include <vector>
-#include <unordered_map>
+#include <map>
 #include <cstdio>
 #include <cstdarg>
 
@@ -50,7 +50,7 @@ typedef XMLNodeList::const_iterator              XMLNodeConstIterator;
 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:
@@ -117,10 +117,12 @@ 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 = "");