RINASim  October 2016
Documentation of framework for OMNeT++
SDU_m.cc
Go to the documentation of this file.
1 //
2 // Generated file, do not edit! Created by nedtool 5.0 from Common/SDU.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 "SDU_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 
165  omnetpp::cEnum *e = omnetpp::cEnum::find("FragmentType");
166  if (!e) omnetpp::enums.getInstance()->add(e = new omnetpp::cEnum("FragmentType"));
167  e->insert(SDU_FRAG_FIRST, "SDU_FRAG_FIRST");
168  e->insert(SDU_FRAG_MIDDLE, "SDU_FRAG_MIDDLE");
169  e->insert(SDU_FRAG_LAST, "SDU_FRAG_LAST");
170 );
171 
172 SDU_Base::SDU_Base(const char *name, int kind) : ::Data(name,kind)
173 {
174  this->setSchedulingPriority(-1);
175  this->setByteLength(10);
176 
177  this->size = 0;
178  this->offset = 0;
179  this->fSize = 0;
180  this->fOffset = 0;
181  this->seqNum = 0;
182  this->fSeqNum = 0;
183  this->fragType = 0;
184 }
185 
186 SDU_Base::SDU_Base(const SDU_Base& other) : ::Data(other)
187 {
188  copy(other);
189 }
190 
192 {
193 }
194 
196 {
197  if (this==&other) return *this;
198  ::Data::operator=(other);
199  copy(other);
200  return *this;
201 }
202 
203 void SDU_Base::copy(const SDU_Base& other)
204 {
205  this->size = other.size;
206  this->offset = other.offset;
207  this->fSize = other.fSize;
208  this->fOffset = other.fOffset;
209  this->seqNum = other.seqNum;
210  this->fSeqNum = other.fSeqNum;
211  this->fragType = other.fragType;
212 }
213 
214 void SDU_Base::parsimPack(omnetpp::cCommBuffer *b) const
215 {
217  doParsimPacking(b,this->size);
218  doParsimPacking(b,this->offset);
219  doParsimPacking(b,this->fSize);
220  doParsimPacking(b,this->fOffset);
221  doParsimPacking(b,this->seqNum);
222  doParsimPacking(b,this->fSeqNum);
223  doParsimPacking(b,this->fragType);
224 }
225 
226 void SDU_Base::parsimUnpack(omnetpp::cCommBuffer *b)
227 {
229  doParsimUnpacking(b,this->size);
230  doParsimUnpacking(b,this->offset);
231  doParsimUnpacking(b,this->fSize);
232  doParsimUnpacking(b,this->fOffset);
233  doParsimUnpacking(b,this->seqNum);
234  doParsimUnpacking(b,this->fSeqNum);
235  doParsimUnpacking(b,this->fragType);
236 }
237 
238 unsigned int SDU_Base::getSize() const
239 {
240  return this->size;
241 }
242 
243 void SDU_Base::setSize(unsigned int size)
244 {
245  this->size = size;
246 }
247 
248 unsigned int SDU_Base::getOffset() const
249 {
250  return this->offset;
251 }
252 
253 void SDU_Base::setOffset(unsigned int offset)
254 {
255  this->offset = offset;
256 }
257 
258 unsigned int SDU_Base::getFSize() const
259 {
260  return this->fSize;
261 }
262 
263 void SDU_Base::setFSize(unsigned int fSize)
264 {
265  this->fSize = fSize;
266 }
267 
268 unsigned int SDU_Base::getFOffset() const
269 {
270  return this->fOffset;
271 }
272 
273 void SDU_Base::setFOffset(unsigned int fOffset)
274 {
275  this->fOffset = fOffset;
276 }
277 
278 unsigned int SDU_Base::getSeqNum() const
279 {
280  return this->seqNum;
281 }
282 
283 void SDU_Base::setSeqNum(unsigned int seqNum)
284 {
285  this->seqNum = seqNum;
286 }
287 
288 unsigned int SDU_Base::getFSeqNum() const
289 {
290  return this->fSeqNum;
291 }
292 
293 void SDU_Base::setFSeqNum(unsigned int fSeqNum)
294 {
295  this->fSeqNum = fSeqNum;
296 }
297 
299 {
300  return this->fragType;
301 }
302 
303 void SDU_Base::setFragType(int fragType)
304 {
305  this->fragType = fragType;
306 }
307 
308 class SDUDescriptor : public omnetpp::cClassDescriptor
309 {
310  private:
311  mutable const char **propertynames;
312  public:
313  SDUDescriptor();
314  virtual ~SDUDescriptor();
315 
316  virtual bool doesSupport(omnetpp::cObject *obj) const override;
317  virtual const char **getPropertyNames() const override;
318  virtual const char *getProperty(const char *propertyname) const override;
319  virtual int getFieldCount() const override;
320  virtual const char *getFieldName(int field) const override;
321  virtual int findField(const char *fieldName) const override;
322  virtual unsigned int getFieldTypeFlags(int field) const override;
323  virtual const char *getFieldTypeString(int field) const override;
324  virtual const char **getFieldPropertyNames(int field) const override;
325  virtual const char *getFieldProperty(int field, const char *propertyname) const override;
326  virtual int getFieldArraySize(void *object, int field) const override;
327 
328  virtual std::string getFieldValueAsString(void *object, int field, int i) const override;
329  virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override;
330 
331  virtual const char *getFieldStructName(int field) const override;
332  virtual void *getFieldStructValuePointer(void *object, int field, int i) const override;
333 };
334 
336 
337 SDUDescriptor::SDUDescriptor() : omnetpp::cClassDescriptor("SDU", "Data")
338 {
339  propertynames = nullptr;
340 }
341 
343 {
344  delete[] propertynames;
345 }
346 
347 bool SDUDescriptor::doesSupport(omnetpp::cObject *obj) const
348 {
349  return dynamic_cast<SDU_Base *>(obj)!=nullptr;
350 }
351 
353 {
354  if (!propertynames) {
355  static const char *names[] = { "customize", nullptr };
356  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
357  const char **basenames = basedesc ? basedesc->getPropertyNames() : nullptr;
358  propertynames = mergeLists(basenames, names);
359  }
360  return propertynames;
361 }
362 
363 const char *SDUDescriptor::getProperty(const char *propertyname) const
364 {
365  if (!strcmp(propertyname,"customize")) return "true";
366  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
367  return basedesc ? basedesc->getProperty(propertyname) : nullptr;
368 }
369 
371 {
372  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
373  return basedesc ? 7+basedesc->getFieldCount() : 7;
374 }
375 
376 unsigned int SDUDescriptor::getFieldTypeFlags(int field) const
377 {
378  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
379  if (basedesc) {
380  if (field < basedesc->getFieldCount())
381  return basedesc->getFieldTypeFlags(field);
382  field -= basedesc->getFieldCount();
383  }
384  static unsigned int fieldTypeFlags[] = {
385  FD_ISEDITABLE,
386  FD_ISEDITABLE,
387  FD_ISEDITABLE,
388  FD_ISEDITABLE,
389  FD_ISEDITABLE,
390  FD_ISEDITABLE,
391  FD_ISEDITABLE,
392  };
393  return (field>=0 && field<7) ? fieldTypeFlags[field] : 0;
394 }
395 
396 const char *SDUDescriptor::getFieldName(int field) const
397 {
398  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
399  if (basedesc) {
400  if (field < basedesc->getFieldCount())
401  return basedesc->getFieldName(field);
402  field -= basedesc->getFieldCount();
403  }
404  static const char *fieldNames[] = {
405  "size",
406  "offset",
407  "fSize",
408  "fOffset",
409  "seqNum",
410  "fSeqNum",
411  "fragType",
412  };
413  return (field>=0 && field<7) ? fieldNames[field] : nullptr;
414 }
415 
416 int SDUDescriptor::findField(const char *fieldName) const
417 {
418  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
419  int base = basedesc ? basedesc->getFieldCount() : 0;
420  if (fieldName[0]=='s' && strcmp(fieldName, "size")==0) return base+0;
421  if (fieldName[0]=='o' && strcmp(fieldName, "offset")==0) return base+1;
422  if (fieldName[0]=='f' && strcmp(fieldName, "fSize")==0) return base+2;
423  if (fieldName[0]=='f' && strcmp(fieldName, "fOffset")==0) return base+3;
424  if (fieldName[0]=='s' && strcmp(fieldName, "seqNum")==0) return base+4;
425  if (fieldName[0]=='f' && strcmp(fieldName, "fSeqNum")==0) return base+5;
426  if (fieldName[0]=='f' && strcmp(fieldName, "fragType")==0) return base+6;
427  return basedesc ? basedesc->findField(fieldName) : -1;
428 }
429 
430 const char *SDUDescriptor::getFieldTypeString(int field) const
431 {
432  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
433  if (basedesc) {
434  if (field < basedesc->getFieldCount())
435  return basedesc->getFieldTypeString(field);
436  field -= basedesc->getFieldCount();
437  }
438  static const char *fieldTypeStrings[] = {
439  "unsigned int",
440  "unsigned int",
441  "unsigned int",
442  "unsigned int",
443  "unsigned int",
444  "unsigned int",
445  "int",
446  };
447  return (field>=0 && field<7) ? fieldTypeStrings[field] : nullptr;
448 }
449 
450 const char **SDUDescriptor::getFieldPropertyNames(int field) const
451 {
452  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
453  if (basedesc) {
454  if (field < basedesc->getFieldCount())
455  return basedesc->getFieldPropertyNames(field);
456  field -= basedesc->getFieldCount();
457  }
458  switch (field) {
459  case 6: {
460  static const char *names[] = { "enum", nullptr };
461  return names;
462  }
463  default: return nullptr;
464  }
465 }
466 
467 const char *SDUDescriptor::getFieldProperty(int field, const char *propertyname) const
468 {
469  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
470  if (basedesc) {
471  if (field < basedesc->getFieldCount())
472  return basedesc->getFieldProperty(field, propertyname);
473  field -= basedesc->getFieldCount();
474  }
475  switch (field) {
476  case 6:
477  if (!strcmp(propertyname,"enum")) return "FragmentType";
478  return nullptr;
479  default: return nullptr;
480  }
481 }
482 
483 int SDUDescriptor::getFieldArraySize(void *object, int field) const
484 {
485  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
486  if (basedesc) {
487  if (field < basedesc->getFieldCount())
488  return basedesc->getFieldArraySize(object, field);
489  field -= basedesc->getFieldCount();
490  }
491  SDU_Base *pp = (SDU_Base *)object; (void)pp;
492  switch (field) {
493  default: return 0;
494  }
495 }
496 
497 std::string SDUDescriptor::getFieldValueAsString(void *object, int field, int i) const
498 {
499  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
500  if (basedesc) {
501  if (field < basedesc->getFieldCount())
502  return basedesc->getFieldValueAsString(object,field,i);
503  field -= basedesc->getFieldCount();
504  }
505  SDU_Base *pp = (SDU_Base *)object; (void)pp;
506  switch (field) {
507  case 0: return ulong2string(pp->getSize());
508  case 1: return ulong2string(pp->getOffset());
509  case 2: return ulong2string(pp->getFSize());
510  case 3: return ulong2string(pp->getFOffset());
511  case 4: return ulong2string(pp->getSeqNum());
512  case 5: return ulong2string(pp->getFSeqNum());
513  case 6: return enum2string(pp->getFragType(), "FragmentType");
514  default: return "";
515  }
516 }
517 
518 bool SDUDescriptor::setFieldValueAsString(void *object, int field, int i, const char *value) const
519 {
520  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
521  if (basedesc) {
522  if (field < basedesc->getFieldCount())
523  return basedesc->setFieldValueAsString(object,field,i,value);
524  field -= basedesc->getFieldCount();
525  }
526  SDU_Base *pp = (SDU_Base *)object; (void)pp;
527  switch (field) {
528  case 0: pp->setSize(string2ulong(value)); return true;
529  case 1: pp->setOffset(string2ulong(value)); return true;
530  case 2: pp->setFSize(string2ulong(value)); return true;
531  case 3: pp->setFOffset(string2ulong(value)); return true;
532  case 4: pp->setSeqNum(string2ulong(value)); return true;
533  case 5: pp->setFSeqNum(string2ulong(value)); return true;
534  case 6: pp->setFragType((FragmentType)string2enum(value, "FragmentType")); return true;
535  default: return false;
536  }
537 }
538 
539 const char *SDUDescriptor::getFieldStructName(int field) const
540 {
541  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
542  if (basedesc) {
543  if (field < basedesc->getFieldCount())
544  return basedesc->getFieldStructName(field);
545  field -= basedesc->getFieldCount();
546  }
547  switch (field) {
548  default: return nullptr;
549  };
550 }
551 
552 void *SDUDescriptor::getFieldStructValuePointer(void *object, int field, int i) const
553 {
554  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
555  if (basedesc) {
556  if (field < basedesc->getFieldCount())
557  return basedesc->getFieldStructValuePointer(object, field, i);
558  field -= basedesc->getFieldCount();
559  }
560  SDU_Base *pp = (SDU_Base *)object; (void)pp;
561  switch (field) {
562  default: return nullptr;
563  }
564 }
565 
566 
virtual void setSize(unsigned int size)
Definition: SDU_m.cc:243
virtual unsigned int getFSeqNum() const
Definition: SDU_m.cc:288
virtual const char ** getPropertyNames() const override
Definition: SDU_m.cc:352
virtual int getFieldArraySize(void *object, int field) const override
Definition: SDU_m.cc:483
std::ostream & operator<<(std::ostream &out, const std::vector< T, A > &vec)
Definition: SDU_m.cc:146
const char ** propertynames
Definition: SDU_m.cc:311
FragmentType
Definition: SDU_m.h:36
Definition: Data.h:36
virtual std::string getFieldValueAsString(void *object, int field, int i) const override
Definition: SDU_m.cc:497
virtual void setSeqNum(unsigned int seqNum)
Definition: SDU_m.cc:283
virtual void parsimPack(omnetpp::cCommBuffer *b) const
Definition: Data_m.cc:202
SDUDescriptor()
Definition: SDU_m.cc:337
Definition: SDU_m.h:88
virtual unsigned int getSeqNum() const
Definition: SDU_m.cc:278
virtual unsigned int getSize() const
Definition: SDU_m.cc:238
virtual const char * getFieldTypeString(int field) const override
Definition: SDU_m.cc:430
virtual void * getFieldStructValuePointer(void *object, int field, int i) const override
Definition: SDU_m.cc:552
virtual const char * getFieldName(int field) const override
Definition: SDU_m.cc:396
EXECUTE_ON_STARTUP(omnetpp::cEnum *e=omnetpp::cEnum::find("FragmentType");if(!e) omnetpp::enums.getInstance() ->add(e=new omnetpp::cEnum("FragmentType"));e->insert(SDU_FRAG_FIRST,"SDU_FRAG_FIRST");e->insert(SDU_FRAG_MIDDLE,"SDU_FRAG_MIDDLE");e->insert(SDU_FRAG_LAST,"SDU_FRAG_LAST");)
virtual const char * getProperty(const char *propertyname) const override
Definition: SDU_m.cc:363
void doParsimPacking(omnetpp::cCommBuffer *buffer, const std::vector< T, A > &v)
Definition: PDU_m.cc:22
virtual ~SDUDescriptor()
Definition: SDU_m.cc:342
virtual unsigned int getFSize() const
Definition: SDU_m.cc:258
SDU_Base & operator=(const SDU_Base &other)
Definition: SDU_m.cc:195
void copy(const SDU_Base &other)
Definition: SDU_m.cc:203
Register_ClassDescriptor(SDUDescriptor)
virtual unsigned int getFieldTypeFlags(int field) const override
Definition: SDU_m.cc:376
virtual bool doesSupport(omnetpp::cObject *obj) const override
Definition: SDU_m.cc:347
unsigned int fSeqNum
Definition: SDU_m.h:96
virtual void setOffset(unsigned int offset)
Definition: SDU_m.cc:253
void doParsimUnpacking(omnetpp::cCommBuffer *buffer, std::vector< T, A > &v)
Definition: PDU_m.cc:31
int fragType
Definition: SDU_m.h:97
void doParsimArrayUnpacking(omnetpp::cCommBuffer *b, T *t, int n)
Definition: PDU_m.cc:114
unsigned int size
Definition: SDU_m.h:91
SDU_Base(const char *name=nullptr, int kind=0)
Definition: SDU_m.cc:172
virtual void parsimUnpack(omnetpp::cCommBuffer *b)
Definition: Data_m.cc:209
virtual const char * getFieldProperty(int field, const char *propertyname) const override
Definition: SDU_m.cc:467
virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override
Definition: SDU_m.cc:518
virtual ~SDU_Base()
Definition: SDU_m.cc:191
Definition: PDU_m.cc:15
virtual unsigned int getFOffset() const
Definition: SDU_m.cc:268
virtual void setFOffset(unsigned int fOffset)
Definition: SDU_m.cc:273
virtual void setFSize(unsigned int fSize)
Definition: SDU_m.cc:263
virtual void parsimPack(omnetpp::cCommBuffer *b) const
Definition: SDU_m.cc:214
unsigned int seqNum
Definition: SDU_m.h:95
virtual const char ** getFieldPropertyNames(int field) const override
Definition: SDU_m.cc:450
virtual int getFieldCount() const override
Definition: SDU_m.cc:370
virtual int findField(const char *fieldName) const override
Definition: SDU_m.cc:416
unsigned int offset
Definition: SDU_m.h:92
virtual void setFragType(int fragType)
Definition: SDU_m.cc:303
virtual void setFSeqNum(unsigned int fSeqNum)
Definition: SDU_m.cc:293
unsigned int fSize
Definition: SDU_m.h:93
virtual void parsimUnpack(omnetpp::cCommBuffer *b)
Definition: SDU_m.cc:226
virtual unsigned int getOffset() const
Definition: SDU_m.cc:248
virtual const char * getFieldStructName(int field) const override
Definition: SDU_m.cc:539
unsigned int fOffset
Definition: SDU_m.h:94
void doParsimArrayPacking(omnetpp::cCommBuffer *b, const T *t, int n)
Definition: PDU_m.cc:107
virtual int getFragType() const
Definition: SDU_m.cc:298