diff options
Diffstat (limited to 'libs/pbd/xml++.cc')
-rw-r--r-- | libs/pbd/xml++.cc | 21 |
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) |