RINASim  October 2016
Documentation of framework for OMNeT++
PDUData_m.cc
Go to the documentation of this file.
1 //
2 // Generated file, do not edit! Created by nedtool 5.0 from DIF/Delimiting/PDUData.msg.
3 //
4 
5 // Disable warnings about unused variables, empty switch stmts, etc:
6 #ifdef _MSC_VER
7 # pragma warning(disable:4101)
8 # pragma warning(disable:4065)
9 #endif
10 
11 #include <iostream>
12 #include <sstream>
13 #include "PDUData_m.h"
14 
15 namespace omnetpp {
16 
17 // Template pack/unpack rules. They are declared *after* a1l type-specific pack functions for multiple reasons.
18 // They are in the omnetpp namespace, to allow them to be found by argument-dependent lookup via the cCommBuffer argument
19 
20 // Packing/unpacking an std::vector
21 template<typename T, typename A>
22 void doParsimPacking(omnetpp::cCommBuffer *buffer, const std::vector<T,A>& v)
23 {
24  int n = v.size();
25  doParsimPacking(buffer, n);
26  for (int i = 0; i < n; i++)
27  doParsimPacking(buffer, v[i]);
28 }
29 
30 template<typename T, typename A>
31 void doParsimUnpacking(omnetpp::cCommBuffer *buffer, std::vector<T,A>& v)
32 {
33  int n;
34  doParsimUnpacking(buffer, n);
35  v.resize(n);
36  for (int i = 0; i < n; i++)
37  doParsimUnpacking(buffer, v[i]);
38 }
39 
40 // Packing/unpacking an std::list
41 template<typename T, typename A>
42 void doParsimPacking(omnetpp::cCommBuffer *buffer, const std::list<T,A>& l)
43 {
44  doParsimPacking(buffer, (int)l.size());
45  for (typename std::list<T,A>::const_iterator it = l.begin(); it != l.end(); ++it)
46  doParsimPacking(buffer, (T&)*it);
47 }
48 
49 template<typename T, typename A>
50 void doParsimUnpacking(omnetpp::cCommBuffer *buffer, std::list<T,A>& l)
51 {
52  int n;
53  doParsimUnpacking(buffer, n);
54  for (int i=0; i<n; i++) {
55  l.push_back(T());
56  doParsimUnpacking(buffer, l.back());
57  }
58 }
59 
60 // Packing/unpacking an std::set
61 template<typename T, typename Tr, typename A>
62 void doParsimPacking(omnetpp::cCommBuffer *buffer, const std::set<T,Tr,A>& s)
63 {
64  doParsimPacking(buffer, (int)s.size());
65  for (typename std::set<T,Tr,A>::const_iterator it = s.begin(); it != s.end(); ++it)
66  doParsimPacking(buffer, *it);
67 }
68 
69 template<typename T, typename Tr, typename A>
70 void doParsimUnpacking(omnetpp::cCommBuffer *buffer, std::set<T,Tr,A>& s)
71 {
72  int n;
73  doParsimUnpacking(buffer, n);
74  for (int i=0; i<n; i++) {
75  T x;
76  doParsimUnpacking(buffer, x);
77  s.insert(x);
78  }
79 }
80 
81 // Packing/unpacking an std::map
82 template<typename K, typename V, typename Tr, typename A>
83 void doParsimPacking(omnetpp::cCommBuffer *buffer, const std::map<K,V,Tr,A>& m)
84 {
85  doParsimPacking(buffer, (int)m.size());
86  for (typename std::map<K,V,Tr,A>::const_iterator it = m.begin(); it != m.end(); ++it) {
87  doParsimPacking(buffer, it->first);
88  doParsimPacking(buffer, it->second);
89  }
90 }
91 
92 template<typename K, typename V, typename Tr, typename A>
93 void doParsimUnpacking(omnetpp::cCommBuffer *buffer, std::map<K,V,Tr,A>& m)
94 {
95  int n;
96  doParsimUnpacking(buffer, n);
97  for (int i=0; i<n; i++) {
98  K k; V v;
99  doParsimUnpacking(buffer, k);
100  doParsimUnpacking(buffer, v);
101  m[k] = v;
102  }
103 }
104 
105 // Default pack/unpack function for arrays
106 template<typename T>
107 void doParsimArrayPacking(omnetpp::cCommBuffer *b, const T *t, int n)
108 {
109  for (int i = 0; i < n; i++)
110  doParsimPacking(b, t[i]);
111 }
112 
113 template<typename T>
114 void doParsimArrayUnpacking(omnetpp::cCommBuffer *b, T *t, int n)
115 {
116  for (int i = 0; i < n; i++)
117  doParsimUnpacking(b, t[i]);
118 }
119 
120 // Default rule to prevent compiler from choosing base class' doParsimPacking() function
121 template<typename T>
122 void doParsimPacking(omnetpp::cCommBuffer *, const T& t)
123 {
124  throw omnetpp::cRuntimeError("Parsim error: no doParsimPacking() function for type %s", omnetpp::opp_typename(typeid(t)));
125 }
126 
127 template<typename T>
128 void doParsimUnpacking(omnetpp::cCommBuffer *, T& t)
129 {
130  throw omnetpp::cRuntimeError("Parsim error: no doParsimUnpacking() function for type %s", omnetpp::opp_typename(typeid(t)));
131 }
132 
133 } // namespace omnetpp
134 
135 
136 // forward
137 template<typename T, typename A>
138 std::ostream& operator<<(std::ostream& out, const std::vector<T,A>& vec);
139 
140 // Template rule which fires if a struct or class doesn't have operator<<
141 template<typename T>
142 inline std::ostream& operator<<(std::ostream& out,const T&) {return out;}
143 
144 // operator<< for std::vector<T>
145 template<typename T, typename A>
146 inline std::ostream& operator<<(std::ostream& out, const std::vector<T,A>& vec)
147 {
148  out.put('{');
149  for(typename std::vector<T,A>::const_iterator it = vec.begin(); it != vec.end(); ++it)
150  {
151  if (it != vec.begin()) {
152  out.put(','); out.put(' ');
153  }
154  out << *it;
155  }
156  out.put('}');
157 
158  char buf[32];
159  sprintf(buf, " (size=%u)", (unsigned int)vec.size());
160  out.write(buf, strlen(buf));
161  return out;
162 }
163 
164 PDUData_Base::PDUData_Base(const char *name, int kind) : ::omnetpp::cPacket(name,kind)
165 {
166  this->midFragment = false;
167  this->firstFragment = false;
168  this->lastFragment = false;
169  this->completeSDU = false;
170 }
171 
172 PDUData_Base::PDUData_Base(const PDUData_Base& other) : ::omnetpp::cPacket(other)
173 {
174  copy(other);
175 }
176 
178 {
179 }
180 
182 {
183  if (this==&other) return *this;
184  ::omnetpp::cPacket::operator=(other);
185  copy(other);
186  return *this;
187 }
188 
190 {
191  this->midFragment = other.midFragment;
192  this->firstFragment = other.firstFragment;
193  this->lastFragment = other.lastFragment;
194  this->completeSDU = other.completeSDU;
195 }
196 
197 void PDUData_Base::parsimPack(omnetpp::cCommBuffer *b) const
198 {
199  ::omnetpp::cPacket::parsimPack(b);
200  doParsimPacking(b,this->midFragment);
202  doParsimPacking(b,this->lastFragment);
203  doParsimPacking(b,this->completeSDU);
204 }
205 
206 void PDUData_Base::parsimUnpack(omnetpp::cCommBuffer *b)
207 {
208  ::omnetpp::cPacket::parsimUnpack(b);
213 }
214 
216 {
217  return this->midFragment;
218 }
219 
220 void PDUData_Base::setMidFragment(bool midFragment)
221 {
222  this->midFragment = midFragment;
223 }
224 
226 {
227  return this->firstFragment;
228 }
229 
230 void PDUData_Base::setFirstFragment(bool firstFragment)
231 {
232  this->firstFragment = firstFragment;
233 }
234 
236 {
237  return this->lastFragment;
238 }
239 
240 void PDUData_Base::setLastFragment(bool lastFragment)
241 {
242  this->lastFragment = lastFragment;
243 }
244 
246 {
247  return this->completeSDU;
248 }
249 
250 void PDUData_Base::setCompleteSDU(bool completeSDU)
251 {
252  this->completeSDU = completeSDU;
253 }
254 
255 class PDUDataDescriptor : public omnetpp::cClassDescriptor
256 {
257  private:
258  mutable const char **propertynames;
259  public:
261  virtual ~PDUDataDescriptor();
262 
263  virtual bool doesSupport(omnetpp::cObject *obj) const override;
264  virtual const char **getPropertyNames() const override;
265  virtual const char *getProperty(const char *propertyname) const override;
266  virtual int getFieldCount() const override;
267  virtual const char *getFieldName(int field) const override;
268  virtual int findField(const char *fieldName) const override;
269  virtual unsigned int getFieldTypeFlags(int field) const override;
270  virtual const char *getFieldTypeString(int field) const override;
271  virtual const char **getFieldPropertyNames(int field) const override;
272  virtual const char *getFieldProperty(int field, const char *propertyname) const override;
273  virtual int getFieldArraySize(void *object, int field) const override;
274 
275  virtual std::string getFieldValueAsString(void *object, int field, int i) const override;
276  virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override;
277 
278  virtual const char *getFieldStructName(int field) const override;
279  virtual void *getFieldStructValuePointer(void *object, int field, int i) const override;
280 };
281 
283 
284 PDUDataDescriptor::PDUDataDescriptor() : omnetpp::cClassDescriptor("PDUData", "omnetpp::cPacket")
285 {
286  propertynames = nullptr;
287 }
288 
290 {
291  delete[] propertynames;
292 }
293 
294 bool PDUDataDescriptor::doesSupport(omnetpp::cObject *obj) const
295 {
296  return dynamic_cast<PDUData_Base *>(obj)!=nullptr;
297 }
298 
300 {
301  if (!propertynames) {
302  static const char *names[] = { "customize", nullptr };
303  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
304  const char **basenames = basedesc ? basedesc->getPropertyNames() : nullptr;
305  propertynames = mergeLists(basenames, names);
306  }
307  return propertynames;
308 }
309 
310 const char *PDUDataDescriptor::getProperty(const char *propertyname) const
311 {
312  if (!strcmp(propertyname,"customize")) return "true";
313  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
314  return basedesc ? basedesc->getProperty(propertyname) : nullptr;
315 }
316 
318 {
319  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
320  return basedesc ? 4+basedesc->getFieldCount() : 4;
321 }
322 
323 unsigned int PDUDataDescriptor::getFieldTypeFlags(int field) const
324 {
325  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
326  if (basedesc) {
327  if (field < basedesc->getFieldCount())
328  return basedesc->getFieldTypeFlags(field);
329  field -= basedesc->getFieldCount();
330  }
331  static unsigned int fieldTypeFlags[] = {
332  FD_ISEDITABLE,
333  FD_ISEDITABLE,
334  FD_ISEDITABLE,
335  FD_ISEDITABLE,
336  };
337  return (field>=0 && field<4) ? fieldTypeFlags[field] : 0;
338 }
339 
340 const char *PDUDataDescriptor::getFieldName(int field) const
341 {
342  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
343  if (basedesc) {
344  if (field < basedesc->getFieldCount())
345  return basedesc->getFieldName(field);
346  field -= basedesc->getFieldCount();
347  }
348  static const char *fieldNames[] = {
349  "midFragment",
350  "firstFragment",
351  "lastFragment",
352  "completeSDU",
353  };
354  return (field>=0 && field<4) ? fieldNames[field] : nullptr;
355 }
356 
357 int PDUDataDescriptor::findField(const char *fieldName) const
358 {
359  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
360  int base = basedesc ? basedesc->getFieldCount() : 0;
361  if (fieldName[0]=='m' && strcmp(fieldName, "midFragment")==0) return base+0;
362  if (fieldName[0]=='f' && strcmp(fieldName, "firstFragment")==0) return base+1;
363  if (fieldName[0]=='l' && strcmp(fieldName, "lastFragment")==0) return base+2;
364  if (fieldName[0]=='c' && strcmp(fieldName, "completeSDU")==0) return base+3;
365  return basedesc ? basedesc->findField(fieldName) : -1;
366 }
367 
368 const char *PDUDataDescriptor::getFieldTypeString(int field) const
369 {
370  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
371  if (basedesc) {
372  if (field < basedesc->getFieldCount())
373  return basedesc->getFieldTypeString(field);
374  field -= basedesc->getFieldCount();
375  }
376  static const char *fieldTypeStrings[] = {
377  "bool",
378  "bool",
379  "bool",
380  "bool",
381  };
382  return (field>=0 && field<4) ? fieldTypeStrings[field] : nullptr;
383 }
384 
385 const char **PDUDataDescriptor::getFieldPropertyNames(int field) const
386 {
387  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
388  if (basedesc) {
389  if (field < basedesc->getFieldCount())
390  return basedesc->getFieldPropertyNames(field);
391  field -= basedesc->getFieldCount();
392  }
393  switch (field) {
394  default: return nullptr;
395  }
396 }
397 
398 const char *PDUDataDescriptor::getFieldProperty(int field, const char *propertyname) const
399 {
400  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
401  if (basedesc) {
402  if (field < basedesc->getFieldCount())
403  return basedesc->getFieldProperty(field, propertyname);
404  field -= basedesc->getFieldCount();
405  }
406  switch (field) {
407  default: return nullptr;
408  }
409 }
410 
411 int PDUDataDescriptor::getFieldArraySize(void *object, int field) const
412 {
413  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
414  if (basedesc) {
415  if (field < basedesc->getFieldCount())
416  return basedesc->getFieldArraySize(object, field);
417  field -= basedesc->getFieldCount();
418  }
419  PDUData_Base *pp = (PDUData_Base *)object; (void)pp;
420  switch (field) {
421  default: return 0;
422  }
423 }
424 
425 std::string PDUDataDescriptor::getFieldValueAsString(void *object, int field, int i) const
426 {
427  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
428  if (basedesc) {
429  if (field < basedesc->getFieldCount())
430  return basedesc->getFieldValueAsString(object,field,i);
431  field -= basedesc->getFieldCount();
432  }
433  PDUData_Base *pp = (PDUData_Base *)object; (void)pp;
434  switch (field) {
435  case 0: return bool2string(pp->getMidFragment());
436  case 1: return bool2string(pp->getFirstFragment());
437  case 2: return bool2string(pp->getLastFragment());
438  case 3: return bool2string(pp->getCompleteSDU());
439  default: return "";
440  }
441 }
442 
443 bool PDUDataDescriptor::setFieldValueAsString(void *object, int field, int i, const char *value) const
444 {
445  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
446  if (basedesc) {
447  if (field < basedesc->getFieldCount())
448  return basedesc->setFieldValueAsString(object,field,i,value);
449  field -= basedesc->getFieldCount();
450  }
451  PDUData_Base *pp = (PDUData_Base *)object; (void)pp;
452  switch (field) {
453  case 0: pp->setMidFragment(string2bool(value)); return true;
454  case 1: pp->setFirstFragment(string2bool(value)); return true;
455  case 2: pp->setLastFragment(string2bool(value)); return true;
456  case 3: pp->setCompleteSDU(string2bool(value)); return true;
457  default: return false;
458  }
459 }
460 
461 const char *PDUDataDescriptor::getFieldStructName(int field) const
462 {
463  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
464  if (basedesc) {
465  if (field < basedesc->getFieldCount())
466  return basedesc->getFieldStructName(field);
467  field -= basedesc->getFieldCount();
468  }
469  switch (field) {
470  default: return nullptr;
471  };
472 }
473 
474 void *PDUDataDescriptor::getFieldStructValuePointer(void *object, int field, int i) const
475 {
476  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
477  if (basedesc) {
478  if (field < basedesc->getFieldCount())
479  return basedesc->getFieldStructValuePointer(object, field, i);
480  field -= basedesc->getFieldCount();
481  }
482  PDUData_Base *pp = (PDUData_Base *)object; (void)pp;
483  switch (field) {
484  default: return nullptr;
485  }
486 }
487 
488 
virtual const char * getFieldProperty(int field, const char *propertyname) const override
Definition: PDUData_m.cc:398
virtual void setCompleteSDU(bool completeSDU)
Definition: PDUData_m.cc:250
virtual int getFieldCount() const override
Definition: PDUData_m.cc:317
Register_ClassDescriptor(PDUDataDescriptor)
virtual const char * getProperty(const char *propertyname) const override
Definition: PDUData_m.cc:310
virtual bool getMidFragment() const
Definition: PDUData_m.cc:215
virtual std::string getFieldValueAsString(void *object, int field, int i) const override
Definition: PDUData_m.cc:425
virtual void setLastFragment(bool lastFragment)
Definition: PDUData_m.cc:240
virtual unsigned int getFieldTypeFlags(int field) const override
Definition: PDUData_m.cc:323
virtual void setMidFragment(bool midFragment)
Definition: PDUData_m.cc:220
virtual int getFieldArraySize(void *object, int field) const override
Definition: PDUData_m.cc:411
virtual bool getCompleteSDU() const
Definition: PDUData_m.cc:245
virtual const char * getFieldName(int field) const override
Definition: PDUData_m.cc:340
PDUData_Base(const char *name=nullptr, int kind=0)
Definition: PDUData_m.cc:164
const char ** propertynames
Definition: PDUData_m.cc:258
void doParsimPacking(omnetpp::cCommBuffer *buffer, const std::vector< T, A > &v)
Definition: PDU_m.cc:22
bool midFragment
Definition: PDUData_m.h:59
virtual void parsimPack(omnetpp::cCommBuffer *b) const
Definition: PDUData_m.cc:197
virtual void parsimUnpack(omnetpp::cCommBuffer *b)
Definition: PDUData_m.cc:206
void doParsimUnpacking(omnetpp::cCommBuffer *buffer, std::vector< T, A > &v)
Definition: PDU_m.cc:31
virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override
Definition: PDUData_m.cc:443
virtual bool getLastFragment() const
Definition: PDUData_m.cc:235
void doParsimArrayUnpacking(omnetpp::cCommBuffer *b, T *t, int n)
Definition: PDU_m.cc:114
virtual bool doesSupport(omnetpp::cObject *obj) const override
Definition: PDUData_m.cc:294
virtual const char * getFieldStructName(int field) const override
Definition: PDUData_m.cc:461
std::ostream & operator<<(std::ostream &out, const std::vector< T, A > &vec)
Definition: PDUData_m.cc:146
virtual int findField(const char *fieldName) const override
Definition: PDUData_m.cc:357
bool lastFragment
Definition: PDUData_m.h:61
Definition: PDU_m.cc:15
void copy(const PDUData_Base &other)
Definition: PDUData_m.cc:189
virtual void setFirstFragment(bool firstFragment)
Definition: PDUData_m.cc:230
virtual void * getFieldStructValuePointer(void *object, int field, int i) const override
Definition: PDUData_m.cc:474
virtual ~PDUData_Base()
Definition: PDUData_m.cc:177
virtual ~PDUDataDescriptor()
Definition: PDUData_m.cc:289
bool firstFragment
Definition: PDUData_m.h:60
virtual const char * getFieldTypeString(int field) const override
Definition: PDUData_m.cc:368
PDUData_Base & operator=(const PDUData_Base &other)
Definition: PDUData_m.cc:181
virtual const char ** getFieldPropertyNames(int field) const override
Definition: PDUData_m.cc:385
bool completeSDU
Definition: PDUData_m.h:62
virtual const char ** getPropertyNames() const override
Definition: PDUData_m.cc:299
void doParsimArrayPacking(omnetpp::cCommBuffer *b, const T *t, int n)
Definition: PDU_m.cc:107
virtual bool getFirstFragment() const
Definition: PDUData_m.cc:225