Remove ReelEncryptableAsset and tidy up a bit.
[libdcp.git] / src / reel_markers_asset.cc
index ba0021cfc156fb7c13fef27befc3973f74744493..55a50a68992b2de56be9e6b52ea766d86931034e 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2019 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2019-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of libdcp.
 
     files in the program, then also delete it here.
 */
 
+
+/** @file  src/reel_markers_asset.cc
+ *  @brief ReelMarkersAsset class
+ */
+
+
 #include "reel_markers_asset.h"
 #include "raw_convert.h"
 #include "dcp_assert.h"
 #include <libxml++/libxml++.h>
-#include <boost/foreach.hpp>
+
 
 using std::string;
 using std::map;
@@ -44,60 +50,67 @@ using boost::optional;
 using std::shared_ptr;
 using namespace dcp;
 
+
 ReelMarkersAsset::ReelMarkersAsset (Fraction edit_rate, int64_t intrinsic_duration, int64_t entry_point)
        : ReelAsset (make_uuid(), edit_rate, intrinsic_duration, entry_point)
 {
 
 }
 
+
 ReelMarkersAsset::ReelMarkersAsset (cxml::ConstNodePtr node)
        : ReelAsset (node)
 {
-       cxml::ConstNodePtr list = node->node_child ("MarkerList");
+       auto list = node->node_child ("MarkerList");
        DCP_ASSERT (list);
-       BOOST_FOREACH (cxml::ConstNodePtr i, list->node_children("Marker")) {
+       for (auto i: list->node_children("Marker")) {
                set (marker_from_string(i->string_child("Label")), dcp::Time(i->number_child<int64_t>("Offset"), edit_rate().as_float(), edit_rate().numerator));
        }
 }
 
+
 string
 ReelMarkersAsset::cpl_node_name (Standard) const
 {
        return "MainMarkers";
 }
 
+
 void
 ReelMarkersAsset::set (Marker m, Time t)
 {
        _markers[m] = t;
 }
 
+
 void
 ReelMarkersAsset::unset (Marker m)
 {
        _markers.erase (m);
 }
 
+
 optional<Time>
 ReelMarkersAsset::get (Marker m) const
 {
-       map<Marker, Time>::const_iterator i = _markers.find (m);
+       auto i = _markers.find (m);
        if (i == _markers.end ()) {
-               return optional<Time>();
+               return {};
        }
        return i->second;
 }
 
+
 xmlpp::Node*
 ReelMarkersAsset::write_to_cpl (xmlpp::Node* node, Standard standard) const
 {
        int const tcr = edit_rate().numerator / edit_rate().denominator;
-       xmlpp::Node* asset = write_to_cpl_asset (node, standard, optional<string>());
-       xmlpp::Node* ml = asset->add_child("MarkerList");
-       for (map<Marker, Time>::const_iterator i = _markers.begin(); i != _markers.end(); ++i) {
-               xmlpp::Node* m = ml->add_child("Marker");
-               m->add_child("Label")->add_child_text (marker_to_string(i->first));
-               m->add_child("Offset")->add_child_text (raw_convert<string>(i->second.as_editable_units(tcr)));
+       auto asset = ReelAsset::write_to_cpl (node, standard);
+       auto ml = asset->add_child("MarkerList");
+       for (auto const& i: _markers) {
+               auto m = ml->add_child("Marker");
+               m->add_child("Label")->add_child_text(marker_to_string(i.first));
+               m->add_child("Offset")->add_child_text(raw_convert<string>(i.second.as_editable_units_ceil(tcr)));
        }
 
        return asset;