diff options
Diffstat (limited to 'src/array_data.cc')
| -rw-r--r-- | src/array_data.cc | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/array_data.cc b/src/array_data.cc index a6f73868..61e79395 100644 --- a/src/array_data.cc +++ b/src/array_data.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2015-2020 Carl Hetherington <cth@carlh.net> + Copyright (C) 2015-2021 Carl Hetherington <cth@carlh.net> This file is part of libdcp. @@ -31,21 +31,25 @@ files in the program, then also delete it here. */ + #include "array_data.h" #include "util.h" #include "exceptions.h" #include <cstdio> #include <cerrno> + using boost::shared_array; using namespace dcp; + ArrayData::ArrayData () : _size (0) { } + ArrayData::ArrayData (int size) : _data (new uint8_t[size]) , _size (size) @@ -53,6 +57,7 @@ ArrayData::ArrayData (int size) } + ArrayData::ArrayData (uint8_t const * data, int size) : _data (new uint8_t[size]) , _size (size) @@ -60,6 +65,7 @@ ArrayData::ArrayData (uint8_t const * data, int size) memcpy (_data.get(), data, size); } + ArrayData::ArrayData (shared_array<uint8_t> data, int size) : _data (data) , _size (size) @@ -67,21 +73,20 @@ ArrayData::ArrayData (shared_array<uint8_t> data, int size) } + ArrayData::ArrayData (boost::filesystem::path file) { _size = boost::filesystem::file_size (file); _data.reset (new uint8_t[_size]); - FILE* f = fopen_boost (file, "rb"); + auto 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); + auto const r = fread (_data.get(), 1, _size, f); + fclose (f); + if (r != static_cast<size_t>(_size)) { throw FileError ("could not read from file", file, errno); } - - fclose (f); } |
