// Filename: virtualFileSystem.I // Created by: drose (03Aug02) // //////////////////////////////////////////////////////////////////// // // PANDA 3D SOFTWARE // Copyright (c) Carnegie Mellon University. All rights reserved. // // All use of this software is subject to the terms of the revised BSD // license. You should have received a copy of this license along // with this source code in a file named "LICENSE." // //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// // Function: VirtualFileSystem::exists // Access: Published // Description: Convenience function; returns true if the named file // exists. //////////////////////////////////////////////////////////////////// INLINE bool VirtualFileSystem:: exists(const Filename &filename) const { return get_file(filename, true) != (VirtualFile *)NULL; } //////////////////////////////////////////////////////////////////// // Function: VirtualFileSystem::is_directory // Access: Published // Description: Convenience function; returns true if the named file // exists and is a directory. //////////////////////////////////////////////////////////////////// INLINE bool VirtualFileSystem:: is_directory(const Filename &filename) const { PT(VirtualFile) file = get_file(filename, true); return (file != (VirtualFile *)NULL && file->is_directory()); } //////////////////////////////////////////////////////////////////// // Function: VirtualFileSystem::is_regular_file // Access: Published // Description: Convenience function; returns true if the named file // exists and is a regular file. //////////////////////////////////////////////////////////////////// INLINE bool VirtualFileSystem:: is_regular_file(const Filename &filename) const { PT(VirtualFile) file = get_file(filename, true); return (file != (VirtualFile *)NULL && file->is_regular_file()); } //////////////////////////////////////////////////////////////////// // Function: VirtualFileSystem::scan_directory // Access: Published // Description: 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. //////////////////////////////////////////////////////////////////// INLINE PT(VirtualFileList) VirtualFileSystem:: scan_directory(const Filename &filename) const { PT(VirtualFile) file = get_file(filename, true); if (file == (VirtualFile *)NULL) { return NULL; } return file->scan_directory(); } //////////////////////////////////////////////////////////////////// // Function: VirtualFileSystem::ls // Access: Published // Description: Convenience function; lists the files within the // indicated directory. //////////////////////////////////////////////////////////////////// INLINE void VirtualFileSystem:: ls(const Filename &filename) const { PT(VirtualFile) file = get_file(filename, true); if (file == (VirtualFile *)NULL) { express_cat.info() << "Not found: " << filename << "\n"; } else { file->ls(); } } //////////////////////////////////////////////////////////////////// // Function: VirtualFileSystem::ls_all // Access: Published // Description: Convenience function; lists the files within the // indicated directory, and all files below, // recursively. //////////////////////////////////////////////////////////////////// INLINE void VirtualFileSystem:: ls_all(const Filename &filename) const { PT(VirtualFile) file = get_file(filename, true); if (file == (VirtualFile *)NULL) { express_cat.info() << "Not found: " << filename << "\n"; } else { file->ls_all(); } } //////////////////////////////////////////////////////////////////// // Function: VirtualFileSystem::read_file // Access: Published // Description: Convenience function; returns the entire contents of // the indicated file as a string. // // If auto_unwrap is true, an explicitly-named .pz file // is automatically decompressed and the decompressed // contents are returned. This is different than // vfs-implicit-pz, which will automatically decompress // a file if the extension .pz is *not* given. //////////////////////////////////////////////////////////////////// INLINE string VirtualFileSystem:: read_file(const Filename &filename, bool auto_unwrap) const { string result; bool okflag = read_file(filename, result, auto_unwrap); nassertr(okflag, string()); return result; } //////////////////////////////////////////////////////////////////// // Function: VirtualFileSystem::read_file // Access: Public // Description: Convenience function; fills the string up with the // data from the indicated file, if it exists and can be // read. Returns true on success, false otherwise. // // If auto_unwrap is true, an explicitly-named .pz file // is automatically decompressed and the decompressed // contents are returned. This is different than // vfs-implicit-pz, which will automatically decompress // a file if the extension .pz is *not* given. //////////////////////////////////////////////////////////////////// INLINE bool VirtualFileSystem:: read_file(const Filename &filename, string &result, bool auto_unwrap) const { PT(VirtualFile) file = get_file(filename, false); return (file != (VirtualFile *)NULL && file->read_file(result, auto_unwrap)); } //////////////////////////////////////////////////////////////////// // Function: VirtualFileSystem::read_file // Access: Public // Description: Convenience function; fills the pvector up with the // data from the indicated file, if it exists and can be // read. Returns true on success, false otherwise. // // If auto_unwrap is true, an explicitly-named .pz file // is automatically decompressed and the decompressed // contents are returned. This is different than // vfs-implicit-pz, which will automatically decompress // a file if the extension .pz is *not* given. //////////////////////////////////////////////////////////////////// INLINE bool VirtualFileSystem:: read_file(const Filename &filename, pvector &result, bool auto_unwrap) const { PT(VirtualFile) file = get_file(filename, false); return (file != (VirtualFile *)NULL && file->read_file(result, auto_unwrap)); }