3 #ifndef GCP_UTIL_NETSTRUCT_H
4 #define GCP_UTIL_NETSTRUCT_H
15 #include "gcp/util/common/NetDat.h"
16 #include "gcp/util/common/DataType.h"
34 void operator=(
const NetStruct& netStruct);
50 void addVar(gcp::util::DataType::Type type,
void* vPtr,
unsigned nEl);
61 virtual unsigned size();
67 std::vector<NetDat::Info> members_;
77 void checkSize(
const std::vector<unsigned char>& bytes);
85 #define NETSTRUCT_UCHAR(name) \
86 addVar(gcp::util::DataType::UCHAR, (void*)&name, 1)
88 #define NETSTRUCT_UCHAR_ARR(name, nEl) \
89 addVar(gcp::util::DataType::UCHAR, (void*)name, nEl)
91 #define NETSTRUCT_UCHAR_VEC(name) \
92 addVar(gcp::util::DataType::UCHAR, (void*)&name[0], name.size())
94 #define NETSTRUCT_CHAR(name) \
95 addVar(gcp::util::DataType::CHAR, (void*)&name, 1)
97 #define NETSTRUCT_CHAR_ARR(name, nEl) \
98 addVar(gcp::util::DataType::CHAR, (void*)name, nEl)
100 #define NETSTRUCT_CHAR_VEC(name) \
101 addVar(gcp::util::DataType::CHAR, (void*)&name[0], name.size())
103 #define NETSTRUCT_BOOL(name) \
104 addVar(gcp::util::DataType::BOOL, (void*)&name, 1)
106 #define NETSTRUCT_BOOL_ARR(name, nEl) \
107 addVar(gcp::util::DataType::BOOL, (void*)name, nEl)
109 #define NETSTRUCT_BOOL_VEC(name) \
110 addVar(gcp::util::DataType::BOOL, (void*)&name[0], name.size())
112 #define NETSTRUCT_USHORT(name) \
113 addVar(gcp::util::DataType::USHORT, (void*)&name, 1)
115 #define NETSTRUCT_USHORT_ARR(name, nEl) \
116 addVar(gcp::util::DataType::USHORT, (void*)name, nEl)
118 #define NETSTRUCT_USHORT_VEC(name) \
119 addVar(gcp::util::DataType::USHORT, (void*)&name[0], name.size())
121 #define NETSTRUCT_SHORT(name) \
122 addVar(gcp::util::DataType::SHORT, (void*)&name, 1)
124 #define NETSTRUCT_SHORT_ARR(name, nEl) \
125 addVar(gcp::util::DataType::SHORT, (void*)name, nEl)
127 #define NETSTRUCT_SHORT_VEC(name) \
128 addVar(gcp::util::DataType::SHORT, (void*)&name[0], name.size())
130 #define NETSTRUCT_UINT(name) \
131 addVar(gcp::util::DataType::UINT, (void*)&name, 1)
133 #define NETSTRUCT_UINT_ARR(name, nEl) \
134 addVar(gcp::util::DataType::UINT, (void*)name, nEl)
136 #define NETSTRUCT_UINT_VEC(name) \
137 addVar(gcp::util::DataType::UINT, (void*)&name[0], name.size())
139 #define NETSTRUCT_INT(name) \
140 addVar(gcp::util::DataType::INT, (void*)&name, 1)
142 #define NETSTRUCT_INT_ARR(name, nEl) \
143 addVar(gcp::util::DataType::INT, (void*)name, nEl)
145 #define NETSTRUCT_INT_VEC(name) \
146 addVar(gcp::util::DataType::INT, (void*)&name[0], name.size())
148 #define NETSTRUCT_ULONG(name) \
149 addVar(gcp::util::DataType::ULONG, (void*)&name, 1)
151 #define NETSTRUCT_ULONG_ARR(name, nEl) \
152 addVar(gcp::util::DataType::ULONG, (void*)name, nEl)
154 #define NETSTRUCT_ULONG_VEC(name) \
155 addVar(gcp::util::DataType::ULONG, (void*)&name[0], name.size())
157 #define NETSTRUCT_LONG(name) \
158 addVar(gcp::util::DataType::LONG, (void*)&name, 1)
160 #define NETSTRUCT_LONG_ARR(name, nEl) \
161 addVar(gcp::util::DataType::LONG, (void*)name, nEl)
163 #define NETSTRUCT_LONG_VEC(name) \
164 addVar(gcp::util::DataType::LONG, (void*)&name[0], name.size())
166 #define NETSTRUCT_FLOAT(name) \
167 addVar(gcp::util::DataType::FLOAT, (void*)&name, 1)
169 #define NETSTRUCT_FLOAT_ARR(name, nEl) \
170 addVar(gcp::util::DataType::FLOAT, (void*)name, nEl)
172 #define NETSTRUCT_FLOAT_VEC(name) \
173 addVar(gcp::util::DataType::FLOAT, (void*)&name[0], name.size())
175 #define NETSTRUCT_DOUBLE(name) \
176 addVar(gcp::util::DataType::DOUBLE, (void*)&name, 1)
178 #define NETSTRUCT_DOUBLE_ARR(name, nEl) \
179 addVar(gcp::util::DataType::DOUBLE, (void*)name, nEl)
181 #define NETSTRUCT_DOUBLE_VEC(name) \
182 addVar(gcp::util::DataType::DOUBLE, (void*)&name[0], name.size())
184 #define NETSTRUCT_STRING(name) \
185 addVar(gcp::util::DataType::UCHAR, (void*)&name[0], name.size())
187 #endif // End #ifndef GCP_UTIL_NETSTRUCT_H
Definition: compress.c:1548
Definition: NetStruct.h:21
void deserialize(const std::vector< unsigned char > &bytes)
Definition: NetStruct.cc:127
virtual unsigned size()
Definition: NetStruct.cc:167
virtual void addMember(NetDat *netDat, bool alloc=false)
Definition: NetStruct.cc:93
void addVar(gcp::util::DataType::Type type, void *vPtr, unsigned nEl)
Definition: NetStruct.cc:158
NetStruct()
Definition: NetStruct.cc:14
virtual ~NetStruct()
Definition: NetStruct.cc:78