#include <multifile.h>
Public Member Functions | |
bool | read_subfile (int index, string &result) |
bool | open_read (istream *multifile_stream) |
bool | open_write (ostream *multifile_stream) |
bool | open_read_write (iostream *multifile_stream) |
string | add_subfile (const string &subfile_name, istream *subfile_data, int compression_level) |
bool | extract_subfile_to (int index, ostream &out) |
Private Types | |
typedef ov_set< Subfile *, IndirectLess< Subfile > > | Subfiles |
typedef pvector< Subfile * > | PendingSubfiles |
enum | SubfileFlags { SF_deleted = 0x0001, SF_index_invalid = 0x0002, SF_data_invalid = 0x0004, SF_compressed = 0x0008 } |
Private Member Functions | |
~Multifile () | |
Multifile (const Multifile ©) | |
void | operator= (const Multifile ©) |
bool | open_write (const Filename &multifile_name) |
bool | open_read_write (const Filename &multifile_name) |
void | close () |
INLINE const Filename & | get_multifile_name () const |
INLINE bool | is_read_valid () const |
INLINE bool | is_write_valid () const |
INLINE bool | needs_repack () const |
void | set_scale_factor (size_t scale_factor) |
INLINE size_t | get_scale_factor () const |
string | add_subfile (const string &subfile_name, const Filename &filename, int compression_level) |
bool | flush () |
bool | repack () |
int | get_num_subfiles () const |
int | find_subfile (const string &subfile_name) const |
bool | has_directory (const string &subfile_name) const |
bool | scan_directory (vector_string &contents, const string &subfile_name) const |
void | remove_subfile (int index) |
const string & | get_subfile_name (int index) const |
size_t | get_subfile_length (int index) const |
bool | is_subfile_compressed (int index) const |
size_t | get_subfile_compressed_length (int index) const |
INLINE string | read_subfile (int index) |
istream * | open_read_subfile (int index) |
bool | extract_subfile (int index, const Filename &filename) |
void | output (ostream &out) const |
void | ls (ostream &out=cout) const |
INLINE streampos | word_to_streampos (size_t word) const |
INLINE size_t | streampos_to_word (streampos fpos) const |
INLINE streampos | normalize_streampos (streampos fpos) const |
streampos | pad_to_streampos (streampos fpos) |
string | add_new_subfile (const string &subfile_name, Subfile *subfile, int compression_level) |
void | clear_subfiles () |
bool | read_index () |
bool | write_header () |
Private Attributes | |
PUBLISHED | __pad0__: Multifile() |
PUBLISHED | __pad1__: bool open_read(const Filename &multifile_name) |
Subfiles | _subfiles |
PendingSubfiles | _new_subfiles |
PendingSubfiles | _removed_subfiles |
istream * | _read |
ostream * | _write |
streampos | _next_index |
streampos | _last_index |
bool | _needs_repack |
size_t | _scale_factor |
size_t | _new_scale_factor |
ifstream | _read_file |
ofstream | _write_file |
fstream | _read_write_file |
Filename | _multifile_name |
int | _file_major_ver |
int | _file_minor_ver |
Static Private Attributes | |
const char | _header [] = "pmf\0\n\r" |
const size_t | _header_size = 6 |
const int | _current_major_ver = 1 |
const int | _current_minor_ver = 0 |
Friends | |
class | Subfile |
|
Definition at line 141 of file multifile.h. |
|
Definition at line 139 of file multifile.h. |
|
Definition at line 94 of file multifile.h. |
|
Definition at line 106 of file multifile.cxx. References close(). |
|
Definition at line 116 of file multifile.cxx. |
|
Definition at line 1005 of file multifile.cxx. References Multifile::Subfile::_compression_level, Multifile::Subfile::_flags, Multifile::Subfile::_name, _needs_repack, _new_subfiles, _next_index, _removed_subfiles, _subfiles, ov_set< Subfile *, IndirectLess< Subfile > >::insert(), SF_compressed, and SF_deleted. Referenced by add_subfile(). |
|
Definition at line 939 of file multifile.cxx. References Multifile::Subfile::_source, add_new_subfile(), and is_write_valid(). |
|
Definition at line 303 of file multifile.cxx. References Multifile::Subfile::_source_filename, add_new_subfile(), and is_write_valid(). Referenced by add_directory(), and add_files(). |
|
Definition at line 1059 of file multifile.cxx. References _new_subfiles, _removed_subfiles, _subfiles, _write, and Multifile::Subfile::rewrite_index_flags(). Referenced by close(). |
|
Definition at line 222 of file multifile.cxx. References _file_major_ver, _file_minor_ver, _last_index, _multifile_name, _needs_repack, _new_scale_factor, _next_index, _read, _read_file, _read_write_file, _scale_factor, _write, _write_file, clear_subfiles(), flush(), NULL, and repack(). Referenced by flush(), open_read(), open_read_write(), open_write(), read_index(), repack(), write_header(), and ~Multifile(). |
|
Definition at line 794 of file multifile.cxx. References _subfiles, extract_subfile_to(), index, and is_read_valid(). Referenced by extract_files(). |
|
Definition at line 955 of file multifile.cxx. References _subfiles, index, is_read_valid(), NULL, and open_read_subfile(). Referenced by extract_files(), and extract_subfile(). |
|
Definition at line 546 of file multifile.cxx. References Multifile::Subfile::_name, _subfiles, and find_subfile(). Referenced by find_subfile(), has_directory(), VirtualFileMountMultifile::has_file(), VirtualFileMountMultifile::is_regular_file(), VirtualFileMountMultifile::open_read_file(), Extractor::request_subfile(), and scan_directory(). |
|
Definition at line 339 of file multifile.cxx. References _last_index, _multifile_name, _new_subfiles, _next_index, _read, _removed_subfiles, _write, close(), Multifile::Subfile::is_data_invalid(), is_write_valid(), NULL, pad_to_streampos(), Multifile::Subfile::rewrite_index_data_start(), Multifile::Subfile::rewrite_index_flags(), streampos_to_word(), Multifile::Subfile::write_data(), write_header(), Multifile::Subfile::write_index(), and writer(). Referenced by add_files(), close(), open_read_subfile(), and repack(). |
|
|
|
Definition at line 534 of file multifile.cxx. References _subfiles. Referenced by extract_files(), list_files(), ls(), output(), and Extractor::request_all_subfiles(). |
|
Referenced by add_files(), and list_files(). |
|
Definition at line 713 of file multifile.cxx. References _subfiles, and index. Referenced by list_files(). |
|
Definition at line 685 of file multifile.cxx. References _subfiles, and index. Referenced by list_files(), Extractor::request_all_subfiles(), Extractor::request_subfile(), and Extractor::step(). |
|
Definition at line 668 of file multifile.cxx. References _subfiles, and index. Referenced by extract_files(), list_files(), ls(), and Extractor::step(). |
|
Definition at line 567 of file multifile.cxx. References Multifile::Subfile::_name, _subfiles, and find_subfile(). Referenced by VirtualFileMountMultifile::has_file(), and VirtualFileMountMultifile::is_directory(). |
|
Referenced by extract_subfile(), extract_subfile_to(), open_read_subfile(), read_subfile(), repack(), and set_scale_factor(). |
|
Definition at line 698 of file multifile.cxx. References _subfiles, index, and SF_compressed. Referenced by list_files(). |
|
Referenced by add_subfile(), flush(), remove_subfile(), repack(), and set_scale_factor(). |
|
Definition at line 828 of file multifile.cxx. References get_num_subfiles(), and get_subfile_name(). |
|
Referenced by add_files(), and list_files(). |
|
Referenced by pad_to_streampos(), and read_index(). |
|
Definition at line 875 of file multifile.cxx. References _read, close(), and read_index(). Referenced by extract_files(), list_files(), VirtualFileSystem::mount(), and Extractor::set_multifile(). |
|
Definition at line 741 of file multifile.cxx. References Multifile::Subfile::_data_length, Multifile::Subfile::_data_start, Multifile::Subfile::_flags, _read, Multifile::Subfile::_source, Multifile::Subfile::_source_filename, _subfiles, flush(), index, is_read_valid(), NULL, and SF_compressed. Referenced by extract_subfile_to(), VirtualFileMountMultifile::open_read_file(), read_subfile(), and Extractor::step(). |
|
Definition at line 910 of file multifile.cxx. References _read, _write, close(), and read_index(). |
|
Definition at line 195 of file multifile.cxx. References _multifile_name, _read, _read_write_file, _write, close(), multifile_name, and read_index(). Referenced by add_files(), and repack(). |
|
Definition at line 892 of file multifile.cxx. |
|
Definition at line 169 of file multifile.cxx. References _multifile_name, _write, _write_file, close(), and multifile_name. Referenced by add_files(). |
|
Definition at line 126 of file multifile.cxx. |
|
Definition at line 817 of file multifile.cxx. References _multifile_name, and get_num_subfiles(). |
|
Definition at line 987 of file multifile.cxx. References _write, normalize_streampos(), and NULL. Referenced by flush(), and write_header(). |
|
Definition at line 1087 of file multifile.cxx. References _current_major_ver, _current_minor_ver, _file_major_ver, _file_minor_ver, _header, _header_size, _last_index, _multifile_name, _needs_repack, _new_scale_factor, _next_index, _read, _scale_factor, _subfiles, close(), Multifile::Subfile::is_deleted(), Multifile::Subfile::is_index_invalid(), normalize_streampos(), NULL, Multifile::Subfile::read_index(), reader(), and ov_set< Subfile *, IndirectLess< Subfile > >::sort(). Referenced by open_read(), and open_read_write(). |
|
Definition at line 843 of file multifile.cxx. References _subfiles, index, is_read_valid(), NULL, and open_read_subfile(). |
|
|
|
Definition at line 651 of file multifile.cxx. References Multifile::Subfile::_flags, _needs_repack, _removed_subfiles, _subfiles, index, is_write_valid(), and SF_deleted. |
|
Definition at line 457 of file multifile.cxx. References _last_index, _multifile_name, _new_scale_factor, _new_subfiles, _next_index, _removed_subfiles, _scale_factor, _subfiles, _write, close(), flush(), is_read_valid(), is_write_valid(), and open_read_write(). Referenced by add_files(), and close(). |
|
Definition at line 604 of file multifile.cxx. References Multifile::Subfile::_name, _subfiles, and find_subfile(). Referenced by VirtualFileMountMultifile::scan_directory(). |
|
Definition at line 273 of file multifile.cxx. References _new_scale_factor, _next_index, _scale_factor, is_read_valid(), is_write_valid(), and scale_factor. Referenced by add_files(). |
|
Referenced by flush(), Multifile::Subfile::rewrite_index_data_start(), and Multifile::Subfile::write_index(). |
|
Referenced by Multifile::Subfile::read_index(). |
|
Definition at line 1183 of file multifile.cxx. References _current_major_ver, _current_minor_ver, _header, _header_size, _last_index, _multifile_name, _next_index, _scale_factor, _write, close(), NULL, pad_to_streampos(), and writer(). Referenced by flush(). |
|
Definition at line 167 of file multifile.h. |
|
Definition at line 36 of file multifile.h. |
|
Definition at line 44 of file multifile.h. |
|
Definition at line 37 of file multifile.cxx. Referenced by read_index(), and write_header(). |
|
Definition at line 38 of file multifile.cxx. Referenced by read_index(), and write_header(). |
|
Definition at line 159 of file multifile.h. Referenced by close(), and read_index(). |
|
Definition at line 160 of file multifile.h. Referenced by close(), and read_index(). |
|
Definition at line 31 of file multifile.cxx. Referenced by read_index(), and write_header(). |
|
Definition at line 32 of file multifile.cxx. Referenced by read_index(), and write_header(). |
|
Definition at line 148 of file multifile.h. Referenced by close(), flush(), read_index(), repack(), and write_header(). |
|
Definition at line 157 of file multifile.h. Referenced by close(), flush(), open_read_write(), open_write(), output(), read_index(), repack(), and write_header(). |
|
Definition at line 150 of file multifile.h. Referenced by add_new_subfile(), close(), read_index(), and remove_subfile(). |
|
Definition at line 152 of file multifile.h. Referenced by close(), read_index(), repack(), and set_scale_factor(). |
|
Definition at line 142 of file multifile.h. Referenced by add_new_subfile(), clear_subfiles(), flush(), and repack(). |
|
Definition at line 147 of file multifile.h. Referenced by add_new_subfile(), close(), flush(), read_index(), repack(), set_scale_factor(), and write_header(). |
|
Definition at line 145 of file multifile.h. Referenced by close(), flush(), open_read(), open_read_subfile(), open_read_write(), and read_index(). |
|
Definition at line 154 of file multifile.h. Referenced by close(). |
|
Definition at line 156 of file multifile.h. Referenced by close(), and open_read_write(). |
|
Definition at line 143 of file multifile.h. Referenced by add_new_subfile(), clear_subfiles(), flush(), remove_subfile(), and repack(). |
|
Definition at line 151 of file multifile.h. Referenced by close(), read_index(), repack(), set_scale_factor(), and write_header(). |
|
Definition at line 140 of file multifile.h. Referenced by add_new_subfile(), clear_subfiles(), extract_subfile(), extract_subfile_to(), find_subfile(), get_num_subfiles(), get_subfile_compressed_length(), get_subfile_length(), get_subfile_name(), has_directory(), is_subfile_compressed(), open_read_subfile(), read_index(), read_subfile(), remove_subfile(), repack(), and scan_directory(). |
|
Definition at line 146 of file multifile.h. Referenced by clear_subfiles(), close(), flush(), open_read_write(), open_write(), pad_to_streampos(), repack(), and write_header(). |
|
Definition at line 155 of file multifile.h. Referenced by close(), and open_write(). |