3 #ifndef SZA_UTIL_NETUNION_H
4 #define SZA_UTIL_NETUNION_H
23 class NetUnion :
public NetDat {
26 static const unsigned NETUNION_UNKNOWN = 0;
36 NetUnion(
const NetUnion& netUnion);
37 NetUnion(NetUnion& netUnion);
38 void operator=(
const NetUnion& netUnion);
39 void operator=(NetUnion& netUnion);
49 void addMember(
unsigned id, NetDat* member=0,
bool alloc=
false);
54 void addVar(
unsigned id, sza::util::DataType::Type type,
55 void* vPtr,
unsigned nEl,
bool convert=
false);
59 void addVar(
unsigned id, sza::util::DataType::Type type,
60 void* vPtr,
bool convert=
false);
65 void addCase(
unsigned id);
70 NetDat*
const findMember(
unsigned id);
72 bool memberIsValid(
unsigned id);
77 NetDat*
const getMember(
unsigned id);
82 virtual void setTo(
unsigned id);
92 unsigned sizeOf(
unsigned id);
107 virtual void deserialize(
const std::vector<unsigned char>& bytes);
108 virtual void deserializeNativeOrder(
const std::vector<unsigned char>& bytes);
109 void deserialize(
const unsigned char* bytes,
unsigned size);
110 void deserializeNativeOrder(
const unsigned char* bytes,
unsigned size);
111 void deserialize(
const unsigned char* bytes);
117 std::map<unsigned int, NetDat::Info> members_;
126 void checkSize(
const std::vector<unsigned char>& bytes);
131 void checkSize(
const std::vector<unsigned char>& bytes,
unsigned id);
136 virtual void resize();
145 void addVar(
unsigned id,
bool& val,
bool convert=
false);
146 void addVar(
unsigned id,
unsigned char& val,
bool convert=
false);
147 void addVar(
unsigned id,
char& val,
bool convert=
false);
148 void addVar(
unsigned id,
short& val,
bool convert=
false);
149 void addVar(
unsigned id,
unsigned short& val,
bool convert=
false);
150 void addVar(
unsigned id,
int& val,
bool convert=
false);
151 void addVar(
unsigned id,
unsigned int& val,
bool convert=
false);
152 void addVar(
unsigned id,
float& val,
bool convert=
false);
153 void addVar(
unsigned id,
double& val,
bool convert=
false);
155 void addVar(
unsigned id,
bool* val,
unsigned nEl,
bool convert=
false);
156 void addVar(
unsigned id,
unsigned char* val,
unsigned nEl,
bool convert=
false);
157 void addVar(
unsigned id,
char* val,
unsigned nEl,
bool convert=
false);
158 void addVar(
unsigned id,
short* val,
unsigned nEl,
bool convert=
false);
159 void addVar(
unsigned id,
unsigned short* val,
unsigned nEl,
bool convert=
false);
160 void addVar(
unsigned id,
int* val,
unsigned nEl,
bool convert=
false);
161 void addVar(
unsigned id,
unsigned int* val,
unsigned nEl,
bool convert=
false);
162 void addVar(
unsigned id,
float* val,
unsigned nEl,
bool convert=
false);
163 void addVar(
unsigned id,
double* val,
unsigned nEl,
bool convert=
false);
165 void addVar(
unsigned id, std::string& val,
bool convert=
false);
166 void addVar(
unsigned id, std::vector<unsigned char>& val,
bool convert=
false);
173 #define NETUNION_UCHAR(id, name) \
174 addVar(id, sza::util::DataType::UCHAR, (void*)&name, 1)
176 #define NETUNION_UCHAR_ARR(id, name, nEl) \
177 addVar(id, sza::util::DataType::UCHAR, (void*)name, nEl)
179 #define NETUNION_CHAR(id, name) \
180 addVar(id, sza::util::DataType::CHAR, (void*)&name, 1)
182 #define NETUNION_CHAR_ARR(id, name, nEl) \
183 addVar(id, sza::util::DataType::CHAR, (void*)name, nEl)
185 #define NETUNION_BOOL(id, name) \
186 addVar(id, sza::util::DataType::BOOL, (void*)&name, 1)
188 #define NETUNION_BOOL_ARR(id, name, nEl) \
189 addVar(id, sza::util::DataType::BOOL, (void*)name, nEl)
191 #define NETUNION_USHORT(id, name) \
192 addVar(id, sza::util::DataType::USHORT, (void*)&name, 1)
194 #define NETUNION_USHORT_ARR(id, name, nEl) \
195 addVar(id, sza::util::DataType::USHORT, (void*)name, nEl)
197 #define NETUNION_SHORT(id, name) \
198 addVar(id, sza::util::DataType::SHORT, (void*)&name, 1)
200 #define NETUNION_SHORT_ARR(id, name, nEl) \
201 addVar(id, sza::util::DataType::SHORT, (void*)name, nEl)
203 #define NETUNION_UINT(id, name) \
204 addVar(id, sza::util::DataType::UINT, (void*)&name, 1)
206 #define NETUNION_UINT_ARR(id, name, nEl) \
207 addVar(id, sza::util::DataType::UINT, (void*)name, nEl)
209 #define NETUNION_INT(id, name) \
210 addVar(id, sza::util::DataType::INT, (void*)&name, 1)
212 #define NETUNION_INT_ARR(id, name, nEl) \
213 addVar(id, sza::util::DataType::INT, (void*)name, nEl)
215 #define NETUNION_ULONG(id, name) \
216 addVar(id, sza::util::DataType::ULONG, (void*)&name, 1)
218 #define NETUNION_ULONG_ARR(id, name, nEl) \
219 addVar(id, sza::util::DataType::ULONG, (void*)name, nEl)
221 #define NETUNION_LONG(id, name) \
222 addVar(id, sza::util::DataType::LONG, (void*)&name, 1)
224 #define NETUNION_LONG_ARR(id, name, nEl) \
225 addVar(id, sza::util::DataType::LONG, (void*)name, nEl)
227 #define NETUNION_FLOAT(id, name) \
228 addVar(id, sza::util::DataType::FLOAT, (void*)&name, 1)
230 #define NETUNION_FLOAT_ARR(id, name, nEl) \
231 addVar(id, sza::util::DataType::FLOAT, (void*)name, nEl)
233 #define NETUNION_DOUBLE(id, name) \
234 addVar(id, sza::util::DataType::DOUBLE, (void*)&name, 1)
236 #define NETUNION_DOUBLE_ARR(id, name, nEl) \
237 addVar(id, sza::util::DataType::DOUBLE, (void*)name, nEl)
239 #define NETUNION_UCHAR_VEC(id, name) \
240 addVar(id, sza::util::DataType::UCHAR, (void*)&name)
242 #endif // End #ifndef SZA_UTIL_NETUNION_H
Tagged: Tue Jun 22 22:32:16 UTC 2004.
Tagged: Wed Jul 6 13:41:09 PDT 2005.