diff options
Diffstat (limited to 'libs/pbd/xml++.cc')
-rw-r--r-- | libs/pbd/xml++.cc | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/libs/pbd/xml++.cc b/libs/pbd/xml++.cc index 03fa116279..1b10be89f5 100644 --- a/libs/pbd/xml++.cc +++ b/libs/pbd/xml++.cc @@ -216,13 +216,38 @@ XMLNode::set_content(const string & c) return _content; } +XMLNode* +XMLNode::child (const char *name) const +{ + /* returns first child matching name */ + + static XMLNodeList retval; + XMLNodeConstIterator cur; + + if (name == 0) { + return 0; + } + + retval.erase(retval.begin(), retval.end()); + + for (cur = _children.begin(); cur != _children.end(); ++cur) { + if ((*cur)->name() == name) { + return *cur; + } + } + + return 0; +} + const XMLNodeList & -XMLNode::children(const string & n) const +XMLNode::children(const string& n) const { + /* returns all children matching name */ + static XMLNodeList retval; XMLNodeConstIterator cur; - if (n.length() == 0) { + if (n.empty()) { return _children; } |