BOOST_FOREACH.
[dcpomatic.git] / src / lib / dkdm_wrapper.cc
index 809739e06fd471d14a564fbc1de468d6a1f93f59..74a71966e87b4667e0ab38b4361556a4ac3b89d9 100644 (file)
 #include "compose.hpp"
 #include "dkdm_wrapper.h"
 #include "dcpomatic_assert.h"
+#include "warnings.h"
+DCPOMATIC_DISABLE_WARNINGS
 #include <libxml++/libxml++.h>
-#include <boost/foreach.hpp>
+DCPOMATIC_ENABLE_WARNINGS
 
 using std::string;
 using std::list;
-using boost::shared_ptr;
-using boost::dynamic_pointer_cast;
+using std::shared_ptr;
+using std::dynamic_pointer_cast;
 
 shared_ptr<DKDMBase>
 DKDMBase::read (cxml::ConstNodePtr node)
@@ -36,7 +38,7 @@ DKDMBase::read (cxml::ConstNodePtr node)
                return shared_ptr<DKDM> (new DKDM (dcp::EncryptedKDM (node->content ())));
        } else if (node->name() == "DKDMGroup") {
                shared_ptr<DKDMGroup> group (new DKDMGroup (node->string_attribute ("Name")));
-               BOOST_FOREACH (cxml::ConstNodePtr i, node->node_children()) {
+               for (auto i: node->node_children()) {
                        shared_ptr<DKDMBase> c = read (i);
                        if (c) {
                                group->add (c);
@@ -65,16 +67,24 @@ DKDMGroup::as_xml (xmlpp::Element* node) const
 {
        xmlpp::Element* f = node->add_child("DKDMGroup");
        f->set_attribute ("Name", _name);
-       BOOST_FOREACH (shared_ptr<DKDMBase> i, _children) {
+       for (auto i: _children) {
                i->as_xml (f);
        }
 }
 
 void
-DKDMGroup::add (shared_ptr<DKDMBase> child)
+DKDMGroup::add (shared_ptr<DKDMBase> child, shared_ptr<DKDM> previous)
 {
        DCPOMATIC_ASSERT (child);
-       _children.push_back (child);
+       if (previous) {
+               list<shared_ptr<DKDMBase> >::iterator 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<DKDMGroup> (shared_from_this ()));
 }