diff options
Diffstat (limited to 'src/util.h')
| -rw-r--r-- | src/util.h | 44 |
1 files changed, 31 insertions, 13 deletions
@@ -1,5 +1,5 @@ /* - Copyright (C) 2012 Carl Hetherington <cth@carlh.net> + Copyright (C) 2012-2014 Carl Hetherington <cth@carlh.net> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,27 +24,31 @@ * @brief Utility methods. */ -#include <string> -#include <stdint.h> +#include "types.h" #include <boost/shared_ptr.hpp> #include <boost/function.hpp> -#include <boost/date_time/posix_time/posix_time.hpp> #include <boost/filesystem.hpp> +#include <boost/optional.hpp> #include <openjpeg.h> -#include "types.h" +#include <string> +#include <stdint.h> namespace xmlpp { class Element; } -namespace libdcp { +namespace dcp { class ARGBFrame; class CertificateChain; class GammaLUT; class XYZFrame; -struct Size { +/** @struct Size + * @brief The integer, two-dimensional size of something. + */ +struct Size +{ Size () : width (0) , height (0) @@ -65,26 +69,40 @@ struct Size { extern bool operator== (Size const & a, Size const & b); extern bool operator!= (Size const & a, Size const & b); +extern std::ostream& operator<< (std::ostream& s, Size const & a); extern std::string make_uuid (); -extern std::string make_digest (std::string filename, boost::function<void (float)> *); +extern std::string make_digest (boost::filesystem::path filename, boost::function<void (float)>); extern std::string content_kind_to_string (ContentKind kind); extern ContentKind content_kind_from_string (std::string kind); extern bool empty_or_white_space (std::string s); extern boost::shared_ptr<XYZFrame> decompress_j2k (uint8_t* data, int64_t size, int reduce); +extern bool ids_equal (std::string a, std::string b); extern void init (); -extern void sign (xmlpp::Element* parent, CertificateChain const & certificates, boost::filesystem::path signer_key, bool interop); +extern void sign (xmlpp::Element* parent, CertificateChain const & certificates, boost::filesystem::path signer_key, Standard standard); extern void add_signature_value (xmlpp::Element* parent, CertificateChain const & certificates, boost::filesystem::path signer_key, std::string const & ns); extern void add_signer (xmlpp::Element* parent, CertificateChain const & certificates, std::string const & ns); extern int base64_decode (std::string const & in, unsigned char* out, int out_length); - -extern std::string tm_to_string (struct tm *); -extern std::string utc_offset_to_string (int); -extern std::string ptime_to_string (boost::posix_time::ptime); +extern boost::optional<boost::filesystem::path> relative_to_root (boost::filesystem::path root, boost::filesystem::path file); extern FILE * fopen_boost (boost::filesystem::path, std::string); + +template <class F, class T> +std::list<boost::shared_ptr<T> > +list_of_type (std::list<boost::shared_ptr<F> > const & from) +{ + std::list<boost::shared_ptr<T> > out; + for (typename std::list<boost::shared_ptr<F> >::const_iterator i = from.begin(); i != from.end(); ++i) { + boost::shared_ptr<T> check = boost::dynamic_pointer_cast<T> (*i); + if (check) { + out.push_back (check); + } + } + + return out; +} } |
