X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fdcp.h;h=ed5e5e3e0f00d8aac3557850513df63dde7c894f;hb=9e523d8a4062ad52330dff6c2ba50e54184c9bb2;hp=d6275037c1582ce4719639b98ae4b4237c87c72f;hpb=ac265d3d008328b9bdaf00c39ebcd86f263605c7;p=libdcp.git diff --git a/src/dcp.h b/src/dcp.h index d6275037..ed5e5e3e 100644 --- a/src/dcp.h +++ b/src/dcp.h @@ -41,34 +41,38 @@ namespace xmlpp { namespace dcp { -class Content; +class Content; class Reel; class CPL; class XMLMetadata; class Signer; -class KDM; +class DecryptedKDM; class Asset; - -namespace parse { - class AssetMap; -} +class DCPReadError; /** @class DCP * @brief A class to create or read a DCP. */ - + class DCP : public boost::noncopyable { public: /** Construct a DCP. You can pass an existing DCP's directory - * as the parameter, or a non-existant folder to create a new - * DCP in. + * as the parameter; alternatively, directory will be created + * if it does not exist. Note that if you pass an existing DCP + * into this constructor it will not be read until you call ::read(). * * @param directory Directory containing the DCP's files. */ DCP (boost::filesystem::path directory); - void read (); + typedef std::list > ReadErrors; + + /** Read the DCP's structure into this object. + * @param keep_going true to try to keep going in the face of (some) errors. + * @param errors List of errors that will be added to if keep_going is true. + */ + void read (bool keep_going = false, ReadErrors* errors = 0); /** Compare this DCP with another, according to various options. * @param other DCP to compare this one to. @@ -76,20 +80,16 @@ public: * @param note Functor to handle notes made by the equality operation. * @return true if the DCPs are equal according to EqualityOptions, otherwise false. */ - bool equals (DCP const & other, EqualityOptions options, boost::function note) const; + bool equals (DCP const & other, EqualityOptions options, NoteHandler note) const; - void add (boost::shared_ptr asset); + void add (boost::shared_ptr cpl); std::list > cpls () const; - - /** @return All this DCP's assets (note that CPLs are assets) */ - std::list > assets () const { - return _assets; - } + std::list > assets () const; bool encrypted () const; - void add (KDM const &); + void add (DecryptedKDM const &); void write_xml ( Standard standard, @@ -108,7 +108,7 @@ private: XMLMetadata metadata, boost::shared_ptr signer ) const; - + void write_volindex (Standard standard) const; /** Write the ASSETMAP file. @@ -119,8 +119,8 @@ private: /** the directory that we are writing to */ boost::filesystem::path _directory; - /** the assets that make up this DCP */ - std::list > _assets; + /** the CPLs that make up this DCP */ + std::list > _cpls; }; }