Add SMPTE Bv2.1 ExtensionMetadata.
[libdcp.git] / src / asset.h
index 1871b7ee399120be05e7476b3477e3dc64907368..e2052d8a13948baca82149568f60267f0cbccc71 100644 (file)
@@ -40,9 +40,9 @@
 
 #include "object.h"
 #include "types.h"
+#include "pkl.h"
 #include <boost/filesystem.hpp>
 #include <boost/function.hpp>
-#include <boost/bind.hpp>
 #include <boost/optional.hpp>
 
 namespace xmlpp {
@@ -75,16 +75,12 @@ public:
        /** Write details of the asset to a ASSETMAP.
         *  @param node Parent node.
         */
-       void write_to_assetmap (xmlpp::Node* node, boost::filesystem::path root) const;
+       virtual void write_to_assetmap (xmlpp::Node* node, boost::filesystem::path root) const;
 
-       /** Write details of the asset to a PKL AssetList node.
-        *  @param node Parent node.
-        *  @param standard Standard to use.
-        */
-       void write_to_pkl (xmlpp::Node* node, boost::filesystem::path root, Standard standard) const;
+       virtual void add_to_pkl (boost::shared_ptr<PKL> pkl, boost::filesystem::path root) const;
 
-       /** @return the most recent disk file used to read or write this asset; may be empty */
-       boost::filesystem::path file () const {
+       /** @return the most recent disk file used to read or write this asset, if there is one */
+       boost::optional<boost::filesystem::path> file () const {
                return _file;
        }
 
@@ -97,12 +93,15 @@ public:
 
 protected:
 
-       /** The most recent disk file used to read or write this asset; may be empty */
-       mutable boost::filesystem::path _file;
+       /** The most recent disk file used to read or write this asset */
+       mutable boost::optional<boost::filesystem::path> _file;
+
+       static void write_file_to_assetmap (xmlpp::Node* node, boost::filesystem::path root, boost::filesystem::path file, std::string id);
 
 private:
        friend struct ::asset_test;
 
+       /** @return type string for PKLs for this asset */
        virtual std::string pkl_type (Standard standard) const = 0;
 
        /** Hash of _file if it has been computed */