Some comments.
[libdcp.git] / src / xml.h
index 3ff3e360c02ff6db99790c23865ba67a9d7cf953..85589a0f41d885e52913bd82da40a2d38ffa3d63 100644 (file)
--- a/src/xml.h
+++ b/src/xml.h
@@ -3,10 +3,12 @@
 
 #include <string>
 #include <list>
+#include <stdint.h>
 #include <glibmm.h>
 #include <boost/shared_ptr.hpp>
 #include "types.h"
 #include "exceptions.h"
+#include "dcp_time.h"
 
 namespace xmlpp {
        class Node;
@@ -26,10 +28,18 @@ protected:
        std::string optional_string_node (std::string);
        ContentKind kind_node (std::string);
        Fraction fraction_node (std::string);
-       int int_node (std::string);
+       int64_t int64_node (std::string);
+       int64_t optional_int64_node (std::string);
+       float float_node (std::string);
        void ignore_node (std::string);
        void done ();
 
+       Time time_attribute (std::string);
+       float float_attribute (std::string);
+       std::string string_attribute (std::string);
+
+       std::string content ();
+
        template <class T>
        boost::shared_ptr<T> sub_node (std::string name) {
                return boost::shared_ptr<T> (new T (xml_node (name)));
@@ -48,9 +58,8 @@ protected:
        }
        
        template <class T>
-       std::list<boost::shared_ptr<T> > sub_nodes (std::string name, std::string sub) {
-               XMLNode p (xml_node (name));
-               std::list<xmlpp::Node*> n = p.xml_nodes (sub);
+       std::list<boost::shared_ptr<T> > sub_nodes (std::string name) {
+               std::list<xmlpp::Node*> n = xml_nodes (name);
                std::list<boost::shared_ptr<T> > r;
                for (typename std::list<xmlpp::Node*>::iterator i = n.begin(); i != n.end(); ++i) {
                        r.push_back (boost::shared_ptr<T> (new T (*i)));
@@ -58,6 +67,12 @@ protected:
                return r;
        }
 
+       template <class T>
+       std::list<boost::shared_ptr<T> > sub_nodes (std::string name, std::string sub) {
+               XMLNode p (xml_node (name));
+               return p.sub_nodes<T> (sub);
+       }
+
        xmlpp::Node const * _node;
 
 private: