X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Ffile_group.h;h=aac72c2288ef1d394bd681059c8d2e07adfdbf3f;hb=0232d80a625b2ffae687e6473ab3fc2603cf87ea;hp=9521da7ec88c85b016dc2ef6889030d7c048a97a;hpb=8963f0007af1a312017b9627c18b82ec2a577591;p=dcpomatic.git diff --git a/src/lib/file_group.h b/src/lib/file_group.h index 9521da7ec..aac72c228 100644 --- a/src/lib/file_group.h +++ b/src/lib/file_group.h @@ -28,7 +28,9 @@ #define DCPOMATIC_FILE_GROUP_H +#include #include +#include #include @@ -41,15 +43,24 @@ public: FileGroup (); explicit FileGroup (boost::filesystem::path); explicit FileGroup (std::vector const &); - ~FileGroup (); FileGroup (FileGroup const&) = delete; FileGroup& operator= (FileGroup const&) = delete; void set_paths (std::vector const &); + struct Result { + Result(int bytes_read_, bool eof_) + : bytes_read(bytes_read_) + , eof(eof_) + {} + + int bytes_read = 0; + bool eof = false; + }; + int64_t seek (int64_t, int) const; - int read (uint8_t*, int) const; + Result read (uint8_t*, int) const; int64_t length () const; private: @@ -58,7 +69,7 @@ private: std::vector _paths; /** Index of path that we are currently reading from */ mutable size_t _current_path = 0; - mutable FILE* _current_file = nullptr; + mutable boost::optional _current_file; mutable size_t _current_size = 0; mutable int64_t _position = 0; };