X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Ffile_group.cc;h=5cfe021192ec9d3adf86150280fd849dab4fa98d;hb=b048889b399367bf0fc8b905c7c0cf436d629f57;hp=9d042554c5b8c0649385456895d0358d813a7b0c;hpb=1d49c6b90bc8f6a0e5e7ff0a2e7aeae3e3043a6d;p=dcpomatic.git diff --git a/src/lib/file_group.cc b/src/lib/file_group.cc index 9d042554c..5cfe02119 100644 --- a/src/lib/file_group.cc +++ b/src/lib/file_group.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2013 Carl Hetherington + Copyright (C) 2013-2014 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,15 +17,21 @@ */ +/** @file src/lib/file_group.cc + * @brief FileGroup class. + */ + #include #include #include "file_group.h" #include "exceptions.h" #include "cross.h" +#include using std::vector; using std::cout; +/** Construct a FileGroup with no files */ FileGroup::FileGroup () : _current_path (0) , _current_file (0) @@ -33,14 +39,17 @@ FileGroup::FileGroup () } +/** Construct a FileGroup with a single file */ FileGroup::FileGroup (boost::filesystem::path p) : _current_path (0) , _current_file (0) { _paths.push_back (p); + ensure_open_path (0); seek (0, SEEK_SET); } +/** Construct a FileGroup with multiple files */ FileGroup::FileGroup (vector const & p) : _paths (p) , _current_path (0) @@ -50,6 +59,7 @@ FileGroup::FileGroup (vector const & p) seek (0, SEEK_SET); } +/** Destroy a FileGroup, closing any open file */ FileGroup::~FileGroup () { if (_current_file) { @@ -73,7 +83,7 @@ FileGroup::ensure_open_path (size_t p) const /* Already open */ return; } - + if (_current_file) { fclose (_current_file); } @@ -102,9 +112,9 @@ FileGroup::seek (int64_t pos, int whence) const } #ifdef DCPOMATIC_WINDOWS full_pos += _ftelli64 (_current_file); -#else +#else full_pos += ftell (_current_file); -#endif +#endif full_pos += pos; break; case SEEK_END: @@ -142,7 +152,7 @@ int FileGroup::read (uint8_t* buffer, int amount) const { int read = 0; - while (1) { + while (true) { int const this_time = fread (buffer + read, 1, amount - read, _current_file); read += this_time; if (read == amount) { @@ -160,6 +170,7 @@ FileGroup::read (uint8_t* buffer, int amount) const return read; } +/** @return Combined length of all the files */ int64_t FileGroup::length () const {