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