Panda3D
Public Member Functions | Static Public Member Functions | Friends | List of all members
VirtualFile Class Referenceabstract

The abstract base class for a file or directory within the VirtualFileSystem. More...

#include "virtualFile.h"

Inheritance diagram for VirtualFile:
TypedReferenceCount TypedObject ReferenceCount MemoryBase MemoryBase VirtualFileComposite VirtualFileSimple

Public Member Functions

virtual bool atomic_compare_and_exchange_contents (std::string &orig_contents, const std::string &old_contents, const std::string &new_contents)
 See Filename::atomic_compare_and_exchange_contents(). More...
 
virtual bool atomic_read_contents (std::string &contents) const
 See Filename::atomic_read_contents(). More...
 
virtual void close_read_file (std::istream *stream) const
 Closes a file opened by a previous call to open_read_file(). More...
 
virtual void close_read_write_file (std::iostream *stream)
 Closes a file opened by a previous call to open_read_write_file(). More...
 
virtual void close_write_file (std::ostream *stream)
 Closes a file opened by a previous call to open_write_file(). More...
 
virtual bool copy_file (VirtualFile *new_file)
 Attempts to copy the contents of this file to the indicated file. More...
 
virtual bool delete_file ()
 Attempts to delete this file or directory. More...
 
virtual TypeHandle force_init_type ()
 
virtual std::streamsize get_file_size (std::istream *stream) const
 Returns the current size on disk (or wherever it is) of the already-open file. More...
 
virtual std::streamsize get_file_size () const
 Returns the current size on disk (or wherever it is) of the file before it has been opened. More...
 
virtual VirtualFileSystemget_file_system () const =0
 
virtual Filename get_filename () const =0
 
const Filenameget_original_filename () const
 Returns the original filename as it was used to locate this VirtualFile. More...
 
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. More...
 
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). More...
 
virtual TypeHandle get_type () const
 
virtual bool has_file () const
 Returns true if this file exists, false otherwise. More...
 
virtual bool is_directory () const
 Returns true if this file represents a directory (and scan_directory() may be called), false otherwise. More...
 
virtual bool is_regular_file () const
 Returns true if this file represents a regular file (and read_file() may be called), false otherwise. More...
 
virtual bool is_writable () const
 Returns true if this file may be written to, which implies write_file() may be called (unless it is a directory instead of a regular file). More...
 
void ls (std::ostream &out=std::cout) const
 If the file represents a directory, lists its contents. More...
 
void ls_all (std::ostream &out=std::cout) const
 If the file represents a directory, recursively lists its contents and those of all subdirectories. More...
 
virtual std::ostream * open_append_file ()
 Works like open_write_file(), but the file is opened in append mode. More...
 
virtual std::iostream * open_read_append_file ()
 Works like open_read_write_file(), but the file is opened in append mode. More...
 
virtual std::istream * open_read_file (bool auto_unwrap) const
 Opens the file for reading. More...
 
virtual std::iostream * open_read_write_file (bool truncate)
 Opens the file for writing. More...
 
virtual std::ostream * open_write_file (bool auto_wrap, bool truncate)
 Opens the file for writing. More...
 
void output (std::ostream &out) const
 
std::string read_file (bool auto_unwrap) const
 Returns the entire contents of the file as a string. More...
 
bool read_file (std::string &result, bool auto_unwrap) const
 Fills up the indicated string with the contents of the file, if it is a regular file. More...
 
virtual bool read_file (vector_uchar &result, bool auto_unwrap) const
 Fills up the indicated pvector with the contents of the file, if it is a regular file. More...
 
virtual bool rename_file (VirtualFile *new_file)
 Attempts to move or rename this file or directory. More...
 
PointerTo< VirtualFileListscan_directory () const
 If the file represents a directory (that is, is_directory() returns true), this returns the list of files within the directory at the current time. More...
 
void set_original_filename (const Filename &filename)
 Stores the original filename that was used to locate this VirtualFile. More...
 
virtual bool was_read_successful () const
 Call this method after a reading the istream returned by open_read_file() to completion. More...
 
bool write_file (const std::string &data, bool auto_wrap)
 Writes the entire contents of the file as a string, if it is writable. More...
 
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. More...
 
- 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
 
TypedObjectas_typed_object ()
 Returns the object, upcast (if necessary) to a TypedObject pointer. More...
 
const TypedObjectas_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...
 
TypedObjectoperator= (const TypedObject &copy)=default
 
- Public Member Functions inherited from ReferenceCount
int get_ref_count () const
 
WeakReferenceListget_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 ref_if_nonzero () const
 Atomically increases the reference count of this object if it is not zero. 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...
 
WeakReferenceListweak_ref ()
 Adds the indicated PointerToVoid as a weak reference to this object. More...
 
void weak_unref ()
 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 bool simple_read_file (std::istream *stream, vector_uchar &result)
 Fills up the indicated pvector with the contents of the just-opened file. More...
 
static bool simple_read_file (std::istream *stream, vector_uchar &result, size_t max_bytes)
 As in simple_read_file() with two parameters, above, but only reads up to max_bytes bytes from the file. More...
 
- 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. More...
 
- Static Public Member Functions inherited from ReferenceCount
static TypeHandle get_class_type ()
 
static void init_type ()
 

Friends

class VirtualFileComposite
 

Additional Inherited Members

- Public Attributes inherited from TypedObject
 get_type
 
- Public Attributes inherited from ReferenceCount
 get_ref_count
 Returns the current reference count. More...
 

Detailed Description

The abstract base class for a file or directory within the VirtualFileSystem.

Definition at line 35 of file virtualFile.h.

Member Function Documentation

◆ atomic_compare_and_exchange_contents()

bool VirtualFile::atomic_compare_and_exchange_contents ( std::string &  orig_contents,
const std::string &  old_contents,
const std::string &  new_contents 
)
virtual

See Filename::atomic_compare_and_exchange_contents().

Reimplemented in VirtualFileSimple.

Definition at line 337 of file virtualFile.cxx.

◆ atomic_read_contents()

bool VirtualFile::atomic_read_contents ( std::string &  contents) const
virtual

See Filename::atomic_read_contents().

Reimplemented in VirtualFileSimple.

Definition at line 347 of file virtualFile.cxx.

◆ close_read_file()

void VirtualFile::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.

Reimplemented in VirtualFileSimple.

Definition at line 209 of file virtualFile.cxx.

◆ close_read_write_file()

void VirtualFile::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.

Reimplemented in VirtualFileSimple.

Definition at line 283 of file virtualFile.cxx.

◆ close_write_file()

void VirtualFile::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.

Reimplemented in VirtualFileSimple.

Definition at line 252 of file virtualFile.cxx.

◆ copy_file()

bool VirtualFile::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 in VirtualFileSimple.

Definition at line 94 of file virtualFile.cxx.

◆ delete_file()

bool VirtualFile::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 in VirtualFileSimple.

Definition at line 69 of file virtualFile.cxx.

◆ get_file_size() [1/2]

std::streamsize VirtualFile::get_file_size ( std::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 in VirtualFileSimple.

Definition at line 293 of file virtualFile.cxx.

References get_file_size().

Referenced by BamCacheRecord::add_dependent_file().

◆ get_file_size() [2/2]

std::streamsize VirtualFile::get_file_size ( ) const
virtual

Returns the current size on disk (or wherever it is) of the file before it has been opened.

Reimplemented in VirtualFileSimple.

Definition at line 302 of file virtualFile.cxx.

Referenced by get_file_size().

◆ get_original_filename()

const Filename & VirtualFile::get_original_filename ( ) const
inline

Returns the original filename as it was used to locate this VirtualFile.

This is usually, but not always, the same string returned by get_filename().

Definition at line 27 of file virtualFile.I.

◆ get_system_info()

bool VirtualFile::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 in VirtualFileSimple.

Definition at line 329 of file virtualFile.cxx.

◆ get_timestamp()

time_t VirtualFile::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 in VirtualFileSimple.

Definition at line 317 of file virtualFile.cxx.

Referenced by BamCacheRecord::add_dependent_file().

◆ has_file()

bool VirtualFile::has_file ( ) const
virtual

Returns true if this file exists, false otherwise.

Reimplemented in VirtualFileSimple, and VirtualFileComposite.

Definition at line 32 of file virtualFile.cxx.

◆ is_directory()

bool VirtualFile::is_directory ( ) const
virtual

Returns true if this file represents a directory (and scan_directory() may be called), false otherwise.

Reimplemented in VirtualFileSimple, and VirtualFileComposite.

Definition at line 41 of file virtualFile.cxx.

Referenced by ls_all().

◆ is_regular_file()

bool VirtualFile::is_regular_file ( ) const
virtual

Returns true if this file represents a regular file (and read_file() may be called), false otherwise.

Reimplemented in VirtualFileSimple.

Definition at line 50 of file virtualFile.cxx.

◆ is_writable()

bool VirtualFile::is_writable ( ) const
virtual

Returns true if this file may be written to, which implies write_file() may be called (unless it is a directory instead of a regular file).

Reimplemented in VirtualFileSimple.

Definition at line 59 of file virtualFile.cxx.

◆ ls()

void VirtualFile::ls ( std::ostream &  out = std::cout) const

If the file represents a directory, lists its contents.

Definition at line 161 of file virtualFile.cxx.

◆ ls_all()

void VirtualFile::ls_all ( std::ostream &  out = std::cout) const

If the file represents a directory, recursively lists its contents and those of all subdirectories.

Definition at line 184 of file virtualFile.cxx.

References is_directory().

◆ open_append_file()

ostream * VirtualFile::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 in VirtualFileSimple.

Definition at line 241 of file virtualFile.cxx.

◆ open_read_append_file()

iostream * VirtualFile::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 in VirtualFileSimple.

Definition at line 272 of file virtualFile.cxx.

◆ open_read_file()

istream * VirtualFile::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.

Reimplemented in VirtualFileSimple.

Definition at line 198 of file virtualFile.cxx.

◆ open_read_write_file()

iostream * VirtualFile::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 in VirtualFileSimple.

Definition at line 262 of file virtualFile.cxx.

◆ open_write_file()

ostream * VirtualFile::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.

Reimplemented in VirtualFileSimple.

Definition at line 231 of file virtualFile.cxx.

◆ read_file() [1/3]

std::string VirtualFile::read_file ( bool  auto_unwrap) const
inline

Returns the entire contents of the file as a string.

Definition at line 35 of file virtualFile.I.

Referenced by read_file().

◆ read_file() [2/3]

bool VirtualFile::read_file ( std::string &  result,
bool  auto_unwrap 
) const

Fills up the indicated string with the contents of the file, if it is a regular file.

Returns true on success, false otherwise.

Definition at line 356 of file virtualFile.cxx.

References read_file().

◆ read_file() [3/3]

bool VirtualFile::read_file ( vector_uchar &  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 in VirtualFileSimple.

Definition at line 376 of file virtualFile.cxx.

◆ rename_file()

bool VirtualFile::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 in VirtualFileSimple.

Definition at line 85 of file virtualFile.cxx.

◆ scan_directory()

PointerTo< VirtualFileList > VirtualFile::scan_directory ( ) const

If the file represents a directory (that is, is_directory() returns true), this returns the list of files within the directory at the current time.

Returns NULL if the file is not a directory or if the directory cannot be read.

Definition at line 105 of file virtualFile.cxx.

References VirtualFileSystem::scan_mount_points(), and ov_set< Key, Compare, Vector >::sort().

◆ set_original_filename()

void VirtualFile::set_original_filename ( const Filename filename)
inline

Stores the original filename that was used to locate this VirtualFile.

This is normally called only by the VirtualFileSystem, as it creates each VirtualFile.

Definition at line 55 of file virtualFile.I.

◆ simple_read_file() [1/2]

bool VirtualFile::simple_read_file ( std::istream *  stream,
vector_uchar &  result 
)
static

Fills up the indicated pvector with the contents of the just-opened file.

Returns true on success, false otherwise. If the pvector was not empty on entry, the data read from the file will be appended onto it.

Definition at line 395 of file virtualFile.cxx.

◆ simple_read_file() [2/2]

bool VirtualFile::simple_read_file ( std::istream *  stream,
vector_uchar &  result,
size_t  max_bytes 
)
static

As in simple_read_file() with two parameters, above, but only reads up to max_bytes bytes from the file.

Definition at line 416 of file virtualFile.cxx.

◆ was_read_successful()

bool VirtualFile::was_read_successful ( ) const
virtual

Call this method after a reading the istream returned by open_read_file() to completion.

If it returns true, the file was read completely and without error; if it returns false, there may have been some errors or a truncated file read. This is particularly likely if the stream is a VirtualFileHTTP.

Definition at line 221 of file virtualFile.cxx.

◆ write_file() [1/2]

bool VirtualFile::write_file ( const std::string &  data,
bool  auto_wrap 
)
inline

Writes the entire contents of the file as a string, if it is writable.

Definition at line 45 of file virtualFile.I.

◆ write_file() [2/2]

bool VirtualFile::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 in VirtualFileSimple.

Definition at line 385 of file virtualFile.cxx.


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