summaryrefslogtreecommitdiff
path: root/src/xml.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-08-11 22:06:47 +0100
committerCarl Hetherington <cth@carlh.net>2012-08-11 22:06:47 +0100
commit2cd9086c95686117ffbce92188d50d525ed488bb (patch)
treefec3df69122ad2d88a19bf3a20fcd5eda3b8d3d7 /src/xml.cc
parent91bcf6289c86d08fc994f123b0fd6ec2f2ba6603 (diff)
Various tweaks for a real-life DCP.
Diffstat (limited to 'src/xml.cc')
-rw-r--r--src/xml.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/xml.cc b/src/xml.cc
index 4ab6a2e7..72dfe1bb 100644
--- a/src/xml.cc
+++ b/src/xml.cc
@@ -107,6 +107,27 @@ XMLNode::int64_node (string name)
return lexical_cast<int64_t> (string_node (name));
}
+int64_t
+XMLNode::optional_int64_node (string name)
+{
+ list<xmlpp::Node*> nodes = xml_nodes (name);
+ if (nodes.size() > 2) {
+ throw XMLError ("duplicate XML tag " + name);
+ }
+
+ if (nodes.empty ()) {
+ return 0;
+ }
+
+ return int64_node (name);
+}
+
+float
+XMLNode::float_node (string name)
+{
+ return lexical_cast<float> (string_node (name));
+}
+
void
XMLNode::ignore_node (string name)
{