Panda3D

Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Friends | List of all members
VirtualFileMount Class Referenceabstract

The abstract base class for a mount definition used within a VirtualFileSystem. More...

`#include "virtualFileMount.h"`

Inheritance diagram for VirtualFileMount:

## Public Member Functions
virtual bool | atomic_compare_and_exchange_contents (const Filename &file, std::string &orig_contents, const std::string &old_contents, const std::string &new_contents)
| See Filename::atomic_compare_and_exchange_contents().
virtual bool | atomic_read_contents (const Filename &file, std::string &contents) const
| See Filename::atomic_read_contents().
virtual void | close_read_file (std::istream *stream) const
| Closes a file opened by a previous call to open_read_file().
virtual void | close_read_write_file (std::iostream *stream)
| Closes a file opened by a previous call to open_read_write_file().
virtual void | close_write_file (std::ostream *stream)
| Closes a file opened by a previous call to open_write_file().
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.
virtual bool | create_file (const Filename &file)
| Attempts to create the indicated file within the mount, if it does not already exist.
virtual bool | delete_file (const Filename &file)
| Attempts to delete the indicated file or directory within the mount.
virtual TypeHandle | force_init_type ()
virtual std::streamsize | get_file_size (const Filename &file) const =0
virtual std::streamsize | get_file_size (const Filename &file, std::istream *stream) const =0
VirtualFileSystem * | get_file_system () const
| Returns the file system this mount object is attached to.
int | get_mount_flags () const
| Returns the set of flags passed by the user to the VirtualFileSystem::mount() command.
const Filename & | get_mount_point () const
| Returns the name of the directory within the virtual file system that this mount object is attached to.
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.
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.
virtual bool | make_directory (const Filename &file)
| Attempts to create the indicated file within the mount, if it does not already exist.
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.
virtual std::ostream * | open_append_file (const Filename &file)
| Works like open_write_file(), but the file is opened in append mode.
virtual std::iostream * | open_read_append_file (const Filename &file)
| Works like open_read_write_file(), but the file is opened in append mode.
virtual std::istream * | open_read_file (const Filename &file) const =0
std::istream * | open_read_file (const Filename &file, bool do_uncompress) const
| Opens the file for reading.
virtual std::iostream * | open_read_write_file (const Filename &file, bool truncate)
| Opens the file for writing.
std::ostream * | open_write_file (const Filename &file, bool do_compress, bool truncate)
| Opens the file for writing.
virtual std::ostream * | open_write_file (const Filename &file, bool truncate)
| Opens the file for writing.
virtual void | output (std::ostream &out) const
virtual bool | read_file (const Filename &file, bool do_uncompress, vector_uchar &result) const
| Fills up the indicated pvector with the contents of the file, if it is a regular file.
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.
virtual bool | scan_directory (vector_string &contents, const Filename &dir) const =0
virtual void | write (std::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.
Public Member Functions inherited from TypedReferenceCount
| TypedReferenceCount (const TypedReferenceCount &copy)
void | operator= (const TypedReferenceCount &copy)
Public Member Functions inherited from TypedObject
| TypedObject (const TypedObject &copy)=default
TypedObject * | as_typed_object ()
| Returns the object, upcast (if necessary) to a TypedObject pointer.
const TypedObject * | as_typed_object () const
| Returns the object, upcast (if necessary) to a TypedObject pointer.
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.
bool | is_exact_type (TypeHandle handle) const
| Returns true if the current object is the indicated type exactly.
bool | is_of_type (TypeHandle handle) const
| Returns true if the current object is or derives from the indicated type.
TypedObject & | operator= (const TypedObject &copy)=default
Public Member Functions inherited from MemoryBase
void | operator delete (void *, void *)
void | operator delete (void *ptr)
void | operator delete[] (void *, void *)
void | operator delete[] (void *ptr)
void * | operator new (size_t size)
void * | operator new (size_t size, void *ptr)
void * | operator new[] (size_t size)
void * | operator new[] (size_t size, void *ptr)
Public Member Functions inherited from ReferenceCount
int | get_ref_count () const
WeakReferenceList * | get_weak_list () const
| Returns the WeakReferenceList associated with this ReferenceCount object.
bool | has_weak_list () const
| Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise.
void | local_object ()
| This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack.
void | ref () const
| Explicitly increments the reference count.
bool | ref_if_nonzero () const
| Atomically increases the reference count of this object if it is not zero.
bool | test_ref_count_integrity () const
| Does some easy checks to make sure that the reference count isn't completely bogus.
bool | test_ref_count_nonzero () const
| Does some easy checks to make sure that the reference count isn't zero, or completely bogus.
virtual bool | unref () const
| Explicitly decrements the reference count.
bool | unref_if_one () const
| Atomically decreases the reference count of this object if it is one.
WeakReferenceList * | weak_ref ()
| Adds the indicated PointerToVoid as a weak reference to this object.
void | weak_unref ()
| Removes the indicated PointerToVoid as a weak reference to this object.

## Static Public Member Functions
static TypeHandle | get_class_type ()
static void | init_type ()
Static Public Member Functions inherited from TypedReferenceCount
static TypeHandle | get_class_type ()
static void | init_type ()
Static Public Member Functions inherited from TypedObject
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.
Static Public Member Functions inherited from ReferenceCount
static TypeHandle | get_class_type ()
static void | init_type ()

## Friends
class | VirtualFileSystem

## Additional Inherited Members
Public Attributes inherited from TypedObject
| get_type
Public Attributes inherited from ReferenceCount
| get_ref_count
| Returns the current reference count.

## Detailed Description

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 31 of file virtualFileMount.h.

## Constructor & Destructor Documentation

## ◆ VirtualFileMount()

VirtualFileMount::VirtualFileMount | ( |  | ) |
| inline

Definition at line 17 of file virtualFileMount.I.

## ◆ ~VirtualFileMount()

VirtualFileMount::~VirtualFileMount | ( |  | ) |
| virtual

Definition at line 30 of file virtualFileMount.cxx.

## Member Function Documentation

## ◆ atomic_compare_and_exchange_contents()

bool VirtualFileMount::atomic_compare_and_exchange_contents | ( | const Filename & | file,
|  | std::string & | orig_contents,
|  | const std::string & | old_contents,
|  | const std::string & | new_contents )
| virtual

See Filename::atomic_compare_and_exchange_contents().

Reimplemented in VirtualFileMountRamdisk, and VirtualFileMountSystem.

Definition at line 316 of file virtualFileMount.cxx.

## ◆ atomic_read_contents()

bool VirtualFileMount::atomic_read_contents | ( | const Filename & | file,
|  | std::string & | contents ) const
| virtual

See Filename::atomic_read_contents().

Reimplemented in VirtualFileMountRamdisk, and VirtualFileMountSystem.

Definition at line 326 of file virtualFileMount.cxx.

## ◆ close_read_file()

void VirtualFileMount::close_read_file | ( | std::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.

Definition at line 212 of file virtualFileMount.cxx.

References VirtualFileSystem::close_read_file().

Referenced by VirtualFileMountSystem::open_read_file(), and read_file().

## ◆ close_read_write_file()

void VirtualFileMount::close_read_write_file | ( | std::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.

Definition at line 296 of file virtualFileMount.cxx.

References VirtualFileSystem::close_read_write_file().

Referenced by VirtualFileMountSystem::open_read_append_file(), and VirtualFileMountSystem::open_read_write_file().

## ◆ close_write_file()

void VirtualFileMount::close_write_file | ( | std::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.

Definition at line 265 of file virtualFileMount.cxx.

References VirtualFileSystem::close_write_file().

Referenced by VirtualFileMountSystem::open_append_file(), VirtualFileMountSystem::open_write_file(), and write_file().

## ◆ copy_file()

bool VirtualFileMount::copy_file | ( | const Filename & | orig_filename,
|  | const Filename & | new_filename )
| 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 101 of file virtualFileMount.cxx.

## ◆ create_file()

bool VirtualFileMount::create_file | ( | const Filename & | 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 69 of file virtualFileMount.cxx.

Referenced by make_virtual_file().

## ◆ delete_file()

bool VirtualFileMount::delete_file | ( | const Filename & | 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 79 of file virtualFileMount.cxx.

## ◆ force_init_type()

virtual TypeHandle VirtualFileMount::force_init_type | ( |  | ) |
| inline virtual

Reimplemented from TypedReferenceCount.

Definition at line 99 of file virtualFileMount.h.

## ◆ get_class_type()

static TypeHandle VirtualFileMount::get_class_type | ( |  | ) |
| inline static

Definition at line 100 of file virtualFileMount.h.

## ◆ get_file_size() [1/2]

virtual std::streamsize VirtualFileMount::get_file_size | ( | const Filename & | file | ) | const
| pure virtual

Implemented in VirtualFileMountMultifile, VirtualFileMountRamdisk, and VirtualFileMountSystem.

## ◆ get_file_size() [2/2]

virtual std::streamsize VirtualFileMount::get_file_size | ( | const Filename & | file,
|  | std::istream * | stream ) const
| pure virtual

Implemented in VirtualFileMountMultifile, VirtualFileMountRamdisk, and VirtualFileMountSystem.

## ◆ get_file_system()

VirtualFileSystem * VirtualFileMount::get_file_system | ( |  | ) | const
| inline

Returns the file system this mount object is attached to.

Definition at line 27 of file virtualFileMount.I.

## ◆ get_mount_flags()

int VirtualFileMount::get_mount_flags | ( |  | ) | const
| inline

Returns the set of flags passed by the user to the VirtualFileSystem::mount() command.

Definition at line 46 of file virtualFileMount.I.

## ◆ get_mount_point()

const Filename & VirtualFileMount::get_mount_point | ( |  | ) | const
| 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 37 of file virtualFileMount.I.

## ◆ get_system_info()

bool VirtualFileMount::get_system_info | ( | const Filename & | file,
|  | 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 in VirtualFileMountMultifile, and VirtualFileMountSystem.

Definition at line 308 of file virtualFileMount.cxx.

## ◆ get_timestamp()

virtual time_t VirtualFileMount::get_timestamp | ( | const Filename & | file | ) | const
| pure virtual

Implemented in VirtualFileMountMultifile, VirtualFileMountRamdisk, and VirtualFileMountSystem.

## ◆ get_type()

virtual TypeHandle VirtualFileMount::get_type | ( |  | ) | const
| inline virtual

Reimplemented from TypedReferenceCount.

Definition at line 96 of file virtualFileMount.h.

## ◆ has_file()

virtual bool VirtualFileMount::has_file | ( | const Filename & | file | ) | const
| pure virtual

Implemented in VirtualFileMountMultifile, VirtualFileMountRamdisk, and VirtualFileMountSystem.

## ◆ init_type()

static void VirtualFileMount::init_type | ( |  | ) |
| inline static

Definition at line 103 of file virtualFileMount.h.

## ◆ is_directory()

virtual bool VirtualFileMount::is_directory | ( | const Filename & | file | ) | const
| pure virtual

Implemented in VirtualFileMountMultifile, VirtualFileMountRamdisk, and VirtualFileMountSystem.

## ◆ is_regular_file()

virtual bool VirtualFileMount::is_regular_file | ( | const Filename & | file | ) | const
| pure virtual

Implemented in VirtualFileMountMultifile, VirtualFileMountRamdisk, and VirtualFileMountSystem.

## ◆ is_writable()

bool VirtualFileMount::is_writable | ( | const Filename & | file | ) | const
| virtual

Returns true if the named file or directory may be written to, false otherwise.

Reimplemented in VirtualFileMountRamdisk, and VirtualFileMountSystem.

Definition at line 121 of file virtualFileMount.cxx.

## ◆ make_directory()

bool VirtualFileMount::make_directory | ( | const Filename & | file | ) |
| 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 112 of file virtualFileMount.cxx.

Referenced by make_virtual_file().

## ◆ make_virtual_file()

PointerTo< VirtualFile > VirtualFileMount::make_virtual_file | ( | const Filename & | local_filename,
|  | const Filename & | original_filename,
|  | bool | implicit_pz_file,
|  | int | open_flags )
| 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 41 of file virtualFileMount.cxx.

References create_file(), Filename::is_text(), make_directory(), Filename::set_binary(), and Filename::set_text().

## ◆ open_append_file()

ostream * VirtualFileMount::open_append_file | ( | const Filename & | 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 in VirtualFileMountRamdisk, and VirtualFileMountSystem.

Definition at line 254 of file virtualFileMount.cxx.

## ◆ open_read_append_file()

iostream * VirtualFileMount::open_read_append_file | ( | const Filename & | 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 285 of file virtualFileMount.cxx.

## ◆ open_read_file() [1/2]

virtual std::istream * VirtualFileMount::open_read_file | ( | const Filename & | file | ) | const
| pure virtual

Implemented in VirtualFileMountMultifile, VirtualFileMountRamdisk, and VirtualFileMountSystem.

## ◆ open_read_file() [2/2]

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 191 of file virtualFileMount.cxx.

## ◆ open_read_write_file()

iostream * VirtualFileMount::open_read_write_file | ( | const Filename & | 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 in VirtualFileMountRamdisk, and VirtualFileMountSystem.

Definition at line 275 of file virtualFileMount.cxx.

## ◆ open_write_file() [1/2]

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 234 of file virtualFileMount.cxx.

References open_write_file().

## ◆ open_write_file() [2/2]

ostream * VirtualFileMount::open_write_file | ( | const Filename & | file,
|  | 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.

Reimplemented in VirtualFileMountRamdisk, and VirtualFileMountSystem.

Definition at line 222 of file virtualFileMount.cxx.

Referenced by open_write_file(), and write_file().

## ◆ output()

void VirtualFileMount::output | ( | std::ostream & | out | ) | const
| virtual

Definition at line 334 of file virtualFileMount.cxx.

## ◆ read_file()

bool VirtualFileMount::read_file | ( | const Filename & | file,
|  | bool | do_uncompress,
|  | vector_uchar & | result ) 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 in VirtualFileMountMultifile.

Definition at line 130 of file virtualFileMount.cxx.

References close_read_file(), and VirtualFile::simple_read_file().

Referenced by VirtualFileMountMultifile::read_file().

## ◆ rename_file()

bool VirtualFileMount::rename_file | ( | const Filename & | orig_filename,
|  | const Filename & | new_filename )
| 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 90 of file virtualFileMount.cxx.

## ◆ scan_directory()

virtual bool VirtualFileMount::scan_directory | ( | vector_string & | contents,
|  | const Filename & | dir ) const
| pure virtual

Implemented in VirtualFileMountMultifile, VirtualFileMountRamdisk, and VirtualFileMountSystem.

## ◆ write()

void VirtualFileMount::write | ( | std::ostream & | out | ) | const
| virtual

Definition at line 342 of file virtualFileMount.cxx.

## ◆ write_file()

bool VirtualFileMount::write_file | ( | const Filename & | file,
|  | bool | do_compress,
|  | const unsigned char * | data,
|  | size_t | data_size )
| virtual

Writes the indicated data to the file, if it is a writable file.

Returns true on success, false otherwise.

Definition at line 162 of file virtualFileMount.cxx.

References close_write_file(), and open_write_file().

## Friends And Related Symbol Documentation

## ◆ VirtualFileSystem

friend class VirtualFileSystem
| friend

Definition at line 112 of file virtualFileMount.h.

The documentation for this class was generated from the following files:

- panda/src/express/virtualFileMount.h
- panda/src/express/virtualFileMount.cxx
- panda/src/express/virtualFileMount.I