Note any file that is used for reading/writing a PKL, like we do with assets.
[libdcp.git] / src / types.cc
index d27b2ec186ece6773d0646309040927b2afd0eae..29e2c387ff05d028c02bce6724b87ff49d85bee7 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012-2014 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2019 Carl Hetherington <cth@carlh.net>
 
     This file is part of libdcp.
 
@@ -36,6 +36,7 @@
 #include "exceptions.h"
 #include "compose.hpp"
 #include "dcp_assert.h"
+#include <libxml++/libxml++.h>
 #include <boost/algorithm/string.hpp>
 #include <vector>
 #include <cstdio>
@@ -330,6 +331,10 @@ dcp::content_kind_to_string (ContentKind kind)
                return "psa";
        case ADVERTISEMENT:
                return "advertisement";
+       case EPISODE:
+               return "episode";
+       case PROMO:
+               return "promo";
        }
 
        DCP_ASSERT (false);
@@ -365,6 +370,10 @@ dcp::content_kind_from_string (string kind)
                return PUBLIC_SERVICE_ANNOUNCEMENT;
        } else if (kind == "advertisement") {
                return ADVERTISEMENT;
+       } else if (kind == "episode") {
+               return EPISODE;
+       } else if (kind == "promo") {
+               return PROMO;
        }
 
        throw BadContentKindError (kind);
@@ -426,3 +435,30 @@ dcp::marker_from_string (string s)
 
        DCP_ASSERT (false);
 }
+
+Rating::Rating (cxml::ConstNodePtr node)
+{
+       agency = node->string_child("Agency");
+       label = node->string_child("Label");
+       node->done ();
+}
+
+void
+Rating::as_xml (xmlpp::Element* parent) const
+{
+       parent->add_child("Agency")->add_child_text(agency);
+       parent->add_child("Label")->add_child_text(label);
+}
+
+bool
+dcp::operator== (Rating const & a, Rating const & b)
+{
+       return a.agency == b.agency && a.label == b.label;
+}
+
+ostream &
+dcp::operator<< (ostream& s, Rating const & r)
+{
+       s << r.agency << " " << r.label;
+       return s;
+}