| /*!**************************************************************************** | |
| @file PVRTMemoryFileSystem.h | |
| @copyright Copyright (c) Imagination Technologies Limited. | |
| @brief Memory file system for resource files. | |
| ******************************************************************************/ | |
| #ifndef _PVRTMEMORYFILE_H_ | |
| #define _PVRTMEMORYFILE_H_ | |
| #include "PVRTGlobal.h" | |
| #include <stddef.h> | |
| /*!**************************************************************************** | |
| @class CPVRTMemoryFileSystem | |
| @brief Memory file system for resource files. | |
| ******************************************************************************/ | |
| class CPVRTMemoryFileSystem | |
| { | |
| public: | |
| /*!*************************************************************************** | |
| @brief Constructor. Creates a CPVRTMemoryFileSystem object based on the parameters supplied. | |
| @param[in] pszFilename Name of file to register | |
| @param[in] pBuffer Pointer to file data | |
| @param[in] Size File size | |
| @param[in] bCopy Name and data should be copied? | |
| *****************************************************************************/ | |
| CPVRTMemoryFileSystem(const char* pszFilename, const void* pBuffer, size_t Size, bool bCopy = false); | |
| /*!*************************************************************************** | |
| @fn RegisterMemoryFile | |
| @param[in] pszFilename Name of file to register | |
| @param[in] pBuffer Pointer to file data | |
| @param[in] Size File size | |
| @param[in] bCopy Name and data should be copied? | |
| @brief Registers a block of memory as a file that can be looked up | |
| by name. | |
| *****************************************************************************/ | |
| static void RegisterMemoryFile(const char* pszFilename, const void* pBuffer, size_t Size, bool bCopy = false); | |
| /*!*************************************************************************** | |
| @fn GetFile | |
| @param[in] pszFilename Name of file to open | |
| @param[out] ppBuffer Pointer to file data | |
| @param[out] pSize File size | |
| @return true if the file was found in memory, false otherwise | |
| @brief Looks up a file in the memory file system by name. Returns a | |
| pointer to the file data as well as its size on success. | |
| *****************************************************************************/ | |
| static bool GetFile(const char* pszFilename, const void** ppBuffer, size_t* pSize); | |
| /*!*************************************************************************** | |
| @fn GetNumFiles | |
| @return The number of registered files | |
| @brief Getter for the number of registered files | |
| *****************************************************************************/ | |
| static int GetNumFiles(); | |
| /*!*************************************************************************** | |
| @fn GetFilename | |
| @param[in] i32Index Index of file | |
| @return A pointer to the filename of the requested file | |
| @brief Looks up a file in the memory file system by name. Returns a | |
| pointer to the file data as well as its size on success. | |
| *****************************************************************************/ | |
| static const char* GetFilename(int i32Index); | |
| protected: | |
| /*!*************************************************************************** | |
| @class CAtExit | |
| @brief Provides a deconstructor for platforms that don't support the atexit() function. | |
| *****************************************************************************/ | |
| class CAtExit | |
| { | |
| public: | |
| /*!*************************************************************************** | |
| @brief Destructor of CAtExit class. Workaround for platforms that | |
| don't support the atexit() function. This deletes any memory | |
| file system data. | |
| *****************************************************************************/ | |
| ~CAtExit(); | |
| }; | |
| static CAtExit s_AtExit; | |
| friend class CAtExit; | |
| /*!*************************************************************************** | |
| @struct SFileInfo | |
| @brief Struct which contains information on a single file. | |
| *****************************************************************************/ | |
| struct SFileInfo | |
| { | |
| const char* pszFilename; ///< File name. | |
| const void* pBuffer; ///< Pointer to file data. | |
| size_t Size; ///< File size. | |
| bool bAllocated; ///< File was allocated. If true, this file will be deleted on exit. | |
| }; | |
| static SFileInfo* s_pFileInfo; | |
| static int s_i32NumFiles; | |
| static int s_i32Capacity; | |
| }; | |
| #endif // _PVRTMEMORYFILE_H_ | |
| /***************************************************************************** | |
| End of file (PVRTMemoryFileSystem.h) | |
| *****************************************************************************/ | |