#include "compose.hpp"
#include "dkdm_wrapper.h"
#include "dcpomatic_assert.h"
+#include "warnings.h"
+DCPOMATIC_DISABLE_WARNINGS
#include <libxml++/libxml++.h>
+DCPOMATIC_ENABLE_WARNINGS
#include <boost/foreach.hpp>
using std::string;
{
if (node->name() == "DKDM") {
return shared_ptr<DKDM> (new DKDM (dcp::EncryptedKDM (node->content ())));
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+ } else if (node->name() == "ECinemaDKDM") {
+ return shared_ptr<ECinemaDKDM> (new ECinemaDKDM(EncryptedECinemaKDM(node->content())));
+#endif
} else if (node->name() == "DKDMGroup") {
shared_ptr<DKDMGroup> group (new DKDMGroup (node->string_attribute ("Name")));
BOOST_FOREACH (cxml::ConstNodePtr i, node->node_children()) {
node->add_child("DKDM")->add_child_text (_dkdm.as_xml ());
}
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+string
+ECinemaDKDM::name () const
+{
+ return String::compose ("%1 (%2)", _dkdm.name(), _dkdm.id());
+}
+
+void
+ECinemaDKDM::as_xml (xmlpp::Element* node) const
+{
+ node->add_child("ECinemaDKDM")->add_child_text (_dkdm.as_xml());
+}
+#endif
+
void
DKDMGroup::as_xml (xmlpp::Element* node) const
{
}
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 ()));
}