#include <openssl/sha.h>
#include <boost/filesystem.hpp>
#include <boost/algorithm/string.hpp>
+#include <boost/foreach.hpp>
#include <stdexcept>
#include <iostream>
#include <iomanip>
{
return opj_version ();
}
+
+string
+dcp::spaces (int n)
+{
+ string s = "";
+ for (int i = 0; i < n; ++i) {
+ s += " ";
+ }
+ return s;
+}
+
+void
+dcp::indent (xmlpp::Element* element, int initial)
+{
+ xmlpp::Node* last = 0;
+ BOOST_FOREACH (xmlpp::Node * n, element->get_children()) {
+ xmlpp::Element* e = dynamic_cast<xmlpp::Element*>(n);
+ if (e) {
+ element->add_child_text_before (e, "\n" + spaces(initial + 2));
+ indent (e, initial + 2);
+ last = n;
+ }
+ }
+ if (last) {
+ element->add_child_text (last, "\n" + spaces(initial));
+ }
+}
+
+/** @return true if the day represented by \ref a is less than or
+ * equal to the one represented by \ref b, ignoring the time parts.
+ */
+bool
+dcp::day_less_than_or_equal (struct tm a, LocalTime b)
+{
+ if ((a.tm_year + 1900) != b.year()) {
+ return (a.tm_year + 1900) < b.year();
+ }
+
+ if ((a.tm_mon + 1) != b.month()) {
+ return (a.tm_mon + 1) < b.month();
+ }
+
+ return a.tm_mday <= b.day();
+}
+
+/** @return true if the day represented by \ref a is greater than or
+ * equal to the one represented by \ref b, ignoring the time parts.
+ */
+bool
+dcp::day_greater_than_or_equal (struct tm a, LocalTime b)
+{
+ if ((a.tm_year + 1900) != b.year()) {
+ return (a.tm_year + 1900) > b.year();
+ }
+
+ if ((a.tm_mon + 1) != b.month()) {
+ return (a.tm_mon + 1) > b.month();
+ }
+
+ return a.tm_mday >= b.day();
+}