libdcp
util.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2012-2021 Carl Hetherington <cth@carlh.net>
3 
4  This file is part of libdcp.
5 
6  libdcp is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10 
11  libdcp is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with libdcp. If not, see <http://www.gnu.org/licenses/>.
18 
19  In addition, as a special exception, the copyright holders give
20  permission to link the code of portions of this program with the
21  OpenSSL library under certain conditions as described in each
22  individual source file, and distribute linked combinations
23  including the two.
24 
25  You must obey the GNU General Public License in all respects
26  for all of the code used other than OpenSSL. If you modify
27  file(s) with this exception, you may extend this exception to your
28  version of the file(s), but you are not obligated to do so. If you
29  do not wish to do so, delete this exception statement from your
30  version. If you delete this exception statement from all source
31  files in the program, then also delete it here.
32 */
33 
34 
40 #ifndef LIBDCP_UTIL_H
41 #define LIBDCP_UTIL_H
42 
43 
44 #include "array_data.h"
45 #include "local_time.h"
46 #include "types.h"
47 LIBDCP_DISABLE_WARNINGS
48 #include <asdcp/KM_log.h>
49 LIBDCP_ENABLE_WARNINGS
50 #include <boost/filesystem.hpp>
51 #include <boost/function.hpp>
52 #include <boost/optional.hpp>
53 #include <memory>
54 #include <string>
55 #include <stdint.h>
56 
57 
58 #define LIBDCP_UNUSED(x) (void)(x)
59 
60 
61 namespace xmlpp {
62  class Element;
63  class Node;
64 }
65 
66 
67 namespace dcp {
68 
69 
70 class CertificateChain;
71 class GammaLUT;
72 class OpenJPEGImage;
73 
74 
75 extern std::string make_uuid ();
76 
83 extern std::string make_digest (boost::filesystem::path filename, boost::function<void (float)>);
84 
85 extern std::string make_digest (ArrayData data);
86 
90 extern bool empty_or_white_space (std::string s);
91 
92 extern bool ids_equal (std::string a, std::string b);
93 extern std::string remove_urn_uuid (std::string raw);
94 
103 extern void init (boost::optional<boost::filesystem::path> resources_directory = boost::optional<boost::filesystem::path>());
104 
114 extern int base64_decode (std::string const & in, unsigned char* out, int out_length);
115 
116 extern boost::optional<boost::filesystem::path> relative_to_root (boost::filesystem::path root, boost::filesystem::path file);
117 
126 extern FILE * fopen_boost (boost::filesystem::path, std::string);
127 
128 extern std::string file_to_string (boost::filesystem::path, uintmax_t max_length = 1048576);
129 
133 extern std::string private_key_fingerprint (std::string key);
134 extern xmlpp::Node* find_child (xmlpp::Node const * node, std::string name);
135 extern std::string openjpeg_version();
136 extern std::string spaces (int n);
137 extern void indent (xmlpp::Element* element, int initial);
138 
142 extern bool day_less_than_or_equal (LocalTime a, LocalTime b);
143 
148 
152 extern std::string unique_string (std::vector<std::string> existing, std::string base);
153 
154 extern ASDCP::Dictionary const* asdcp_smpte_dict;
155 
156 extern boost::filesystem::path directory_containing_executable ();
157 extern boost::filesystem::path resources_directory ();
158 
159 
161 {
162 public:
165 
166 private:
167  Kumu::LogEntryList _log;
168  Kumu::ILogSink& _old;
169  Kumu::EntryListLogSink* _sink;
170 };
171 
172 
173 }
174 
175 
176 #endif
ArrayData class.
Class to hold an arbitrary block of data.
Definition: array_data.h:55
A representation of a local time (down to the second), including its offset from GMT (equivalent to x...
Definition: local_time.h:64
LocalTime class.
Namespace for everything in libdcp.
Definition: array_data.h:50
std::string unique_string(std::vector< std::string > existing, std::string base)
Definition: util.cc:413
bool empty_or_white_space(std::string s)
Definition: util.cc:161
void init(boost::optional< boost::filesystem::path > resources_directory=boost::optional< boost::filesystem::path >())
int base64_decode(std::string const &in, unsigned char *out, int out_length)
Definition: util.cc:206
std::string private_key_fingerprint(std::string key)
Definition: util.cc:305
std::string make_digest(boost::filesystem::path filename, boost::function< void(float)>)
bool day_less_than_or_equal(LocalTime a, LocalTime b)
Definition: util.cc:383
FILE * fopen_boost(boost::filesystem::path, std::string)
Definition: util.cc:232
bool day_greater_than_or_equal(LocalTime a, LocalTime b)
Definition: util.cc:398
Miscellaneous types.