| /*!**************************************************************************** | 
 |  | 
 |  @file         PVRTResourceFile.h | 
 |  @copyright    Copyright (c) Imagination Technologies Limited. | 
 |  @brief        Simple resource file wrapper | 
 |  | 
 | ******************************************************************************/ | 
 | #ifndef _PVRTRESOURCEFILE_H_ | 
 | #define _PVRTRESOURCEFILE_H_ | 
 |  | 
 | #include <stdlib.h> | 
 | #include "PVRTString.h" | 
 |  | 
 | typedef void* (*PFNLoadFileFunc)(const char*, char** pData, size_t &size); | 
 | typedef bool  (*PFNReleaseFileFunc)(void* handle); | 
 |  | 
 | /*!*************************************************************************** | 
 |  @class CPVRTResourceFile | 
 |  @brief Simple resource file wrapper | 
 | *****************************************************************************/ | 
 | class CPVRTResourceFile | 
 | { | 
 | public: | 
 | 	/*!*************************************************************************** | 
 | 	@fn       			SetReadPath | 
 | 	@param[in]			pszReadPath The path where you would like to read from | 
 | 	@brief      		Sets the read path | 
 | 	*****************************************************************************/ | 
 | 	static void SetReadPath(const char* pszReadPath); | 
 |  | 
 | 	/*!*************************************************************************** | 
 | 	@fn       			GetReadPath | 
 | 	@return 			The currently set read path | 
 | 	@brief      		Returns the currently set read path | 
 | 	*****************************************************************************/ | 
 | 	static CPVRTString GetReadPath(); | 
 |  | 
 | 	/*!*************************************************************************** | 
 | 	@fn       			SetLoadReleaseFunctions | 
 | 	@param[in]			pLoadFileFunc Function to use for opening a file | 
 | 	@param[in]			pReleaseFileFunc Function to release any data allocated by the load function | 
 | 	@brief      		This function is used to override the CPVRTResource file loading functions. If | 
 | 	                    you pass NULL in as the load function CPVRTResource will use the default functions. | 
 | 	*****************************************************************************/ | 
 | 	static void SetLoadReleaseFunctions(void* pLoadFileFunc, void* pReleaseFileFunc); | 
 |  | 
 | 	/*!*************************************************************************** | 
 | 	@brief     			CPVRTResourceFile constructor | 
 | 	@param[in]			pszFilename Name of the file you would like to open | 
 | 	*****************************************************************************/ | 
 | 	CPVRTResourceFile(const char* pszFilename); | 
 |  | 
 | 	/*!*************************************************************************** | 
 | 	@brief     			CPVRTResourceFile constructor | 
 | 	@param[in]			pData A pointer to the data you would like to use | 
 | 	@param[in]			i32Size The size of the data      		 | 
 | 	*****************************************************************************/ | 
 | 	CPVRTResourceFile(const char* pData, size_t i32Size); | 
 |  | 
 | 	/*!*************************************************************************** | 
 | 	@fn       			~CPVRTResourceFile | 
 | 	@brief      		Destructor | 
 | 	*****************************************************************************/ | 
 | 	virtual ~CPVRTResourceFile(); | 
 |  | 
 | 	/*!*************************************************************************** | 
 | 	@fn       			IsOpen | 
 | 	@return 			true if the file is open | 
 | 	@brief      		Is the file open | 
 | 	*****************************************************************************/ | 
 | 	bool IsOpen() const; | 
 |  | 
 | 	/*!*************************************************************************** | 
 | 	@fn       			IsMemoryFile | 
 | 	@return 			true if the file was opened from memory | 
 | 	@brief      		Was the file opened from memory | 
 | 	*****************************************************************************/ | 
 | 	bool IsMemoryFile() const; | 
 |  | 
 | 	/*!*************************************************************************** | 
 | 	@fn       			Size | 
 | 	@return 			The size of the opened file | 
 | 	@brief      		Returns the size of the opened file | 
 | 	*****************************************************************************/ | 
 | 	size_t Size() const; | 
 |  | 
 | 	/*!*************************************************************************** | 
 | 	@fn       			DataPtr | 
 | 	@return 			A pointer to the file data | 
 | 	@brief      		Returns a pointer to the file data. If the data is expected | 
 | 						to be a string don't assume that it is null-terminated. | 
 | 	*****************************************************************************/ | 
 | 	const void* DataPtr() const; | 
 |  | 
 | 	/*!*************************************************************************** | 
 | 	@fn       			Close | 
 | 	@brief      		Closes the file | 
 | 	*****************************************************************************/ | 
 | 	void Close(); | 
 |  | 
 | protected: | 
 | 	bool m_bOpen; | 
 | 	bool m_bMemoryFile; | 
 | 	size_t m_Size; | 
 | 	const char* m_pData; | 
 | 	void *m_Handle; | 
 |  | 
 | 	static CPVRTString s_ReadPath; | 
 | 	static PFNLoadFileFunc s_pLoadFileFunc; | 
 | 	static PFNReleaseFileFunc s_pReleaseFileFunc; | 
 | }; | 
 |  | 
 | #endif // _PVRTRESOURCEFILE_H_ | 
 |  | 
 | /***************************************************************************** | 
 |  End of file (PVRTResourceFile.h) | 
 | *****************************************************************************/ | 
 |  |