#include "object.h"
#include "types.h"
+#include "util.h"
#include "certificate_chain.h"
#include <libcxml/cxml.h>
#include <boost/filesystem.hpp>
return _standard;
}
+ boost::optional<std::string> hash (std::string id) const;
+ boost::optional<std::string> type (std::string id) const;
+
void add_asset (std::string id, boost::optional<std::string> annotation_text, std::string hash, int64_t size, std::string type);
void write (boost::filesystem::path file, boost::shared_ptr<const CertificateChain> signer) const;
+ /** @return the most recent disk file used to read or write this PKL, if there is one */
+ boost::optional<boost::filesystem::path> file () const {
+ return _file;
+ }
+
private:
class Asset : public Object
{
public:
Asset (cxml::ConstNodePtr node)
- : annotation_text (node->optional_string_child("AnnotationText"))
+ : Object (remove_urn_uuid(node->string_child("Id")))
+ , annotation_text (node->optional_string_child("AnnotationText"))
, hash (node->string_child("Hash"))
, size (node->number_child<int64_t>("Size"))
, type (node->string_child("Type"))
std::string _issuer;
std::string _creator;
std::list<boost::shared_ptr<Asset> > _asset_list;
+ /** The most recent disk file used to read or write this PKL */
+ mutable boost::optional<boost::filesystem::path> _file;
};
}