X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fdkdm_wrapper.cc;h=4698c159d26a97bd9dd85cac1edd153334eacc09;hb=4bbcf55dc0e644c20b1eaabee2da3219c4e7635f;hp=66f67114dd0f4347f855dee4a62fdd2dd4bbbcec;hpb=dd9be86db6cde0afa5da0d1d1ac43b42e05dca26;p=dcpomatic.git diff --git a/src/lib/dkdm_wrapper.cc b/src/lib/dkdm_wrapper.cc index 66f67114d..4698c159d 100644 --- a/src/lib/dkdm_wrapper.cc +++ b/src/lib/dkdm_wrapper.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Carl Hetherington + Copyright (C) 2017-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,6 +18,7 @@ */ + #include "compose.hpp" #include "dkdm_wrapper.h" #include "dcpomatic_assert.h" @@ -25,80 +26,86 @@ DCPOMATIC_DISABLE_WARNINGS #include DCPOMATIC_ENABLE_WARNINGS -#include + using std::string; using std::list; using std::shared_ptr; +using std::make_shared; using std::dynamic_pointer_cast; + shared_ptr DKDMBase::read (cxml::ConstNodePtr node) { if (node->name() == "DKDM") { - return shared_ptr (new DKDM (dcp::EncryptedKDM (node->content ()))); + return make_shared(dcp::EncryptedKDM(node->content())); } else if (node->name() == "DKDMGroup") { - shared_ptr group (new DKDMGroup (node->string_attribute ("Name"))); - BOOST_FOREACH (cxml::ConstNodePtr i, node->node_children()) { - shared_ptr c = read (i); - if (c) { + auto group = make_shared(node->string_attribute("Name")); + for (auto i: node->node_children()) { + if (auto c = read(i)) { group->add (c); } } return group; } - return shared_ptr (); + return {}; } + string DKDM::name () const { return String::compose ("%1 (%2)", _dkdm.content_title_text(), _dkdm.cpl_id()); } + void DKDM::as_xml (xmlpp::Element* node) const { node->add_child("DKDM")->add_child_text (_dkdm.as_xml ()); } + void DKDMGroup::as_xml (xmlpp::Element* node) const { - xmlpp::Element* f = node->add_child("DKDMGroup"); + auto f = node->add_child("DKDMGroup"); f->set_attribute ("Name", _name); - BOOST_FOREACH (shared_ptr i, _children) { + for (auto i: _children) { i->as_xml (f); } } + void DKDMGroup::add (shared_ptr child, shared_ptr previous) { DCPOMATIC_ASSERT (child); if (previous) { - list >::iterator i = find (_children.begin(), _children.end(), previous); - if (i != _children.end ()) { + auto i = find (_children.begin(), _children.end(), previous); + if (i != _children.end()) { ++i; } _children.insert (i, child); } else { _children.push_back (child); } - child->set_parent (dynamic_pointer_cast (shared_from_this ())); + child->set_parent (dynamic_pointer_cast(shared_from_this())); } + void DKDMGroup::remove (shared_ptr child) { - for (list >::iterator i = _children.begin(); i != _children.end(); ++i) { + for (auto i = _children.begin(); i != _children.end(); ++i) { if (*i == child) { _children.erase (i); - child->set_parent (shared_ptr ()); + child->set_parent (shared_ptr()); return; } - shared_ptr g = dynamic_pointer_cast (*i); + auto g = dynamic_pointer_cast (*i); if (g) { g->remove (child); }