15 #ifndef VIRTUALFILEMOUNT_H 16 #define VIRTUALFILEMOUNT_H 18 #include "pandabase.h" 20 #include "virtualFile.h" 22 #include "pointerTo.h" 23 #include "typedReferenceCount.h" 36 virtual ~VirtualFileMount();
39 INLINE
const Filename &get_mount_point()
const;
40 INLINE
int get_mount_flags()
const;
45 bool implicit_pz_file,
48 virtual bool has_file(
const Filename &file)
const=0;
49 virtual bool create_file(
const Filename &file);
50 virtual bool make_directory(
const Filename &file);
51 virtual bool delete_file(
const Filename &file);
52 virtual bool rename_file(
const Filename &orig_filename,
const Filename &new_filename);
53 virtual bool copy_file(
const Filename &orig_filename,
const Filename &new_filename);
54 virtual bool is_directory(
const Filename &file)
const=0;
55 virtual bool is_regular_file(
const Filename &file)
const=0;
56 virtual bool is_writable(
const Filename &file)
const;
58 virtual bool read_file(
const Filename &file,
bool do_uncompress,
60 virtual bool write_file(
const Filename &file,
bool do_compress,
61 const unsigned char *data,
size_t data_size);
63 virtual istream *open_read_file(
const Filename &file)
const=0;
64 istream *open_read_file(
const Filename &file,
bool do_uncompress)
const;
65 virtual void close_read_file(istream *stream)
const;
67 virtual ostream *open_write_file(
const Filename &file,
bool truncate);
68 ostream *open_write_file(
const Filename &file,
bool do_compress,
bool truncate);
69 virtual ostream *open_append_file(
const Filename &file);
70 virtual void close_write_file(ostream *stream);
72 virtual iostream *open_read_write_file(
const Filename &file,
bool truncate);
73 virtual iostream *open_read_append_file(
const Filename &file);
74 virtual void close_read_write_file(iostream *stream);
76 virtual streamsize get_file_size(
const Filename &file, istream *stream)
const=0;
77 virtual streamsize get_file_size(
const Filename &file)
const=0;
78 virtual time_t get_timestamp(
const Filename &file)
const=0;
81 virtual bool scan_directory(vector_string &contents,
84 virtual bool atomic_compare_and_exchange_contents(
const Filename &file,
string &orig_contents,
const string &old_contents,
const string &new_contents);
85 virtual bool atomic_read_contents(
const Filename &file,
string &contents)
const;
88 virtual void output(ostream &out)
const;
89 virtual void write(ostream &out)
const;
99 return get_class_type();
101 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
105 static void init_type() {
106 TypedReferenceCount::init_type();
107 register_type(_type_handle,
"VirtualFileMount",
108 TypedReferenceCount::get_class_type());
119 #include "virtualFileMount.I" A hierarchy of directories and files that appears to be one continuous file system, even though the files may originate from several different sources that may not be related to the actual OS's file system.
A base class for things which need to inherit from both TypedObject and from ReferenceCount.
The abstract base class for a file or directory within the VirtualFileSystem.
The name of a file, such as a texture file or an Egg file.
The abstract base class for a mount definition used within a VirtualFileSystem.
This class records a particular byte sub-range within an existing file on disk.
TypeHandle is the identifier used to differentiate C++ class types.