Separate time -> string functions out.
authorCarl Hetherington <cth@carlh.net>
Wed, 18 Sep 2013 07:18:40 +0000 (08:18 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 18 Sep 2013 07:18:40 +0000 (08:18 +0100)
src/metadata.cc
src/metadata.h
src/util.cc
src/util.h
test/utc_offset_to_string_test.cc

index bcf5d76c62c659940d6cf7116b11a94b7b645c24..acbc3b2ed36fb7bcdc07084d5cd684f28cdb3451 100644 (file)
@@ -28,6 +28,7 @@
 #include <windows.h>
 #endif
 #include "metadata.h"
+#include "util.h"
 
 using namespace std;
 using namespace libdcp;
@@ -51,45 +52,7 @@ XMLMetadata::XMLMetadata ()
 void
 XMLMetadata::set_issue_date_now ()
 {
-       char buffer[64];
        time_t now = time (0);
        struct tm* tm = localtime (&now);
-       strftime (buffer, 64, "%Y-%m-%dT%I:%M:%S", tm);
-
-       int offset = 0;
-
-#ifdef LIBDCP_POSIX
-
-       offset = tm->tm_gmtoff / 60;
-       
-#else
-       TIME_ZONE_INFORMATION tz;
-       GetTimeZoneInformation (&tz);
-       offset = tz.Bias;
-#endif
-       
-       issue_date = string (buffer) + utc_offset_to_string (offset);
-}
-
-/** @param b Offset from UTC to local time in minutes.
- *  @return string of the form e.g. -01:00.
- */
-string
-XMLMetadata::utc_offset_to_string (int b)
-{
-       bool const negative = (b < 0);
-       b = negative ? -b : b;
-
-       int const hours = b / 60;
-       int const minutes = b % 60;
-
-       stringstream o;
-       if (negative) {
-               o << "-";
-       } else {
-               o << "+";
-       }
-
-       o << setw(2) << setfill('0') << hours << ":" << setw(2) << setfill('0') << minutes;
-       return o.str ();
+       issue_date = tm_to_string (tm);
 }
index d71537fdc4c79b53b9def2f0113d009425c07711..b4c0896dab1efe20d2bc2c56dc1e1f9d2cd248ac 100644 (file)
@@ -51,11 +51,6 @@ public:
        std::string issuer;
        std::string creator;
        std::string issue_date;
-
-private:
-       friend class ::utc_offset_to_string_test;
-       
-       static std::string utc_offset_to_string (int);
 };
 
 }
index d7b4f9809dd58288f539e12386502cb22db74bae..4035ffd1840806f6d82eb7724d1f37dc15167b8f 100644 (file)
@@ -50,6 +50,8 @@ using std::stringstream;
 using std::min;
 using std::max;
 using std::list;
+using std::setw;
+using std::setfill;
 using boost::shared_ptr;
 using boost::lexical_cast;
 using namespace libdcp;
@@ -368,3 +370,45 @@ libdcp::base64_decode (string const & in, unsigned char* out, int out_length)
 
        return N;
 }
+
+string
+libdcp::tm_to_string (struct tm* tm)
+{
+       char buffer[64];
+       strftime (buffer, 64, "%Y-%m-%dT%I:%M:%S", tm);
+
+       int offset = 0;
+
+#ifdef LIBDCP_POSIX
+       offset = tm->tm_gmtoff / 60;
+#else
+       TIME_ZONE_INFORMATION tz;
+       GetTimeZoneInformation (&tz);
+       offset = tz.Bias;
+#endif
+       
+       return string (buffer) + utc_offset_to_string (offset);
+}
+
+/** @param b Offset from UTC to local time in minutes.
+ *  @return string of the form e.g. -01:00.
+ */
+string
+libdcp::utc_offset_to_string (int b)
+{
+       bool const negative = (b < 0);
+       b = negative ? -b : b;
+
+       int const hours = b / 60;
+       int const minutes = b % 60;
+
+       stringstream o;
+       if (negative) {
+               o << "-";
+       } else {
+               o << "+";
+       }
+
+       o << setw(2) << setfill('0') << hours << ":" << setw(2) << setfill('0') << minutes;
+       return o.str ();
+}
index 586d197f73f2e5a9fa4979d66b8fc49198eb8dd6..8001559309ca3dbdd4fdf6a5970d1f089a9d010c 100644 (file)
@@ -75,6 +75,9 @@ extern void add_signer (xmlpp::Element* parent, CertificateChain const & certifi
 
 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);
+       
 }
 
 #endif
index 6ea597f0e6dfbff5c6a0b0dbd190d35cc79eef6b..ad1d124975d42fe68f57fd2da871ca78714c804c 100644 (file)
@@ -22,9 +22,9 @@
 /** Test XMLMetadata::utc_offset_to_string */
 BOOST_AUTO_TEST_CASE (utc_offset_to_string_test)
 {
-       BOOST_CHECK_EQUAL (libdcp::XMLMetadata::utc_offset_to_string (30), "+00:30");
-       BOOST_CHECK_EQUAL (libdcp::XMLMetadata::utc_offset_to_string (60), "+01:00");
-       BOOST_CHECK_EQUAL (libdcp::XMLMetadata::utc_offset_to_string (61), "+01:01");
-       BOOST_CHECK_EQUAL (libdcp::XMLMetadata::utc_offset_to_string (7 * 60), "+07:00");
-       BOOST_CHECK_EQUAL (libdcp::XMLMetadata::utc_offset_to_string (-11 * 60), "-11:00");
+       BOOST_CHECK_EQUAL (libdcp::utc_offset_to_string (30), "+00:30");
+       BOOST_CHECK_EQUAL (libdcp::utc_offset_to_string (60), "+01:00");
+       BOOST_CHECK_EQUAL (libdcp::utc_offset_to_string (61), "+01:01");
+       BOOST_CHECK_EQUAL (libdcp::utc_offset_to_string (7 * 60), "+07:00");
+       BOOST_CHECK_EQUAL (libdcp::utc_offset_to_string (-11 * 60), "-11:00");
 }