My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
NetStruct.h
1 // $Id: NetStruct.h,v 1.1.1.1 2009/07/06 23:57:25 eml Exp $
2 
3 #ifndef GCP_UTIL_NETSTRUCT_H
4 #define GCP_UTIL_NETSTRUCT_H
5 
15 #include "gcp/util/common/NetDat.h"
16 #include "gcp/util/common/DataType.h"
17 
18 namespace gcp {
19  namespace util {
20 
21  class NetStruct : public NetDat {
22  public:
23 
27  NetStruct();
28 
32  NetStruct(const NetStruct& netStruct);
33  NetStruct(NetStruct& netStruct);
34  void operator=(const NetStruct& netStruct);
35  void operator=(NetStruct& netStruct);
36 
40  virtual ~NetStruct();
41 
45  virtual void addMember(NetDat* netDat, bool alloc=false);
46 
50  void addVar(gcp::util::DataType::Type type, void* vPtr, unsigned nEl);
51 
55  void deserialize(const std::vector<unsigned char>& bytes);
56  void deserialize(const unsigned char* bytes);
57 
61  virtual unsigned size();
62 
63  private:
64 
65  // A vector of objects contained in this class
66 
67  std::vector<NetDat::Info> members_;
68 
72  void serialize();
73 
77  void checkSize(const std::vector<unsigned char>& bytes);
78 
79  }; // End class NetStruct
80 
81  } // End namespace util
82 } // End namespace gcp
83 
84 
85 #define NETSTRUCT_UCHAR(name) \
86 addVar(gcp::util::DataType::UCHAR, (void*)&name, 1)
87 
88 #define NETSTRUCT_UCHAR_ARR(name, nEl) \
89 addVar(gcp::util::DataType::UCHAR, (void*)name, nEl)
90 
91 #define NETSTRUCT_UCHAR_VEC(name) \
92 addVar(gcp::util::DataType::UCHAR, (void*)&name[0], name.size())
93 
94 #define NETSTRUCT_CHAR(name) \
95 addVar(gcp::util::DataType::CHAR, (void*)&name, 1)
96 
97 #define NETSTRUCT_CHAR_ARR(name, nEl) \
98 addVar(gcp::util::DataType::CHAR, (void*)name, nEl)
99 
100 #define NETSTRUCT_CHAR_VEC(name) \
101 addVar(gcp::util::DataType::CHAR, (void*)&name[0], name.size())
102 
103 #define NETSTRUCT_BOOL(name) \
104 addVar(gcp::util::DataType::BOOL, (void*)&name, 1)
105 
106 #define NETSTRUCT_BOOL_ARR(name, nEl) \
107 addVar(gcp::util::DataType::BOOL, (void*)name, nEl)
108 
109 #define NETSTRUCT_BOOL_VEC(name) \
110 addVar(gcp::util::DataType::BOOL, (void*)&name[0], name.size())
111 
112 #define NETSTRUCT_USHORT(name) \
113 addVar(gcp::util::DataType::USHORT, (void*)&name, 1)
114 
115 #define NETSTRUCT_USHORT_ARR(name, nEl) \
116 addVar(gcp::util::DataType::USHORT, (void*)name, nEl)
117 
118 #define NETSTRUCT_USHORT_VEC(name) \
119 addVar(gcp::util::DataType::USHORT, (void*)&name[0], name.size())
120 
121 #define NETSTRUCT_SHORT(name) \
122 addVar(gcp::util::DataType::SHORT, (void*)&name, 1)
123 
124 #define NETSTRUCT_SHORT_ARR(name, nEl) \
125 addVar(gcp::util::DataType::SHORT, (void*)name, nEl)
126 
127 #define NETSTRUCT_SHORT_VEC(name) \
128 addVar(gcp::util::DataType::SHORT, (void*)&name[0], name.size())
129 
130 #define NETSTRUCT_UINT(name) \
131 addVar(gcp::util::DataType::UINT, (void*)&name, 1)
132 
133 #define NETSTRUCT_UINT_ARR(name, nEl) \
134 addVar(gcp::util::DataType::UINT, (void*)name, nEl)
135 
136 #define NETSTRUCT_UINT_VEC(name) \
137 addVar(gcp::util::DataType::UINT, (void*)&name[0], name.size())
138 
139 #define NETSTRUCT_INT(name) \
140 addVar(gcp::util::DataType::INT, (void*)&name, 1)
141 
142 #define NETSTRUCT_INT_ARR(name, nEl) \
143 addVar(gcp::util::DataType::INT, (void*)name, nEl)
144 
145 #define NETSTRUCT_INT_VEC(name) \
146 addVar(gcp::util::DataType::INT, (void*)&name[0], name.size())
147 
148 #define NETSTRUCT_ULONG(name) \
149 addVar(gcp::util::DataType::ULONG, (void*)&name, 1)
150 
151 #define NETSTRUCT_ULONG_ARR(name, nEl) \
152 addVar(gcp::util::DataType::ULONG, (void*)name, nEl)
153 
154 #define NETSTRUCT_ULONG_VEC(name) \
155 addVar(gcp::util::DataType::ULONG, (void*)&name[0], name.size())
156 
157 #define NETSTRUCT_LONG(name) \
158 addVar(gcp::util::DataType::LONG, (void*)&name, 1)
159 
160 #define NETSTRUCT_LONG_ARR(name, nEl) \
161 addVar(gcp::util::DataType::LONG, (void*)name, nEl)
162 
163 #define NETSTRUCT_LONG_VEC(name) \
164 addVar(gcp::util::DataType::LONG, (void*)&name[0], name.size())
165 
166 #define NETSTRUCT_FLOAT(name) \
167 addVar(gcp::util::DataType::FLOAT, (void*)&name, 1)
168 
169 #define NETSTRUCT_FLOAT_ARR(name, nEl) \
170 addVar(gcp::util::DataType::FLOAT, (void*)name, nEl)
171 
172 #define NETSTRUCT_FLOAT_VEC(name) \
173 addVar(gcp::util::DataType::FLOAT, (void*)&name[0], name.size())
174 
175 #define NETSTRUCT_DOUBLE(name) \
176 addVar(gcp::util::DataType::DOUBLE, (void*)&name, 1)
177 
178 #define NETSTRUCT_DOUBLE_ARR(name, nEl) \
179 addVar(gcp::util::DataType::DOUBLE, (void*)name, nEl)
180 
181 #define NETSTRUCT_DOUBLE_VEC(name) \
182 addVar(gcp::util::DataType::DOUBLE, (void*)&name[0], name.size())
183 
184 #define NETSTRUCT_STRING(name) \
185 addVar(gcp::util::DataType::UCHAR, (void*)&name[0], name.size())
186 
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
Definition: NetDat.h:23
NetStruct()
Definition: NetStruct.cc:14
virtual ~NetStruct()
Definition: NetStruct.cc:78