| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- // Filename: virtualFileMountMultifile.cxx
- // Created by: drose (03Aug02)
- //
- ////////////////////////////////////////////////////////////////////
- //
- // PANDA 3D SOFTWARE
- // Copyright (c) 2001, Disney Enterprises, Inc. All rights reserved
- //
- // All use of this software is subject to the terms of the Panda 3d
- // Software license. You should have received a copy of this license
- // along with this source code; you will also find a current copy of
- // the license at http://www.panda3d.org/license.txt .
- //
- // To contact the maintainers of this program write to
- // [email protected] .
- //
- ////////////////////////////////////////////////////////////////////
- #include "virtualFileMountMultifile.h"
- #include "virtualFileSystem.h"
- TypeHandle VirtualFileMountMultifile::_type_handle;
- ////////////////////////////////////////////////////////////////////
- // Function: VirtualFileMountMultifile::Destructor
- // Access: Public, Virtual
- // Description:
- ////////////////////////////////////////////////////////////////////
- VirtualFileMountMultifile::
- ~VirtualFileMountMultifile() {
- if ((_mount_flags & VirtualFileSystem::MF_owns_pointer) != 0) {
- // Delete the _multifile pointer if we own it.
- nassertv(_multifile != (Multifile *)NULL);
- delete _multifile;
- }
- }
- ////////////////////////////////////////////////////////////////////
- // Function: VirtualFileMountMultifile::has_file
- // Access: Public, Virtual
- // Description: Returns true if the indicated file exists within the
- // mount system.
- ////////////////////////////////////////////////////////////////////
- bool VirtualFileMountMultifile::
- has_file(const Filename &file) const {
- return (file.empty() ||
- _multifile->find_subfile(file) >= 0 ||
- _multifile->has_directory(file));
- }
- ////////////////////////////////////////////////////////////////////
- // Function: VirtualFileMountMultifile::is_directory
- // Access: Public, Virtual
- // Description: Returns true if the indicated file exists within the
- // mount system and is a directory.
- ////////////////////////////////////////////////////////////////////
- bool VirtualFileMountMultifile::
- is_directory(const Filename &file) const {
- return (file.empty() || _multifile->has_directory(file));
- }
- ////////////////////////////////////////////////////////////////////
- // Function: VirtualFileMountMultifile::is_regular_file
- // Access: Public, Virtual
- // Description: Returns true if the indicated file exists within the
- // mount system and is a regular file.
- ////////////////////////////////////////////////////////////////////
- bool VirtualFileMountMultifile::
- is_regular_file(const Filename &file) const {
- return (_multifile->find_subfile(file) >= 0);
- }
- ////////////////////////////////////////////////////////////////////
- // Function: VirtualFileMountMultifile::open_read_file
- // Access: Public, Virtual
- // Description: Opens the file for reading, if it exists. Returns a
- // newly allocated istream on success (which you should
- // eventually delete when you are done reading).
- // Returns NULL on failure.
- ////////////////////////////////////////////////////////////////////
- istream *VirtualFileMountMultifile::
- open_read_file(const Filename &file) const {
- int subfile_index = _multifile->find_subfile(file);
- if (subfile_index < 0) {
- return NULL;
- }
- return _multifile->open_read_subfile(subfile_index);
- }
- ////////////////////////////////////////////////////////////////////
- // Function: VirtualFileMountMultifile::scan_directory
- // Access: Public, Virtual
- // Description: Fills the given vector up with the list of filenames
- // that are local to this directory, if the filename is
- // a directory. Returns true if successful, or false if
- // the file is not a directory or cannot be read.
- ////////////////////////////////////////////////////////////////////
- bool VirtualFileMountMultifile::
- scan_directory(vector_string &contents, const Filename &dir) const {
- return _multifile->scan_directory(contents, dir);
- }
|