Panda3D
|
A simple file or directory within the VirtualFileSystem: this maps to exactly one file on one mount point. More...
#include "virtualFileSimple.h"
Public Member Functions | |
VirtualFileSimple (VirtualFileMount *mount, const Filename &local_filename, bool implicit_pz_file, int open_flags) | |
virtual bool | atomic_compare_and_exchange_contents (string &orig_contents, const string &old_contents, const string &new_contents) |
See Filename::atomic_compare_and_exchange_contents(). | |
virtual bool | atomic_read_contents (string &contents) const |
See Filename::atomic_read_contents(). | |
virtual void | close_read_file (istream *stream) const |
Closes a file opened by a previous call to open_read_file(). | |
virtual void | close_read_write_file (iostream *stream) |
Closes a file opened by a previous call to open_read_write_file(). | |
virtual void | close_write_file (ostream *stream) |
Closes a file opened by a previous call to open_write_file(). | |
virtual bool | copy_file (VirtualFile *new_file) |
Attempts to copy the contents of this file to the indicated file. | |
virtual bool | delete_file () |
Attempts to delete this file or directory. | |
virtual TypeHandle | force_init_type () |
virtual off_t | get_file_size (istream *stream) const |
Returns the current size on disk (or wherever it is) of the already-open file. | |
virtual off_t | get_file_size () const |
Returns the current size on disk (or wherever it is) of the file before it has been opened. | |
virtual VirtualFileSystem * | get_file_system () const |
Returns the VirtualFileSystem this file is associated with. | |
virtual Filename | get_filename () const |
Returns the full pathname to this file within the virtual file system. | |
VirtualFileMount * | get_mount () const |
Returns the VirtualFileMount this file is associated with. | |
virtual bool | get_system_info (SubfileInfo &info) |
Populates the SubfileInfo structure with the data representing where the file actually resides on disk, if this is knowable. | |
virtual time_t | get_timestamp () const |
Returns a time_t value that represents the time the file was last modified, to within whatever precision the operating system records this information (on a Windows95 system, for instance, this may only be accurate to within 2 seconds). | |
virtual TypeHandle | get_type () const |
virtual bool | has_file () const |
Returns true if this file exists, false otherwise. | |
virtual bool | is_directory () const |
Returns true if this file represents a directory (and scan_directory() may be called), false otherwise. | |
bool | is_implicit_pz_file () const |
Returns true if this file is a .pz file that should be implicitly decompressed on load, or false if it is not a .pz file or if it should not be decompressed. | |
virtual bool | is_regular_file () const |
Returns true if this file represents a regular file (and read_file() may be called), false otherwise. | |
virtual bool | is_writable () const |
Returns true if this file represents a writable regular file (and write_file() may be called), false otherwise. | |
virtual ostream * | open_append_file () |
Works like open_write_file(), but the file is opened in append mode. | |
virtual iostream * | open_read_append_file () |
Works like open_read_write_file(), but the file is opened in append mode. | |
virtual istream * | open_read_file (bool auto_unwrap) const |
Opens the file for reading. | |
virtual iostream * | open_read_write_file (bool truncate) |
Opens the file for writing. | |
virtual ostream * | open_write_file (bool auto_wrap, bool truncate) |
Opens the file for writing. | |
virtual bool | read_file (pvector< unsigned char > &result, bool auto_unwrap) const |
Fills up the indicated pvector with the contents of the file, if it is a regular file. | |
virtual bool | rename_file (VirtualFile *new_file) |
Attempts to move or rename this file or directory. | |
virtual bool | write_file (const unsigned char *data, size_t data_size, bool auto_wrap) |
Writes the indicated data to the file, if it is writable. | |
Static Public Member Functions | |
static TypeHandle | get_class_type () |
static void | init_type () |
This function is declared non-inline to work around a compiler bug in g++ 2.96. | |
Protected Member Functions | |
virtual bool | scan_local_directory (VirtualFileList *file_list, const ov_set< string > &mount_points) const |
Fills file_list up with the list of files that are within this directory, excluding those whose basenames are listed in mount_points. |
A simple file or directory within the VirtualFileSystem: this maps to exactly one file on one mount point.
Most directories, and all regular files, are of this kind.
Definition at line 29 of file virtualFileSimple.h.
bool VirtualFileSimple::atomic_compare_and_exchange_contents | ( | string & | orig_contents, |
const string & | old_contents, | ||
const string & | new_contents | ||
) | [virtual] |
See Filename::atomic_compare_and_exchange_contents().
Reimplemented from VirtualFile.
Definition at line 413 of file virtualFileSimple.cxx.
References VirtualFileMount::atomic_compare_and_exchange_contents().
bool VirtualFileSimple::atomic_read_contents | ( | string & | contents | ) | const [virtual] |
See Filename::atomic_read_contents().
Reimplemented from VirtualFile.
Definition at line 425 of file virtualFileSimple.cxx.
References VirtualFileMount::atomic_read_contents().
void VirtualFileSimple::close_read_file | ( | istream * | stream | ) | const [virtual] |
Closes a file opened by a previous call to open_read_file().
This really just deletes the istream pointer, but it is recommended to use this interface instead of deleting it explicitly, to help work around compiler issues.
Reimplemented from VirtualFile.
Definition at line 250 of file virtualFileSimple.cxx.
References VirtualFileMount::close_read_file().
Referenced by copy_file().
void VirtualFileSimple::close_read_write_file | ( | iostream * | stream | ) | [virtual] |
Closes a file opened by a previous call to open_read_write_file().
This really just deletes the iostream pointer, but it is recommended to use this interface instead of deleting it explicitly, to help work around compiler issues.
Reimplemented from VirtualFile.
Definition at line 344 of file virtualFileSimple.cxx.
References VirtualFileMount::close_read_write_file().
void VirtualFileSimple::close_write_file | ( | ostream * | stream | ) | [virtual] |
Closes a file opened by a previous call to open_write_file().
This really just deletes the ostream pointer, but it is recommended to use this interface instead of deleting it explicitly, to help work around compiler issues.
Reimplemented from VirtualFile.
Definition at line 304 of file virtualFileSimple.cxx.
References VirtualFileMount::close_write_file().
bool VirtualFileSimple::copy_file | ( | VirtualFile * | new_file | ) | [virtual] |
Attempts to copy the contents of this file to the indicated file.
Returns true on success, false on failure.
Reimplemented from VirtualFile.
Definition at line 166 of file virtualFileSimple.cxx.
References close_read_file(), VirtualFile::close_write_file(), VirtualFileMount::copy_file(), VirtualFile::delete_file(), TypedObject::is_of_type(), open_read_file(), and VirtualFile::open_write_file().
Referenced by rename_file().
bool VirtualFileSimple::delete_file | ( | ) | [virtual] |
Attempts to delete this file or directory.
This can remove a single file or an empty directory. It will not remove a nonempty directory. Returns true on success, false on failure.
Reimplemented from VirtualFile.
Definition at line 111 of file virtualFileSimple.cxx.
References VirtualFileMount::delete_file().
Referenced by rename_file().
off_t VirtualFileSimple::get_file_size | ( | istream * | stream | ) | const [virtual] |
Returns the current size on disk (or wherever it is) of the already-open file.
Pass in the stream that was returned by open_read_file(); some implementations may require this stream to determine the size.
Reimplemented from VirtualFile.
Definition at line 358 of file virtualFileSimple.cxx.
off_t VirtualFileSimple::get_file_size | ( | ) | const [virtual] |
Returns the current size on disk (or wherever it is) of the file before it has been opened.
Reimplemented from VirtualFile.
Definition at line 369 of file virtualFileSimple.cxx.
VirtualFileSystem * VirtualFileSimple::get_file_system | ( | ) | const [virtual] |
Returns the VirtualFileSystem this file is associated with.
Implements VirtualFile.
Definition at line 29 of file virtualFileSimple.cxx.
References VirtualFileMount::get_file_system().
Filename VirtualFileSimple::get_filename | ( | ) | const [virtual] |
Returns the full pathname to this file within the virtual file system.
Implements VirtualFile.
Definition at line 40 of file virtualFileSimple.cxx.
References Filename::get_fullpath(), and VirtualFileMount::get_mount_point().
VirtualFileMount * VirtualFileSimple::get_mount | ( | ) | const [inline] |
Returns the VirtualFileMount this file is associated with.
Definition at line 38 of file virtualFileSimple.I.
bool VirtualFileSimple::get_system_info | ( | SubfileInfo & | info | ) | [virtual] |
Populates the SubfileInfo structure with the data representing where the file actually resides on disk, if this is knowable.
Returns true if the file might reside on disk, and the info is populated, or false if it does not (or it is not known where the file resides), in which case the info is meaningless.
Reimplemented from VirtualFile.
Definition at line 403 of file virtualFileSimple.cxx.
References VirtualFileMount::get_system_info().
time_t VirtualFileSimple::get_timestamp | ( | ) | const [virtual] |
Returns a time_t value that represents the time the file was last modified, to within whatever precision the operating system records this information (on a Windows95 system, for instance, this may only be accurate to within 2 seconds).
If the timestamp cannot be determined, either because it is not supported by the operating system or because there is some error (such as file not found), returns 0.
Reimplemented from VirtualFile.
Definition at line 388 of file virtualFileSimple.cxx.
bool VirtualFileSimple::has_file | ( | ) | const [virtual] |
Returns true if this file exists, false otherwise.
Reimplemented from VirtualFile.
Definition at line 64 of file virtualFileSimple.cxx.
static void VirtualFileSimple::init_type | ( | ) | [inline, static] |
This function is declared non-inline to work around a compiler bug in g++ 2.96.
Making it inline seems to cause problems in the optimizer.
Reimplemented from VirtualFile.
Definition at line 94 of file virtualFileSimple.h.
References VirtualFile::init_type().
bool VirtualFileSimple::is_directory | ( | ) | const [virtual] |
Returns true if this file represents a directory (and scan_directory() may be called), false otherwise.
Reimplemented from VirtualFile.
Definition at line 75 of file virtualFileSimple.cxx.
bool VirtualFileSimple::is_implicit_pz_file | ( | ) | const [inline] |
Returns true if this file is a .pz file that should be implicitly decompressed on load, or false if it is not a .pz file or if it should not be decompressed.
Definition at line 50 of file virtualFileSimple.I.
bool VirtualFileSimple::is_regular_file | ( | ) | const [virtual] |
Returns true if this file represents a regular file (and read_file() may be called), false otherwise.
Reimplemented from VirtualFile.
Definition at line 86 of file virtualFileSimple.cxx.
Referenced by rename_file().
bool VirtualFileSimple::is_writable | ( | ) | const [virtual] |
Returns true if this file represents a writable regular file (and write_file() may be called), false otherwise.
Reimplemented from VirtualFile.
Definition at line 98 of file virtualFileSimple.cxx.
References VirtualFileMount::is_writable().
ostream * VirtualFileSimple::open_append_file | ( | ) | [virtual] |
Works like open_write_file(), but the file is opened in append mode.
Like open_write_file, the returned pointer should eventually be passed to close_write_file().
Reimplemented from VirtualFile.
Definition at line 290 of file virtualFileSimple.cxx.
References VirtualFileMount::open_append_file().
iostream * VirtualFileSimple::open_read_append_file | ( | ) | [virtual] |
Works like open_read_write_file(), but the file is opened in append mode.
Like open_read_write_file, the returned pointer should eventually be passed to close_read_write_file().
Reimplemented from VirtualFile.
Definition at line 330 of file virtualFileSimple.cxx.
References VirtualFileMount::open_read_append_file().
istream * VirtualFileSimple::open_read_file | ( | bool | auto_unwrap | ) | const [virtual] |
Opens the file for reading.
Returns a newly allocated istream on success (which you should eventually delete when you are done reading). Returns NULL on failure.
If auto_unwrap is true, an explicitly-named .pz file is automatically decompressed and the decompressed contents are returned. This is different than vfs-implicit-pz, which will automatically decompress a file if the extension .pz is *not* given.
Reimplemented from VirtualFile.
Definition at line 226 of file virtualFileSimple.cxx.
References Filename::get_extension(), and Filename::set_binary().
Referenced by copy_file().
iostream * VirtualFileSimple::open_read_write_file | ( | bool | truncate | ) | [virtual] |
Opens the file for writing.
Returns a newly allocated iostream on success (which you should eventually delete when you are done writing). Returns NULL on failure.
Reimplemented from VirtualFile.
Definition at line 317 of file virtualFileSimple.cxx.
References VirtualFileMount::open_read_write_file().
ostream * VirtualFileSimple::open_write_file | ( | bool | auto_wrap, |
bool | truncate | ||
) | [virtual] |
Opens the file for writing.
Returns a newly allocated ostream on success (which you should eventually delete when you are done writing). Returns NULL on failure.
If auto_wrap is true, an explicitly-named .pz file is automatically compressed while writing. If truncate is true, the file is truncated to zero length before writing.
Reimplemented from VirtualFile.
Definition at line 268 of file virtualFileSimple.cxx.
References Filename::get_extension(), VirtualFileMount::open_write_file(), and Filename::set_binary().
bool VirtualFileSimple::read_file | ( | pvector< unsigned char > & | result, |
bool | auto_unwrap | ||
) | const [virtual] |
Fills up the indicated pvector with the contents of the file, if it is a regular file.
Returns true on success, false otherwise.
Reimplemented from VirtualFile.
Definition at line 437 of file virtualFileSimple.cxx.
References Filename::get_extension(), VirtualFileMount::read_file(), and Filename::set_binary().
bool VirtualFileSimple::rename_file | ( | VirtualFile * | new_file | ) | [virtual] |
Attempts to move or rename this file or directory.
If the original file is an ordinary file, it will quietly replace any already-existing file in the new filename (but not a directory). If the original file is a directory, the new filename must not already exist.
If the file is a directory, the new filename must be within the same mount point. If the file is an ordinary file, the new filename may be anywhere; but if it is not within the same mount point then the rename operation is automatically performed as a two-step copy-and-delete operation.
Reimplemented from VirtualFile.
Definition at line 133 of file virtualFileSimple.cxx.
References copy_file(), delete_file(), VirtualFile::delete_file(), VirtualFile::is_directory(), TypedObject::is_of_type(), is_regular_file(), and VirtualFileMount::rename_file().
bool VirtualFileSimple::scan_local_directory | ( | VirtualFileList * | file_list, |
const ov_set< string > & | mount_points | ||
) | const [protected, virtual] |
Fills file_list up with the list of files that are within this directory, excluding those whose basenames are listed in mount_points.
Returns true if successful, false if the file is not a directory or the directory cannot be read.
Reimplemented from VirtualFile.
Definition at line 481 of file virtualFileSimple.cxx.
References VirtualFileList::add_file(), and ordered_vector< Key, Compare >::end().
bool VirtualFileSimple::write_file | ( | const unsigned char * | data, |
size_t | data_size, | ||
bool | auto_wrap | ||
) | [virtual] |
Writes the indicated data to the file, if it is writable.
Returns true on success, false otherwise.
Reimplemented from VirtualFile.
Definition at line 458 of file virtualFileSimple.cxx.
References Filename::get_extension(), Filename::set_binary(), and VirtualFileMount::write_file().