More licence fixups.
[libdcp.git] / src / data.h
1 /*
2     Copyright (C) 2015 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
20 #ifndef LIBDCP_DATA_H
21 #define LIBDCP_DATA_H
22
23 #include <boost/shared_array.hpp>
24 #include <boost/filesystem.hpp>
25 #include <stdint.h>
26
27 namespace dcp {
28
29 class Data
30 {
31 public:
32         Data ();
33         Data (int size);
34         Data (uint8_t const * data, int size);
35         Data (boost::shared_array<uint8_t> data, int size);
36         Data (boost::filesystem::path file);
37
38         virtual ~Data () {}
39
40         void write (boost::filesystem::path file) const;
41         void write_via_temp (boost::filesystem::path temp, boost::filesystem::path final) const;
42
43         boost::shared_array<uint8_t> data () const {
44                 return _data;
45         }
46
47         int size () const {
48                 return _size;
49         }
50
51         void set_size (int s) {
52                 _size = s;
53         }
54
55 private:
56         boost::shared_array<uint8_t> _data;
57         /** amount of `valid' data in _data; the array may be larger */
58         int _size;
59 };
60
61 }
62
63 #endif