summaryrefslogtreecommitdiff
path: root/libs/pbd/xml++.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/pbd/xml++.cc')
-rw-r--r--libs/pbd/xml++.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/libs/pbd/xml++.cc b/libs/pbd/xml++.cc
index 5507f658e9..e603b4c50f 100644
--- a/libs/pbd/xml++.cc
+++ b/libs/pbd/xml++.cc
@@ -379,6 +379,27 @@ XMLNode::remove_nodes_and_delete(const string & n)
}
}
+void
+XMLNode::remove_nodes_and_delete(const string& propname, const string& val)
+{
+ XMLNodeIterator i = _children.begin();
+ XMLNodeIterator tmp;
+ XMLProperty* prop;
+
+ while (i != _children.end()) {
+ tmp = i;
+ ++tmp;
+
+ prop = (*i)->property(propname);
+ if(prop && prop->value() == val) {
+ delete *i;
+ _children.erase(i);
+ }
+
+ i = tmp;
+ }
+}
+
XMLProperty::XMLProperty(const string &n, const string &v)
: _name(n),
_value(v)