|  | /*!**************************************************************************** | 
|  |  | 
|  | @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) | 
|  | *****************************************************************************/ | 
|  |  |