#include <dcp/encrypted_kdm.h>
#include <libcxml/cxml.h>
+#include <boost/enable_shared_from_this.hpp>
namespace xmlpp {
class Element;
}
-class DKDMBase
+class DKDMGroup;
+
+class DKDMBase : public boost::enable_shared_from_this<DKDMBase>
{
public:
+ virtual ~DKDMBase () {}
virtual std::string name () const = 0;
virtual void as_xml (xmlpp::Element *) const = 0;
static boost::shared_ptr<DKDMBase> read (cxml::ConstNodePtr node);
+
+ boost::shared_ptr<DKDMGroup> parent () const {
+ return _parent;
+ }
+
+ void set_parent (boost::shared_ptr<DKDMGroup> parent) {
+ _parent = parent;
+ }
+
+private:
+ boost::shared_ptr<DKDMGroup> _parent;
};
class DKDM : public DKDMBase
{
public:
- DKDM (dcp::EncryptedKDM k)
+ explicit DKDM (dcp::EncryptedKDM k)
: _dkdm (k)
{}
class DKDMGroup : public DKDMBase
{
public:
- DKDMGroup (std::string name)
+ explicit DKDMGroup (std::string name)
: _name (name)
{}
return _children;
}
- void add (boost::shared_ptr<DKDMBase> child);
+ void add (boost::shared_ptr<DKDMBase> child, boost::shared_ptr<DKDM> previous = boost::shared_ptr<DKDM> ());
void remove (boost::shared_ptr<DKDMBase> child);
private: