Subversion Repositories WoWGM

Rev

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