Panda3D
|
The abstract base class for a mount definition used within a VirtualFileSystem. More...
#include "virtualFileMount.h"
Public Member Functions | |
virtual bool | atomic_compare_and_exchange_contents (const Filename &file, string &orig_contents, const string &old_contents, const string &new_contents) |
See Filename::atomic_compare_and_exchange_contents(). More... | |
virtual bool | atomic_read_contents (const Filename &file, string &contents) const |
See Filename::atomic_read_contents(). More... | |
virtual void | close_read_file (istream *stream) const |
Closes a file opened by a previous call to open_read_file(). More... | |
virtual void | close_read_write_file (iostream *stream) |
Closes a file opened by a previous call to open_read_write_file(). More... | |
virtual void | close_write_file (ostream *stream) |
Closes a file opened by a previous call to open_write_file(). More... | |
virtual bool | copy_file (const Filename &orig_filename, const Filename &new_filename) |
Attempts to copy the contents of the indicated file to the indicated file. More... | |
virtual bool | create_file (const Filename &file) |
Attempts to create the indicated file within the mount, if it does not already exist. More... | |
virtual bool | delete_file (const Filename &file) |
Attempts to delete the indicated file or directory within the mount. More... | |
virtual TypeHandle | force_init_type () |
virtual streamsize | get_file_size (const Filename &file, istream *stream) const =0 |
virtual streamsize | get_file_size (const Filename &file) const =0 |
VirtualFileSystem * | get_file_system () const |
Returns the file system this mount object is attached to. More... | |
int | get_mount_flags () const |
Returns the set of flags passed by the user to the VirtualFileSystem::mount() command. More... | |
const Filename & | get_mount_point () const |
Returns the name of the directory within the virtual file system that this mount object is attached to. More... | |
virtual bool | get_system_info (const Filename &file, SubfileInfo &info) |
Populates the SubfileInfo structure with the data representing where the file actually resides on disk, if this is knowable. More... | |
virtual time_t | get_timestamp (const Filename &file) const =0 |
virtual TypeHandle | get_type () const |
virtual bool | has_file (const Filename &file) const =0 |
virtual bool | is_directory (const Filename &file) const =0 |
virtual bool | is_regular_file (const Filename &file) const =0 |
virtual bool | is_writable (const Filename &file) const |
Returns true if the named file or directory may be written to, false otherwise. More... | |
virtual bool | make_directory (const Filename &file) |
Attempts to create the indicated file within the mount, if it does not already exist. More... | |
virtual PointerTo< VirtualFile > | make_virtual_file (const Filename &local_filename, const Filename &original_filename, bool implicit_pz_file, int open_flags) |
Constructs and returns a new VirtualFile instance that corresponds to the indicated filename within this mount point. More... | |
virtual ostream * | open_append_file (const Filename &file) |
Works like open_write_file(), but the file is opened in append mode. More... | |
virtual iostream * | open_read_append_file (const Filename &file) |
Works like open_read_write_file(), but the file is opened in append mode. More... | |
virtual istream * | open_read_file (const Filename &file) const =0 |
istream * | open_read_file (const Filename &file, bool do_uncompress) const |
Opens the file for reading. More... | |
virtual iostream * | open_read_write_file (const Filename &file, bool truncate) |
Opens the file for writing. More... | |
virtual ostream * | open_write_file (const Filename &file, bool truncate) |
Opens the file for writing. More... | |
ostream * | open_write_file (const Filename &file, bool do_compress, bool truncate) |
Opens the file for writing. More... | |
virtual void | output (ostream &out) const |
virtual bool | read_file (const Filename &file, bool do_uncompress, pvector< unsigned char > &result) const |
Fills up the indicated pvector with the contents of the file, if it is a regular file. More... | |
virtual bool | rename_file (const Filename &orig_filename, const Filename &new_filename) |
Attempts to rename the contents of the indicated file to the indicated file. More... | |
virtual bool | scan_directory (vector_string &contents, const Filename &dir) const =0 |
virtual void | write (ostream &out) const |
virtual bool | write_file (const Filename &file, bool do_compress, const unsigned char *data, size_t data_size) |
Writes the indicated data to the file, if it is a writable file. More... | |
![]() | |
TypedReferenceCount (const TypedReferenceCount ©) | |
void | operator= (const TypedReferenceCount ©) |
![]() | |
TypedObject (const TypedObject ©) | |
TypedObject * | as_typed_object () |
Returns the object, upcast (if necessary) to a TypedObject pointer. More... | |
const TypedObject * | as_typed_object () const |
Returns the object, upcast (if necessary) to a TypedObject pointer. More... | |
int | get_best_parent_from_Set (const std::set< int > &) const |
int | get_type_index () const |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More... | |
bool | is_exact_type (TypeHandle handle) const |
Returns true if the current object is the indicated type exactly. More... | |
bool | is_of_type (TypeHandle handle) const |
Returns true if the current object is or derives from the indicated type. More... | |
void | operator= (const TypedObject ©) |
![]() | |
int | get_ref_count () const |
Returns the current reference count. More... | |
WeakReferenceList * | get_weak_list () const |
Returns the WeakReferenceList associated with this ReferenceCount object. More... | |
bool | has_weak_list () const |
Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise. More... | |
void | local_object () |
This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack. More... | |
void | ref () const |
Explicitly increments the reference count. More... | |
bool | test_ref_count_integrity () const |
Does some easy checks to make sure that the reference count isn't completely bogus. More... | |
bool | test_ref_count_nonzero () const |
Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More... | |
virtual bool | unref () const |
Explicitly decrements the reference count. More... | |
void | weak_ref (WeakPointerToVoid *ptv) |
Adds the indicated PointerToVoid as a weak reference to this object. More... | |
void | weak_unref (WeakPointerToVoid *ptv) |
Removes the indicated PointerToVoid as a weak reference to this object. More... | |
Static Public Member Functions | |
static TypeHandle | get_class_type () |
static void | init_type () |
![]() | |
static TypeHandle | get_class_type () |
static void | init_type () |
![]() | |
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. More... | |
![]() | |
static TypeHandle | get_class_type () |
static void | init_type () |
Friends | |
class | VirtualFileSystem |
The abstract base class for a mount definition used within a VirtualFileSystem.
Normally users don't need to monkey with this class directly.
Definition at line 33 of file virtualFileMount.h.
|
virtual |
See Filename::atomic_compare_and_exchange_contents().
Reimplemented in VirtualFileMountRamdisk, and VirtualFileMountSystem.
Definition at line 376 of file virtualFileMount.cxx.
References atomic_read_contents().
Referenced by VirtualFileSimple::atomic_compare_and_exchange_contents(), and get_system_info().
|
virtual |
See Filename::atomic_read_contents().
Reimplemented in VirtualFileMountRamdisk, and VirtualFileMountSystem.
Definition at line 388 of file virtualFileMount.cxx.
References get_mount_point().
Referenced by atomic_compare_and_exchange_contents(), and VirtualFileSimple::atomic_read_contents().
|
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.
Definition at line 245 of file virtualFileMount.cxx.
References VirtualFileSystem::close_read_file(), and open_write_file().
Referenced by VirtualFileSimple::close_read_file(), VirtualFileMountSystem::open_read_file(), open_read_file(), and read_file().
|
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.
Definition at line 351 of file virtualFileMount.cxx.
References VirtualFileSystem::close_read_write_file(), and get_system_info().
Referenced by VirtualFileSimple::close_read_write_file(), VirtualFileMountSystem::open_read_append_file(), open_read_append_file(), and VirtualFileMountSystem::open_read_write_file().
|
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.
Definition at line 311 of file virtualFileMount.cxx.
References VirtualFileSystem::close_write_file(), and open_read_write_file().
Referenced by VirtualFileSimple::close_write_file(), VirtualFileMountSystem::open_append_file(), open_append_file(), VirtualFileMountSystem::open_write_file(), and write_file().
|
virtual |
Attempts to copy the contents of the indicated file to the indicated file.
Both filenames will be within the mount. Returns true on success, false on failure. If this returns false, the copy will be performed by explicit read-and-write operations.
Reimplemented in VirtualFileMountRamdisk, and VirtualFileMountSystem.
Definition at line 117 of file virtualFileMount.cxx.
References make_directory().
Referenced by VirtualFileSimple::copy_file(), and rename_file().
|
virtual |
Attempts to create the indicated file within the mount, if it does not already exist.
Returns true on success (or if the file already exists), or false if it cannot be created.
Reimplemented in VirtualFileMountRamdisk, and VirtualFileMountSystem.
Definition at line 75 of file virtualFileMount.cxx.
References delete_file().
Referenced by make_virtual_file().
|
virtual |
Attempts to delete the indicated file or directory within the mount.
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 in VirtualFileMountRamdisk, and VirtualFileMountSystem.
Definition at line 89 of file virtualFileMount.cxx.
References rename_file().
Referenced by create_file(), and VirtualFileSimple::delete_file().
|
inline |
Returns the file system this mount object is attached to.
Definition at line 35 of file virtualFileMount.I.
References get_mount_point().
Referenced by VirtualFileSimple::get_file_system().
|
inline |
Returns the set of flags passed by the user to the VirtualFileSystem::mount() command.
Definition at line 59 of file virtualFileMount.I.
References VirtualFileSystem::mount().
Referenced by get_mount_point().
|
inline |
Returns the name of the directory within the virtual file system that this mount object is attached to.
This directory name will end with a slash.
Definition at line 48 of file virtualFileMount.I.
References get_mount_flags().
Referenced by atomic_read_contents(), get_file_system(), VirtualFileSimple::get_filename(), VirtualFileSystem::parse_option(), VirtualFileSystem::scan_mount_points(), VirtualFileSystem::unmount(), VirtualFileSystem::unmount_all(), and VirtualFileSystem::unmount_point().
|
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 in VirtualFileMountSystem, and VirtualFileMountMultifile.
Definition at line 366 of file virtualFileMount.cxx.
References atomic_compare_and_exchange_contents().
Referenced by close_read_write_file(), and VirtualFileSimple::get_system_info().
|
virtual |
Returns true if the named file or directory may be written to, false otherwise.
Reimplemented in VirtualFileMountRamdisk, and VirtualFileMountSystem.
Definition at line 142 of file virtualFileMount.cxx.
References read_file().
Referenced by VirtualFileSimple::is_writable(), and make_directory().
|
virtual |
Attempts to create the indicated file within the mount, if it does not already exist.
Returns true on success, or false if it cannot be created. If the directory already existed prior to this call, may return either true or false.
Reimplemented in VirtualFileMountRamdisk, and VirtualFileMountSystem.
Definition at line 131 of file virtualFileMount.cxx.
References is_writable().
Referenced by copy_file(), and make_virtual_file().
|
virtual |
Constructs and returns a new VirtualFile instance that corresponds to the indicated filename within this mount point.
The returned VirtualFile object does not imply that the given file actually exists; but if the file does exist, then the handle can be used to read it.
Definition at line 44 of file virtualFileMount.cxx.
References create_file(), Filename::is_text(), make_directory(), Filename::set_binary(), and Filename::set_text().
Referenced by VirtualFileSystem::parse_option().
|
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 in VirtualFileMountRamdisk, and VirtualFileMountSystem.
Definition at line 297 of file virtualFileMount.cxx.
References close_write_file().
Referenced by VirtualFileSimple::open_append_file(), and open_write_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 in VirtualFileMountRamdisk, and VirtualFileMountSystem.
Definition at line 337 of file virtualFileMount.cxx.
References close_read_write_file().
Referenced by VirtualFileSimple::open_read_append_file(), and open_read_write_file().
istream * VirtualFileMount::open_read_file | ( | const Filename & | file, |
bool | do_uncompress | ||
) | const |
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 do_uncompress is true, the file is also decompressed on-the-fly using zlib.
Definition at line 221 of file virtualFileMount.cxx.
References close_read_file().
|
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 in VirtualFileMountRamdisk, and VirtualFileMountSystem.
Definition at line 324 of file virtualFileMount.cxx.
References open_read_append_file().
Referenced by close_write_file(), and VirtualFileSimple::open_read_write_file().
|
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.
Reimplemented in VirtualFileMountRamdisk, and VirtualFileMountSystem.
Definition at line 258 of file virtualFileMount.cxx.
Referenced by close_read_file(), VirtualFileSimple::open_write_file(), open_write_file(), and write_file().
ostream * VirtualFileMount::open_write_file | ( | const Filename & | file, |
bool | do_compress, | ||
bool | truncate | ||
) |
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 do_compress is true, the file is also compressed on-the-fly using zlib.
Definition at line 274 of file virtualFileMount.cxx.
References open_append_file(), and open_write_file().
|
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 in VirtualFileMountMultifile.
Definition at line 154 of file virtualFileMount.cxx.
References close_read_file(), VirtualFile::simple_read_file(), and write_file().
Referenced by is_writable(), VirtualFileMountMultifile::read_file(), and VirtualFileSimple::read_file().
|
virtual |
Attempts to rename the contents of the indicated file to the indicated file.
Both filenames will be within the mount. Returns true on success, false on failure. If this returns false, this will be attempted again with a copy-and-delete operation.
Reimplemented in VirtualFileMountRamdisk, and VirtualFileMountSystem.
Definition at line 103 of file virtualFileMount.cxx.
References copy_file().
Referenced by delete_file(), and VirtualFileSimple::rename_file().
|
virtual |
Writes the indicated data to the file, if it is a writable file.
Returns true on success, false otherwise.
Definition at line 189 of file virtualFileMount.cxx.
References close_write_file(), and open_write_file().
Referenced by read_file(), and VirtualFileSimple::write_file().