Subversion Repositories WoWGM

Rev

Rev 5 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 tristanc 1
#ifndef  _CDATASTORE_H_
2
#define  _CDATASTORE_H_
3
 
4
 
5
/****************************************************************************
6
*
7
*	CDataStore class
8
*
9
***/
10
 
11
class CDataStore {
12
 
13
	private:
14
 
15
		//=======================================================================
16
		virtual void vfptr() {};	// To create the VTable
17
		char*        m_data;		// Buffer
18
		unsigned int m_base;		// Buffer index base
19
		unsigned int m_alloc;		// Number of memory-allocated buffer bytes
20
		unsigned int m_size;		// Size of buffer
21
		unsigned int m_read;		// Read bytes
22
 
23
		//=======================================================================
24
		void Initialize(CDataStore *pData);
25
 
26
		//=======================================================================
27
		void Destroy(CDataStore *pData);
28
 
29
 
30
	public:
31
 
32
		//=======================================================================
33
		CDataStore ();
34
 
35
		//=======================================================================
36
		~CDataStore ();
37
 
38
		//=======================================================================
39
		inline bool IsRead ()
40
		{
41
			// Return TRUE if the data was read in its entirety
42
			return m_size==m_read;
43
		}
44
 
45
		//=======================================================================
46
		inline bool IsFinal ()
47
		{
48
			// Return TRUE if the data is finalized and ready for sending
49
			return m_read!=-1;
50
		}
51
 
52
		//=======================================================================
53
		CDataStore* Reset ();
54
 
55
		//=======================================================================
56
		inline void Finalize ()
57
		{
58
			m_read = 0;
59
		}
60
 
61
		//=======================================================================
62
		CDataStore& Set (DWORD pos, CHAR bytes);
63
 
64
		//=======================================================================
65
		CDataStore& Set (DWORD pos, UCHAR bytes);
66
 
67
		//=======================================================================
68
		CDataStore& Set (DWORD pos, SHORT bytes);
69
 
70
		//=======================================================================
71
		CDataStore& Set (DWORD pos, USHORT bytes);
72
 
73
		//=======================================================================
74
		CDataStore& Set (DWORD pos, INT bytes);
75
 
76
		//=======================================================================
77
		CDataStore& Set (DWORD pos, UINT bytes);
78
 
79
		//=======================================================================
80
		CDataStore& Set (DWORD pos, LONG bytes);
81
 
82
		//=======================================================================
83
		CDataStore& Set (DWORD pos, ULONG bytes);
84
 
85
		//=======================================================================
86
		CDataStore& Set (DWORD pos, INT64 bytes);
87
 
88
		//=======================================================================
89
		CDataStore& Set (DWORD pos, UINT64 bytes);
90
 
91
		//=======================================================================
92
		CDataStore& Set (DWORD pos, float bytes);
93
 
94
		//=======================================================================
95
		CDataStore& Put (CHAR val);
96
 
97
		//=======================================================================
98
		CDataStore& Put (UCHAR val);
99
 
100
		//=======================================================================
101
		CDataStore& Put (SHORT val);
102
 
103
		//=======================================================================
104
		CDataStore& Put (USHORT val);
105
 
106
		//=======================================================================
107
		CDataStore& Put (INT val);
108
 
109
		//=======================================================================
110
		CDataStore& Put (UINT val);
111
 
112
		//=======================================================================
113
		CDataStore& Put (LONG val);
114
 
115
		//=======================================================================
116
		CDataStore& Put (ULONG val);
117
 
118
		//=======================================================================
119
		CDataStore& Put (INT64 val);
120
 
121
		//=======================================================================
122
		CDataStore& Put (UINT64 val);
123
 
124
		//=======================================================================
125
		CDataStore& Put (float val);
126
 
127
		//=======================================================================
128
		CDataStore& PutString (LPCSTR pval);
129
 
130
		//=======================================================================
131
		CDataStore& PutString (USHORT CONST* pval);
132
 
133
		//=======================================================================
134
		CDataStore& PutArray (UCHAR CONST* pval, DWORD bytes);
135
 
136
		//=======================================================================
137
		CDataStore& PutArray (USHORT CONST* pval, DWORD bytes);
138
 
139
		//=======================================================================
140
		CDataStore& PutArray (ULONG CONST* pval, DWORD bytes);
141
 
142
		//=======================================================================
143
		CDataStore& PutArray (UINT64 CONST* pval, DWORD bytes);
144
 
145
		//=======================================================================
146
		CDataStore& PutArray (float const* pval, DWORD bytes);
147
 
148
		//=======================================================================
149
		CDataStore& PutData (LPCVOID pval, DWORD bytes);
150
 
151
		//=======================================================================
152
		CDataStore& Get (CHAR& pval);
153
 
154
		//=======================================================================
155
		CDataStore& Get (UCHAR& pval);
156
 
157
		//=======================================================================
158
		CDataStore& Get (SHORT& pval);
159
 
160
		//=======================================================================
161
		CDataStore& Get (USHORT& pval);
162
 
163
		//=======================================================================
164
		CDataStore& Get (INT& pval);
165
 
166
		//=======================================================================
167
		CDataStore& Get (UINT& pval);
168
 
169
		//=======================================================================
170
		CDataStore& Get (LONG& pval);
171
 
172
		//=======================================================================
173
		CDataStore& Get (ULONG& pval);
174
 
175
		//=======================================================================
176
		CDataStore& Get (INT64& pval);
177
 
178
		//=======================================================================
179
		CDataStore& Get (UINT64& pval);
180
 
181
		//=======================================================================
182
		CDataStore& Get (float& pval);
183
 
184
		//=======================================================================
185
		CDataStore& GetString (LPSTR pval, DWORD maxChars);
186
 
187
		//=======================================================================
188
		CDataStore& GetString (LPWSTR pval, DWORD maxChars);
189
 
190
		//=======================================================================
191
		CDataStore& GetArray (UCHAR* pval, DWORD count);
192
 
193
		//=======================================================================
194
		CDataStore& GetArray (USHORT* pval, DWORD count);
195
 
196
		//=======================================================================
197
		CDataStore& GetArray (ULONG* pval, DWORD count);
198
 
199
		//=======================================================================
200
		CDataStore& GetArray (UINT64* pval, DWORD count);
201
 
202
		//=======================================================================
203
		CDataStore& GetArray (float* pval, DWORD count);
204
 
205
		//=======================================================================
206
		virtual void GetBufferParams (LPCVOID*	dataPtr,
207
									  UINT*		sizePtr,
208
									  UINT*		allocPtr) const;
209
 
210
		//=======================================================================
211
		void DetachBuffer (PVOID* dataPtr, UINT* sizePtr, UINT* allocPtr);
212
 
213
};
214
 
215
#endif// _CDATASTORE_H_