/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ #ifndef SE_INCL_FILESYSTEM_H #define SE_INCL_FILESYSTEM_H #ifdef PRAGMA_ONCE #pragma once #endif #include // !!! FIXME: rcg10142001 This should really be using CTStrings... /* * This class handles filesystem differences between platforms. */ class ENGINE_API CFileSystem { public: // Construct a system-dependent version of CFileSystem. // (argv0) is argv[0] in your mainline. // gamename is a simple token that identifies your game. static CFileSystem *GetInstance(const char *argv0, const char *gamename); virtual ~CFileSystem(void) {} // Get the platform-specific directory separator. This could be // "\\" on win32, "/" on unix, and ":" on MacOS Classic. // Consider the returned pointer to be READ ONLY, as it points to a // static, internal literal string on most platforms. // Some platforms may define a dir separator that is MORE THAN ONE // CHARACTER LONG. You have been warned. static const char *GetDirSeparator(void); // Returns TRUE if (fname) is not a real file ("." and ".." on win32, etc.) // THIS DOES NOT CHECK IF A SPECIFIC FILE EXISTS IN THE FILESYSTEM! static BOOL IsDummyFile(const char *fname); // Returns TRUE if (fname) exists at all. May be a symlink, dir, file, etc. static BOOL Exists(const char *fname); // Returns TRUE if (fname) is a directory. static BOOL IsDirectory(const char *fname); // Get the path of the binary (.EXE file) being run. // (buf) is where to store the info, and (bufSize) is the size, in bytes, // of what's pointed to by (buf). The buffer is always promised to be // null-terminated. virtual void GetExecutablePath(char *buf, ULONG bufSize) = 0; // Get the user directory. This is the user's home directory on systems // with that concept, and the base (buf) is where to store the info, and // (bufSize) is the size, in bytes, of what's pointed to by (buf). The // buffer is always promised to be null-terminated, and, if there's room, // with have a trailing dir separator. It is likely that you will have // write permission in the user directory tree, and will NOT have write // permission in the base directory. You have been warned. virtual void GetUserDirectory(char *buf, ULONG bufSize) = 0; // Get an array of CTStrings containing the names of files in (dir) that // match (wildcard). virtual CDynamicArray *FindFiles(const char *dir, const char *wildcard) = 0; protected: // use GetInstance(), instead. CFileSystem() {} }; ENGINE_API extern CFileSystem *_pFileSystem; #endif // end of FileSystem.h ...