// VFSDefines.h - compile config and basic setup // For conditions of distribution and use, see copyright notice in VFS.h #ifndef VFS_DEFINES_H #define VFS_DEFINES_H /* --- Config section -- modify as needed --- */ // Define this to allow dealing with files > 4 GB, using non-standard functions. // This may or may not work with your platform/compiler, good luck. //#define VFS_LARGEFILE_SUPPORT // Define this to make all operations case insensitive. // Windows systems generally don't care much, but for Linux and Mac this can be used // to get the same behavior as on windows. // Additionally, this achieves full case insensitivity within the library, // if the the same files are accessed multiple times by the program, but with not-uniform case. // (no sane programmer should do this, anyway). // However, on non-windows systems this will decrease performance when checking for files // on disk (see VFSLoader.cpp). #define VFS_IGNORE_CASE /* --- End of config section --- */ #define VFS_NAMESPACE_START namespace ttvfs { #define VFS_NAMESPACE_END } // Important that this is included outside of the namespace. // Note that stdint.h is intentionally NOT included if possible, // because on gcc it pulls in features.h, which in turn checks for // _FILE_OFFSET_BITS presence. That means to enable 64bit file I/O, // _FILE_OFFSET_BITS would have to be defined here. // For the sake of not polluting the includer, use other means to define // a 64 bit type. #if !defined(_MSC_VER) && !defined(__GNUC__) # include // Hope it works. #endif VFS_NAMESPACE_START // vfspos type (signed 64bit integer if possible, 32bit otherwise) #if defined(_MSC_VER) typedef __int64 vfspos; #elif defined(__GNUC__) __extension__ // suppress warnings about long long typedef long long int vfspos; #elif defined(VFS_LARGEFILE_SUPPORT) // fallback using stdint. h, but only if necessary typedef int64_t vfspos; #else // If all else fails typedef long int vfspos; // what fseek() uses, no guarantees whether 64 or 32 bits #endif #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__) # define VFS_STRICMP _stricmp #else # define VFS_STRICMP strcasecmp #endif static const vfspos npos = ~vfspos(0); typedef void (*delete_func)(void *); struct _AbiCheck { int structSize; int vfsposSize; int largefile; int nocase; }; class File; class DirBase; typedef void (*FileEnumCallback)(File *vf, void *user); typedef void (*DirEnumCallback)(DirBase *vd, void *user); VFS_NAMESPACE_END #endif