Bv2.1 7.2.3: Check that subtitle <StartTime> exists and is 0.
[libdcp.git] / src / data.cc
index 9fcf9601e2c2c51f46b7cefb7f43fc31441bc1b5..23e62573084cbdf4c5d0d8cd3567ce6015b5e5b8 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2015 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2015-2020 Carl Hetherington <cth@carlh.net>
 
     This file is part of libdcp.
 
     files in the program, then also delete it here.
 */
 
+
 #include "data.h"
 #include "util.h"
 #include "exceptions.h"
 #include <cstdio>
 #include <cerrno>
 
-using boost::shared_array;
-using namespace dcp;
-
-Data::Data ()
-       : _size (0)
-{
-
-}
-
-Data::Data (int size)
-       : _data (new uint8_t[size])
-       , _size (size)
-{
-
-}
 
-Data::Data (uint8_t const * data, int size)
-       : _data (new uint8_t[size])
-       , _size (size)
-{
-       memcpy (_data.get(), data, size);
-}
-
-Data::Data (shared_array<uint8_t> data, int size)
-       : _data (data)
-       , _size (size)
-{
-
-}
-
-Data::Data (boost::filesystem::path file)
-{
-       _size = boost::filesystem::file_size (file);
-       _data.reset (new uint8_t[_size]);
-
-       FILE* f = fopen_boost (file, "rb");
-       if (!f) {
-               throw FileError ("could not open file for reading", file, errno);
-       }
-
-       size_t const r = fread (_data.get(), 1, _size, f);
-       if (r != size_t (_size)) {
-               fclose (f);
-               throw FileError ("could not read from file", file, errno);
-       }
+using namespace dcp;
 
-       fclose (f);
-}
 
 void
 Data::write (boost::filesystem::path file) const
@@ -93,14 +49,15 @@ Data::write (boost::filesystem::path file) const
        if (!f) {
                throw FileError ("could not write to file", file, errno);
        }
-       size_t const r = fwrite (_data.get(), 1, _size, f);
-       if (r != size_t (_size)) {
+       size_t const r = fwrite (data(), 1, size(), f);
+       if (r != size_t(size())) {
                fclose (f);
                throw FileError ("could not write to file", file, errno);
        }
        fclose (f);
 }
 
+
 void
 Data::write_via_temp (boost::filesystem::path temp, boost::filesystem::path final) const
 {
@@ -108,8 +65,17 @@ Data::write_via_temp (boost::filesystem::path temp, boost::filesystem::path fina
        boost::filesystem::rename (temp, final);
 }
 
+
 bool
 dcp::operator== (Data const & a, Data const & b)
 {
-       return (a.size() == b.size() && memcmp (a.data().get(), b.data().get(), a.size() == 0));
+       return (a.size() == b.size() && memcmp(a.data(), b.data(), a.size()) == 0);
+}
+
+
+bool
+dcp::operator!= (Data const & a, Data const & b)
+{
+       return (a.size() != b.size() || memcmp(a.data(), b.data(), a.size()) != 0);
 }
+