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++.cc29
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;
}