1 /*!****************************************************************************
2 
3  @file         PVRTResourceFile.h
4  @copyright    Copyright (c) Imagination Technologies Limited.
5  @brief        Simple resource file wrapper
6 
7 ******************************************************************************/
8 #ifndef _PVRTRESOURCEFILE_H_
9 #define _PVRTRESOURCEFILE_H_
10 
11 #include <stdlib.h>
12 #include "PVRTString.h"
13 
14 typedef void* (*PFNLoadFileFunc)(const char*, char** pData, size_t &size);
15 typedef bool  (*PFNReleaseFileFunc)(void* handle);
16 
17 /*!***************************************************************************
18  @class CPVRTResourceFile
19  @brief Simple resource file wrapper
20 *****************************************************************************/
21 class CPVRTResourceFile
22 {
23 public:
24 	/*!***************************************************************************
25 	@fn       			SetReadPath
26 	@param[in]			pszReadPath The path where you would like to read from
27 	@brief      		Sets the read path
28 	*****************************************************************************/
29 	static void SetReadPath(const char* pszReadPath);
30 
31 	/*!***************************************************************************
32 	@fn       			GetReadPath
33 	@return 			The currently set read path
34 	@brief      		Returns the currently set read path
35 	*****************************************************************************/
36 	static CPVRTString GetReadPath();
37 
38 	/*!***************************************************************************
39 	@fn       			SetLoadReleaseFunctions
40 	@param[in]			pLoadFileFunc Function to use for opening a file
41 	@param[in]			pReleaseFileFunc Function to release any data allocated by the load function
42 	@brief      		This function is used to override the CPVRTResource file loading functions. If
43 	                    you pass NULL in as the load function CPVRTResource will use the default functions.
44 	*****************************************************************************/
45 	static void SetLoadReleaseFunctions(void* pLoadFileFunc, void* pReleaseFileFunc);
46 
47 	/*!***************************************************************************
48 	@brief     			CPVRTResourceFile constructor
49 	@param[in]			pszFilename Name of the file you would like to open
50 	*****************************************************************************/
51 	CPVRTResourceFile(const char* pszFilename);
52 
53 	/*!***************************************************************************
54 	@brief     			CPVRTResourceFile constructor
55 	@param[in]			pData A pointer to the data you would like to use
56 	@param[in]			i32Size The size of the data
57 	*****************************************************************************/
58 	CPVRTResourceFile(const char* pData, size_t i32Size);
59 
60 	/*!***************************************************************************
61 	@fn       			~CPVRTResourceFile
62 	@brief      		Destructor
63 	*****************************************************************************/
64 	virtual ~CPVRTResourceFile();
65 
66 	/*!***************************************************************************
67 	@fn       			IsOpen
68 	@return 			true if the file is open
69 	@brief      		Is the file open
70 	*****************************************************************************/
71 	bool IsOpen() const;
72 
73 	/*!***************************************************************************
74 	@fn       			IsMemoryFile
75 	@return 			true if the file was opened from memory
76 	@brief      		Was the file opened from memory
77 	*****************************************************************************/
78 	bool IsMemoryFile() const;
79 
80 	/*!***************************************************************************
81 	@fn       			Size
82 	@return 			The size of the opened file
83 	@brief      		Returns the size of the opened file
84 	*****************************************************************************/
85 	size_t Size() const;
86 
87 	/*!***************************************************************************
88 	@fn       			DataPtr
89 	@return 			A pointer to the file data
90 	@brief      		Returns a pointer to the file data. If the data is expected
91 						to be a string don't assume that it is null-terminated.
92 	*****************************************************************************/
93 	const void* DataPtr() const;
94 
95 	/*!***************************************************************************
96 	@fn       			Close
97 	@brief      		Closes the file
98 	*****************************************************************************/
99 	void Close();
100 
101 protected:
102 	bool m_bOpen;
103 	bool m_bMemoryFile;
104 	size_t m_Size;
105 	const char* m_pData;
106 	void *m_Handle;
107 
108 	static CPVRTString s_ReadPath;
109 	static PFNLoadFileFunc s_pLoadFileFunc;
110 	static PFNReleaseFileFunc s_pReleaseFileFunc;
111 };
112 
113 #endif // _PVRTRESOURCEFILE_H_
114 
115 /*****************************************************************************
116  End of file (PVRTResourceFile.h)
117 *****************************************************************************/
118 
119