RINASim  October 2016
Documentation of framework for OMNeT++
DTPTimers_m.cc
Go to the documentation of this file.
1 //
2 // Generated file, do not edit! Created by nedtool 5.0 from DIF/EFCP/DTP/DTPTimers.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 "DTPTimers_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("DTPTimerType");
166  if (!e) omnetpp::enums.getInstance()->add(e = new omnetpp::cEnum("DTPTimerType"));
167  e->insert(DTP_SENDER_INACTIVITY_TIMER, "DTP_SENDER_INACTIVITY_TIMER");
168  e->insert(DTP_RCVR_INACTIVITY_TIMER, "DTP_RCVR_INACTIVITY_TIMER");
169  e->insert(DTP_A_TIMER, "DTP_A_TIMER");
170  e->insert(DTP_INTERRUPTER_TIMER, "DTP_INTERRUPTER_TIMER");
171 );
172 
174  omnetpp::cEnum *e = omnetpp::cEnum::find("InterrupterActionType");
175  if (!e) omnetpp::enums.getInstance()->add(e = new omnetpp::cEnum("InterrupterActionType"));
176  e->insert(INTERRUPTER_ZERO_RCV_CREDIT, "INTERRUPTER_ZERO_RCV_CREDIT");
177  e->insert(INTERRUPTER_INFLATE_RCV_CREDIT, "INTERRUPTER_INFLATE_RCV_CREDIT");
178 );
179 
181 
182 DTPTimers::DTPTimers(const char *name, int kind) : ::omnetpp::cMessage(name,kind)
183 {
184  this->type = 0;
185 }
186 
187 DTPTimers::DTPTimers(const DTPTimers& other) : ::omnetpp::cMessage(other)
188 {
189  copy(other);
190 }
191 
193 {
194 }
195 
197 {
198  if (this==&other) return *this;
199  ::omnetpp::cMessage::operator=(other);
200  copy(other);
201  return *this;
202 }
203 
204 void DTPTimers::copy(const DTPTimers& other)
205 {
206  this->type = other.type;
207 }
208 
209 void DTPTimers::parsimPack(omnetpp::cCommBuffer *b) const
210 {
211  ::omnetpp::cMessage::parsimPack(b);
212  doParsimPacking(b,this->type);
213 }
214 
215 void DTPTimers::parsimUnpack(omnetpp::cCommBuffer *b)
216 {
217  ::omnetpp::cMessage::parsimUnpack(b);
218  doParsimUnpacking(b,this->type);
219 }
220 
222 {
223  return this->type;
224 }
225 
226 void DTPTimers::setType(int type)
227 {
228  this->type = type;
229 }
230 
231 class DTPTimersDescriptor : public omnetpp::cClassDescriptor
232 {
233  private:
234  mutable const char **propertynames;
235  public:
237  virtual ~DTPTimersDescriptor();
238 
239  virtual bool doesSupport(omnetpp::cObject *obj) const override;
240  virtual const char **getPropertyNames() const override;
241  virtual const char *getProperty(const char *propertyname) const override;
242  virtual int getFieldCount() const override;
243  virtual const char *getFieldName(int field) const override;
244  virtual int findField(const char *fieldName) const override;
245  virtual unsigned int getFieldTypeFlags(int field) const override;
246  virtual const char *getFieldTypeString(int field) const override;
247  virtual const char **getFieldPropertyNames(int field) const override;
248  virtual const char *getFieldProperty(int field, const char *propertyname) const override;
249  virtual int getFieldArraySize(void *object, int field) const override;
250 
251  virtual std::string getFieldValueAsString(void *object, int field, int i) const override;
252  virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override;
253 
254  virtual const char *getFieldStructName(int field) const override;
255  virtual void *getFieldStructValuePointer(void *object, int field, int i) const override;
256 };
257 
259 
260 DTPTimersDescriptor::DTPTimersDescriptor() : omnetpp::cClassDescriptor("DTPTimers", "omnetpp::cMessage")
261 {
262  propertynames = nullptr;
263 }
264 
266 {
267  delete[] propertynames;
268 }
269 
270 bool DTPTimersDescriptor::doesSupport(omnetpp::cObject *obj) const
271 {
272  return dynamic_cast<DTPTimers *>(obj)!=nullptr;
273 }
274 
276 {
277  if (!propertynames) {
278  static const char *names[] = { nullptr };
279  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
280  const char **basenames = basedesc ? basedesc->getPropertyNames() : nullptr;
281  propertynames = mergeLists(basenames, names);
282  }
283  return propertynames;
284 }
285 
286 const char *DTPTimersDescriptor::getProperty(const char *propertyname) const
287 {
288  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
289  return basedesc ? basedesc->getProperty(propertyname) : nullptr;
290 }
291 
293 {
294  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
295  return basedesc ? 1+basedesc->getFieldCount() : 1;
296 }
297 
298 unsigned int DTPTimersDescriptor::getFieldTypeFlags(int field) const
299 {
300  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
301  if (basedesc) {
302  if (field < basedesc->getFieldCount())
303  return basedesc->getFieldTypeFlags(field);
304  field -= basedesc->getFieldCount();
305  }
306  static unsigned int fieldTypeFlags[] = {
307  FD_ISEDITABLE,
308  };
309  return (field>=0 && field<1) ? fieldTypeFlags[field] : 0;
310 }
311 
312 const char *DTPTimersDescriptor::getFieldName(int field) const
313 {
314  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
315  if (basedesc) {
316  if (field < basedesc->getFieldCount())
317  return basedesc->getFieldName(field);
318  field -= basedesc->getFieldCount();
319  }
320  static const char *fieldNames[] = {
321  "type",
322  };
323  return (field>=0 && field<1) ? fieldNames[field] : nullptr;
324 }
325 
326 int DTPTimersDescriptor::findField(const char *fieldName) const
327 {
328  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
329  int base = basedesc ? basedesc->getFieldCount() : 0;
330  if (fieldName[0]=='t' && strcmp(fieldName, "type")==0) return base+0;
331  return basedesc ? basedesc->findField(fieldName) : -1;
332 }
333 
334 const char *DTPTimersDescriptor::getFieldTypeString(int field) const
335 {
336  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
337  if (basedesc) {
338  if (field < basedesc->getFieldCount())
339  return basedesc->getFieldTypeString(field);
340  field -= basedesc->getFieldCount();
341  }
342  static const char *fieldTypeStrings[] = {
343  "int",
344  };
345  return (field>=0 && field<1) ? fieldTypeStrings[field] : nullptr;
346 }
347 
348 const char **DTPTimersDescriptor::getFieldPropertyNames(int field) const
349 {
350  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
351  if (basedesc) {
352  if (field < basedesc->getFieldCount())
353  return basedesc->getFieldPropertyNames(field);
354  field -= basedesc->getFieldCount();
355  }
356  switch (field) {
357  case 0: {
358  static const char *names[] = { "enum", nullptr };
359  return names;
360  }
361  default: return nullptr;
362  }
363 }
364 
365 const char *DTPTimersDescriptor::getFieldProperty(int field, const char *propertyname) const
366 {
367  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
368  if (basedesc) {
369  if (field < basedesc->getFieldCount())
370  return basedesc->getFieldProperty(field, propertyname);
371  field -= basedesc->getFieldCount();
372  }
373  switch (field) {
374  case 0:
375  if (!strcmp(propertyname,"enum")) return "DTPTimerType";
376  return nullptr;
377  default: return nullptr;
378  }
379 }
380 
381 int DTPTimersDescriptor::getFieldArraySize(void *object, int field) const
382 {
383  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
384  if (basedesc) {
385  if (field < basedesc->getFieldCount())
386  return basedesc->getFieldArraySize(object, field);
387  field -= basedesc->getFieldCount();
388  }
389  DTPTimers *pp = (DTPTimers *)object; (void)pp;
390  switch (field) {
391  default: return 0;
392  }
393 }
394 
395 std::string DTPTimersDescriptor::getFieldValueAsString(void *object, int field, int i) const
396 {
397  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
398  if (basedesc) {
399  if (field < basedesc->getFieldCount())
400  return basedesc->getFieldValueAsString(object,field,i);
401  field -= basedesc->getFieldCount();
402  }
403  DTPTimers *pp = (DTPTimers *)object; (void)pp;
404  switch (field) {
405  case 0: return enum2string(pp->getType(), "DTPTimerType");
406  default: return "";
407  }
408 }
409 
410 bool DTPTimersDescriptor::setFieldValueAsString(void *object, int field, int i, const char *value) const
411 {
412  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
413  if (basedesc) {
414  if (field < basedesc->getFieldCount())
415  return basedesc->setFieldValueAsString(object,field,i,value);
416  field -= basedesc->getFieldCount();
417  }
418  DTPTimers *pp = (DTPTimers *)object; (void)pp;
419  switch (field) {
420  case 0: pp->setType((DTPTimerType)string2enum(value, "DTPTimerType")); return true;
421  default: return false;
422  }
423 }
424 
425 const char *DTPTimersDescriptor::getFieldStructName(int field) const
426 {
427  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
428  if (basedesc) {
429  if (field < basedesc->getFieldCount())
430  return basedesc->getFieldStructName(field);
431  field -= basedesc->getFieldCount();
432  }
433  switch (field) {
434  default: return nullptr;
435  };
436 }
437 
438 void *DTPTimersDescriptor::getFieldStructValuePointer(void *object, int field, int i) const
439 {
440  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
441  if (basedesc) {
442  if (field < basedesc->getFieldCount())
443  return basedesc->getFieldStructValuePointer(object, field, i);
444  field -= basedesc->getFieldCount();
445  }
446  DTPTimers *pp = (DTPTimers *)object; (void)pp;
447  switch (field) {
448  default: return nullptr;
449  }
450 }
451 
453 
454 InactivityTimer::InactivityTimer(const char *name, int kind) : ::DTPTimers(name,kind)
455 {
456 }
457 
459 {
460  copy(other);
461 }
462 
464 {
465 }
466 
468 {
469  if (this==&other) return *this;
470  ::DTPTimers::operator=(other);
471  copy(other);
472  return *this;
473 }
474 
476 {
477 }
478 
479 void InactivityTimer::parsimPack(omnetpp::cCommBuffer *b) const
480 {
482 }
483 
484 void InactivityTimer::parsimUnpack(omnetpp::cCommBuffer *b)
485 {
487 }
488 
489 class InactivityTimerDescriptor : public omnetpp::cClassDescriptor
490 {
491  private:
492  mutable const char **propertynames;
493  public:
495  virtual ~InactivityTimerDescriptor();
496 
497  virtual bool doesSupport(omnetpp::cObject *obj) const override;
498  virtual const char **getPropertyNames() const override;
499  virtual const char *getProperty(const char *propertyname) const override;
500  virtual int getFieldCount() const override;
501  virtual const char *getFieldName(int field) const override;
502  virtual int findField(const char *fieldName) const override;
503  virtual unsigned int getFieldTypeFlags(int field) const override;
504  virtual const char *getFieldTypeString(int field) const override;
505  virtual const char **getFieldPropertyNames(int field) const override;
506  virtual const char *getFieldProperty(int field, const char *propertyname) const override;
507  virtual int getFieldArraySize(void *object, int field) const override;
508 
509  virtual std::string getFieldValueAsString(void *object, int field, int i) const override;
510  virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override;
511 
512  virtual const char *getFieldStructName(int field) const override;
513  virtual void *getFieldStructValuePointer(void *object, int field, int i) const override;
514 };
515 
517 
518 InactivityTimerDescriptor::InactivityTimerDescriptor() : omnetpp::cClassDescriptor("InactivityTimer", "DTPTimers")
519 {
520  propertynames = nullptr;
521 }
522 
524 {
525  delete[] propertynames;
526 }
527 
528 bool InactivityTimerDescriptor::doesSupport(omnetpp::cObject *obj) const
529 {
530  return dynamic_cast<InactivityTimer *>(obj)!=nullptr;
531 }
532 
534 {
535  if (!propertynames) {
536  static const char *names[] = { nullptr };
537  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
538  const char **basenames = basedesc ? basedesc->getPropertyNames() : nullptr;
539  propertynames = mergeLists(basenames, names);
540  }
541  return propertynames;
542 }
543 
544 const char *InactivityTimerDescriptor::getProperty(const char *propertyname) const
545 {
546  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
547  return basedesc ? basedesc->getProperty(propertyname) : nullptr;
548 }
549 
551 {
552  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
553  return basedesc ? 0+basedesc->getFieldCount() : 0;
554 }
555 
556 unsigned int InactivityTimerDescriptor::getFieldTypeFlags(int field) const
557 {
558  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
559  if (basedesc) {
560  if (field < basedesc->getFieldCount())
561  return basedesc->getFieldTypeFlags(field);
562  field -= basedesc->getFieldCount();
563  }
564  return 0;
565 }
566 
567 const char *InactivityTimerDescriptor::getFieldName(int field) const
568 {
569  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
570  if (basedesc) {
571  if (field < basedesc->getFieldCount())
572  return basedesc->getFieldName(field);
573  field -= basedesc->getFieldCount();
574  }
575  return nullptr;
576 }
577 
578 int InactivityTimerDescriptor::findField(const char *fieldName) const
579 {
580  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
581  return basedesc ? basedesc->findField(fieldName) : -1;
582 }
583 
585 {
586  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
587  if (basedesc) {
588  if (field < basedesc->getFieldCount())
589  return basedesc->getFieldTypeString(field);
590  field -= basedesc->getFieldCount();
591  }
592  return nullptr;
593 }
594 
596 {
597  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
598  if (basedesc) {
599  if (field < basedesc->getFieldCount())
600  return basedesc->getFieldPropertyNames(field);
601  field -= basedesc->getFieldCount();
602  }
603  switch (field) {
604  default: return nullptr;
605  }
606 }
607 
608 const char *InactivityTimerDescriptor::getFieldProperty(int field, const char *propertyname) const
609 {
610  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
611  if (basedesc) {
612  if (field < basedesc->getFieldCount())
613  return basedesc->getFieldProperty(field, propertyname);
614  field -= basedesc->getFieldCount();
615  }
616  switch (field) {
617  default: return nullptr;
618  }
619 }
620 
621 int InactivityTimerDescriptor::getFieldArraySize(void *object, int field) const
622 {
623  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
624  if (basedesc) {
625  if (field < basedesc->getFieldCount())
626  return basedesc->getFieldArraySize(object, field);
627  field -= basedesc->getFieldCount();
628  }
629  InactivityTimer *pp = (InactivityTimer *)object; (void)pp;
630  switch (field) {
631  default: return 0;
632  }
633 }
634 
635 std::string InactivityTimerDescriptor::getFieldValueAsString(void *object, int field, int i) const
636 {
637  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
638  if (basedesc) {
639  if (field < basedesc->getFieldCount())
640  return basedesc->getFieldValueAsString(object,field,i);
641  field -= basedesc->getFieldCount();
642  }
643  InactivityTimer *pp = (InactivityTimer *)object; (void)pp;
644  switch (field) {
645  default: return "";
646  }
647 }
648 
649 bool InactivityTimerDescriptor::setFieldValueAsString(void *object, int field, int i, const char *value) const
650 {
651  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
652  if (basedesc) {
653  if (field < basedesc->getFieldCount())
654  return basedesc->setFieldValueAsString(object,field,i,value);
655  field -= basedesc->getFieldCount();
656  }
657  InactivityTimer *pp = (InactivityTimer *)object; (void)pp;
658  switch (field) {
659  default: return false;
660  }
661 }
662 
664 {
665  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
666  if (basedesc) {
667  if (field < basedesc->getFieldCount())
668  return basedesc->getFieldStructName(field);
669  field -= basedesc->getFieldCount();
670  }
671  return nullptr;
672 }
673 
674 void *InactivityTimerDescriptor::getFieldStructValuePointer(void *object, int field, int i) const
675 {
676  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
677  if (basedesc) {
678  if (field < basedesc->getFieldCount())
679  return basedesc->getFieldStructValuePointer(object, field, i);
680  field -= basedesc->getFieldCount();
681  }
682  InactivityTimer *pp = (InactivityTimer *)object; (void)pp;
683  switch (field) {
684  default: return nullptr;
685  }
686 }
687 
689 
690 SenderInactivityTimer::SenderInactivityTimer(const char *name, int kind) : ::InactivityTimer(name,kind)
691 {
693 }
694 
696 {
697  copy(other);
698 }
699 
701 {
702 }
703 
705 {
706  if (this==&other) return *this;
707  ::InactivityTimer::operator=(other);
708  copy(other);
709  return *this;
710 }
711 
713 {
714 }
715 
716 void SenderInactivityTimer::parsimPack(omnetpp::cCommBuffer *b) const
717 {
719 }
720 
721 void SenderInactivityTimer::parsimUnpack(omnetpp::cCommBuffer *b)
722 {
724 }
725 
726 class SenderInactivityTimerDescriptor : public omnetpp::cClassDescriptor
727 {
728  private:
729  mutable const char **propertynames;
730  public:
733 
734  virtual bool doesSupport(omnetpp::cObject *obj) const override;
735  virtual const char **getPropertyNames() const override;
736  virtual const char *getProperty(const char *propertyname) const override;
737  virtual int getFieldCount() const override;
738  virtual const char *getFieldName(int field) const override;
739  virtual int findField(const char *fieldName) const override;
740  virtual unsigned int getFieldTypeFlags(int field) const override;
741  virtual const char *getFieldTypeString(int field) const override;
742  virtual const char **getFieldPropertyNames(int field) const override;
743  virtual const char *getFieldProperty(int field, const char *propertyname) const override;
744  virtual int getFieldArraySize(void *object, int field) const override;
745 
746  virtual std::string getFieldValueAsString(void *object, int field, int i) const override;
747  virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override;
748 
749  virtual const char *getFieldStructName(int field) const override;
750  virtual void *getFieldStructValuePointer(void *object, int field, int i) const override;
751 };
752 
754 
755 SenderInactivityTimerDescriptor::SenderInactivityTimerDescriptor() : omnetpp::cClassDescriptor("SenderInactivityTimer", "InactivityTimer")
756 {
757  propertynames = nullptr;
758 }
759 
761 {
762  delete[] propertynames;
763 }
764 
765 bool SenderInactivityTimerDescriptor::doesSupport(omnetpp::cObject *obj) const
766 {
767  return dynamic_cast<SenderInactivityTimer *>(obj)!=nullptr;
768 }
769 
771 {
772  if (!propertynames) {
773  static const char *names[] = { nullptr };
774  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
775  const char **basenames = basedesc ? basedesc->getPropertyNames() : nullptr;
776  propertynames = mergeLists(basenames, names);
777  }
778  return propertynames;
779 }
780 
781 const char *SenderInactivityTimerDescriptor::getProperty(const char *propertyname) const
782 {
783  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
784  return basedesc ? basedesc->getProperty(propertyname) : nullptr;
785 }
786 
788 {
789  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
790  return basedesc ? 0+basedesc->getFieldCount() : 0;
791 }
792 
794 {
795  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
796  if (basedesc) {
797  if (field < basedesc->getFieldCount())
798  return basedesc->getFieldTypeFlags(field);
799  field -= basedesc->getFieldCount();
800  }
801  return 0;
802 }
803 
805 {
806  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
807  if (basedesc) {
808  if (field < basedesc->getFieldCount())
809  return basedesc->getFieldName(field);
810  field -= basedesc->getFieldCount();
811  }
812  return nullptr;
813 }
814 
815 int SenderInactivityTimerDescriptor::findField(const char *fieldName) const
816 {
817  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
818  return basedesc ? basedesc->findField(fieldName) : -1;
819 }
820 
822 {
823  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
824  if (basedesc) {
825  if (field < basedesc->getFieldCount())
826  return basedesc->getFieldTypeString(field);
827  field -= basedesc->getFieldCount();
828  }
829  return nullptr;
830 }
831 
833 {
834  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
835  if (basedesc) {
836  if (field < basedesc->getFieldCount())
837  return basedesc->getFieldPropertyNames(field);
838  field -= basedesc->getFieldCount();
839  }
840  switch (field) {
841  default: return nullptr;
842  }
843 }
844 
845 const char *SenderInactivityTimerDescriptor::getFieldProperty(int field, const char *propertyname) const
846 {
847  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
848  if (basedesc) {
849  if (field < basedesc->getFieldCount())
850  return basedesc->getFieldProperty(field, propertyname);
851  field -= basedesc->getFieldCount();
852  }
853  switch (field) {
854  default: return nullptr;
855  }
856 }
857 
858 int SenderInactivityTimerDescriptor::getFieldArraySize(void *object, int field) const
859 {
860  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
861  if (basedesc) {
862  if (field < basedesc->getFieldCount())
863  return basedesc->getFieldArraySize(object, field);
864  field -= basedesc->getFieldCount();
865  }
866  SenderInactivityTimer *pp = (SenderInactivityTimer *)object; (void)pp;
867  switch (field) {
868  default: return 0;
869  }
870 }
871 
872 std::string SenderInactivityTimerDescriptor::getFieldValueAsString(void *object, int field, int i) const
873 {
874  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
875  if (basedesc) {
876  if (field < basedesc->getFieldCount())
877  return basedesc->getFieldValueAsString(object,field,i);
878  field -= basedesc->getFieldCount();
879  }
880  SenderInactivityTimer *pp = (SenderInactivityTimer *)object; (void)pp;
881  switch (field) {
882  default: return "";
883  }
884 }
885 
886 bool SenderInactivityTimerDescriptor::setFieldValueAsString(void *object, int field, int i, const char *value) const
887 {
888  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
889  if (basedesc) {
890  if (field < basedesc->getFieldCount())
891  return basedesc->setFieldValueAsString(object,field,i,value);
892  field -= basedesc->getFieldCount();
893  }
894  SenderInactivityTimer *pp = (SenderInactivityTimer *)object; (void)pp;
895  switch (field) {
896  default: return false;
897  }
898 }
899 
901 {
902  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
903  if (basedesc) {
904  if (field < basedesc->getFieldCount())
905  return basedesc->getFieldStructName(field);
906  field -= basedesc->getFieldCount();
907  }
908  return nullptr;
909 }
910 
911 void *SenderInactivityTimerDescriptor::getFieldStructValuePointer(void *object, int field, int i) const
912 {
913  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
914  if (basedesc) {
915  if (field < basedesc->getFieldCount())
916  return basedesc->getFieldStructValuePointer(object, field, i);
917  field -= basedesc->getFieldCount();
918  }
919  SenderInactivityTimer *pp = (SenderInactivityTimer *)object; (void)pp;
920  switch (field) {
921  default: return nullptr;
922  }
923 }
924 
926 
927 RcvrInactivityTimer::RcvrInactivityTimer(const char *name, int kind) : ::InactivityTimer(name,kind)
928 {
930 }
931 
933 {
934  copy(other);
935 }
936 
938 {
939 }
940 
942 {
943  if (this==&other) return *this;
944  ::InactivityTimer::operator=(other);
945  copy(other);
946  return *this;
947 }
948 
950 {
951 }
952 
953 void RcvrInactivityTimer::parsimPack(omnetpp::cCommBuffer *b) const
954 {
956 }
957 
958 void RcvrInactivityTimer::parsimUnpack(omnetpp::cCommBuffer *b)
959 {
961 }
962 
963 class RcvrInactivityTimerDescriptor : public omnetpp::cClassDescriptor
964 {
965  private:
966  mutable const char **propertynames;
967  public:
970 
971  virtual bool doesSupport(omnetpp::cObject *obj) const override;
972  virtual const char **getPropertyNames() const override;
973  virtual const char *getProperty(const char *propertyname) const override;
974  virtual int getFieldCount() const override;
975  virtual const char *getFieldName(int field) const override;
976  virtual int findField(const char *fieldName) const override;
977  virtual unsigned int getFieldTypeFlags(int field) const override;
978  virtual const char *getFieldTypeString(int field) const override;
979  virtual const char **getFieldPropertyNames(int field) const override;
980  virtual const char *getFieldProperty(int field, const char *propertyname) const override;
981  virtual int getFieldArraySize(void *object, int field) const override;
982 
983  virtual std::string getFieldValueAsString(void *object, int field, int i) const override;
984  virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override;
985 
986  virtual const char *getFieldStructName(int field) const override;
987  virtual void *getFieldStructValuePointer(void *object, int field, int i) const override;
988 };
989 
991 
992 RcvrInactivityTimerDescriptor::RcvrInactivityTimerDescriptor() : omnetpp::cClassDescriptor("RcvrInactivityTimer", "InactivityTimer")
993 {
994  propertynames = nullptr;
995 }
996 
998 {
999  delete[] propertynames;
1000 }
1001 
1002 bool RcvrInactivityTimerDescriptor::doesSupport(omnetpp::cObject *obj) const
1003 {
1004  return dynamic_cast<RcvrInactivityTimer *>(obj)!=nullptr;
1005 }
1006 
1008 {
1009  if (!propertynames) {
1010  static const char *names[] = { nullptr };
1011  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1012  const char **basenames = basedesc ? basedesc->getPropertyNames() : nullptr;
1013  propertynames = mergeLists(basenames, names);
1014  }
1015  return propertynames;
1016 }
1017 
1018 const char *RcvrInactivityTimerDescriptor::getProperty(const char *propertyname) const
1019 {
1020  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1021  return basedesc ? basedesc->getProperty(propertyname) : nullptr;
1022 }
1023 
1025 {
1026  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1027  return basedesc ? 0+basedesc->getFieldCount() : 0;
1028 }
1029 
1031 {
1032  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1033  if (basedesc) {
1034  if (field < basedesc->getFieldCount())
1035  return basedesc->getFieldTypeFlags(field);
1036  field -= basedesc->getFieldCount();
1037  }
1038  return 0;
1039 }
1040 
1042 {
1043  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1044  if (basedesc) {
1045  if (field < basedesc->getFieldCount())
1046  return basedesc->getFieldName(field);
1047  field -= basedesc->getFieldCount();
1048  }
1049  return nullptr;
1050 }
1051 
1052 int RcvrInactivityTimerDescriptor::findField(const char *fieldName) const
1053 {
1054  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1055  return basedesc ? basedesc->findField(fieldName) : -1;
1056 }
1057 
1059 {
1060  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1061  if (basedesc) {
1062  if (field < basedesc->getFieldCount())
1063  return basedesc->getFieldTypeString(field);
1064  field -= basedesc->getFieldCount();
1065  }
1066  return nullptr;
1067 }
1068 
1070 {
1071  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1072  if (basedesc) {
1073  if (field < basedesc->getFieldCount())
1074  return basedesc->getFieldPropertyNames(field);
1075  field -= basedesc->getFieldCount();
1076  }
1077  switch (field) {
1078  default: return nullptr;
1079  }
1080 }
1081 
1082 const char *RcvrInactivityTimerDescriptor::getFieldProperty(int field, const char *propertyname) const
1083 {
1084  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1085  if (basedesc) {
1086  if (field < basedesc->getFieldCount())
1087  return basedesc->getFieldProperty(field, propertyname);
1088  field -= basedesc->getFieldCount();
1089  }
1090  switch (field) {
1091  default: return nullptr;
1092  }
1093 }
1094 
1095 int RcvrInactivityTimerDescriptor::getFieldArraySize(void *object, int field) const
1096 {
1097  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1098  if (basedesc) {
1099  if (field < basedesc->getFieldCount())
1100  return basedesc->getFieldArraySize(object, field);
1101  field -= basedesc->getFieldCount();
1102  }
1103  RcvrInactivityTimer *pp = (RcvrInactivityTimer *)object; (void)pp;
1104  switch (field) {
1105  default: return 0;
1106  }
1107 }
1108 
1109 std::string RcvrInactivityTimerDescriptor::getFieldValueAsString(void *object, int field, int i) const
1110 {
1111  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1112  if (basedesc) {
1113  if (field < basedesc->getFieldCount())
1114  return basedesc->getFieldValueAsString(object,field,i);
1115  field -= basedesc->getFieldCount();
1116  }
1117  RcvrInactivityTimer *pp = (RcvrInactivityTimer *)object; (void)pp;
1118  switch (field) {
1119  default: return "";
1120  }
1121 }
1122 
1123 bool RcvrInactivityTimerDescriptor::setFieldValueAsString(void *object, int field, int i, const char *value) const
1124 {
1125  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1126  if (basedesc) {
1127  if (field < basedesc->getFieldCount())
1128  return basedesc->setFieldValueAsString(object,field,i,value);
1129  field -= basedesc->getFieldCount();
1130  }
1131  RcvrInactivityTimer *pp = (RcvrInactivityTimer *)object; (void)pp;
1132  switch (field) {
1133  default: return false;
1134  }
1135 }
1136 
1138 {
1139  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1140  if (basedesc) {
1141  if (field < basedesc->getFieldCount())
1142  return basedesc->getFieldStructName(field);
1143  field -= basedesc->getFieldCount();
1144  }
1145  return nullptr;
1146 }
1147 
1148 void *RcvrInactivityTimerDescriptor::getFieldStructValuePointer(void *object, int field, int i) const
1149 {
1150  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1151  if (basedesc) {
1152  if (field < basedesc->getFieldCount())
1153  return basedesc->getFieldStructValuePointer(object, field, i);
1154  field -= basedesc->getFieldCount();
1155  }
1156  RcvrInactivityTimer *pp = (RcvrInactivityTimer *)object; (void)pp;
1157  switch (field) {
1158  default: return nullptr;
1159  }
1160 }
1161 
1163 
1164 ATimer::ATimer(const char *name, int kind) : ::DTPTimers(name,kind)
1165 {
1166  this->setType(DTP_A_TIMER);
1167 
1168  this->pdu = NULL;
1169  this->seqNum = 0;
1170 }
1171 
1172 ATimer::ATimer(const ATimer& other) : ::DTPTimers(other)
1173 {
1174  copy(other);
1175 }
1176 
1178 {
1179 }
1180 
1182 {
1183  if (this==&other) return *this;
1184  ::DTPTimers::operator=(other);
1185  copy(other);
1186  return *this;
1187 }
1188 
1189 void ATimer::copy(const ATimer& other)
1190 {
1191  this->pdu = other.pdu;
1192  this->seqNum = other.seqNum;
1193 }
1194 
1195 void ATimer::parsimPack(omnetpp::cCommBuffer *b) const
1196 {
1198  doParsimPacking(b,this->pdu);
1199  doParsimPacking(b,this->seqNum);
1200 }
1201 
1202 void ATimer::parsimUnpack(omnetpp::cCommBuffer *b)
1203 {
1205  doParsimUnpacking(b,this->pdu);
1206  doParsimUnpacking(b,this->seqNum);
1207 }
1208 
1210 {
1211  return this->pdu;
1212 }
1213 
1214 void ATimer::setPdu(const DTPDU_p& pdu)
1215 {
1216  this->pdu = pdu;
1217 }
1218 
1219 unsigned int ATimer::getSeqNum() const
1220 {
1221  return this->seqNum;
1222 }
1223 
1224 void ATimer::setSeqNum(unsigned int seqNum)
1225 {
1226  this->seqNum = seqNum;
1227 }
1228 
1229 class ATimerDescriptor : public omnetpp::cClassDescriptor
1230 {
1231  private:
1232  mutable const char **propertynames;
1233  public:
1234  ATimerDescriptor();
1235  virtual ~ATimerDescriptor();
1236 
1237  virtual bool doesSupport(omnetpp::cObject *obj) const override;
1238  virtual const char **getPropertyNames() const override;
1239  virtual const char *getProperty(const char *propertyname) const override;
1240  virtual int getFieldCount() const override;
1241  virtual const char *getFieldName(int field) const override;
1242  virtual int findField(const char *fieldName) const override;
1243  virtual unsigned int getFieldTypeFlags(int field) const override;
1244  virtual const char *getFieldTypeString(int field) const override;
1245  virtual const char **getFieldPropertyNames(int field) const override;
1246  virtual const char *getFieldProperty(int field, const char *propertyname) const override;
1247  virtual int getFieldArraySize(void *object, int field) const override;
1248 
1249  virtual std::string getFieldValueAsString(void *object, int field, int i) const override;
1250  virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override;
1251 
1252  virtual const char *getFieldStructName(int field) const override;
1253  virtual void *getFieldStructValuePointer(void *object, int field, int i) const override;
1254 };
1255 
1257 
1258 ATimerDescriptor::ATimerDescriptor() : omnetpp::cClassDescriptor("ATimer", "DTPTimers")
1259 {
1260  propertynames = nullptr;
1261 }
1262 
1264 {
1265  delete[] propertynames;
1266 }
1267 
1268 bool ATimerDescriptor::doesSupport(omnetpp::cObject *obj) const
1269 {
1270  return dynamic_cast<ATimer *>(obj)!=nullptr;
1271 }
1272 
1274 {
1275  if (!propertynames) {
1276  static const char *names[] = { nullptr };
1277  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1278  const char **basenames = basedesc ? basedesc->getPropertyNames() : nullptr;
1279  propertynames = mergeLists(basenames, names);
1280  }
1281  return propertynames;
1282 }
1283 
1284 const char *ATimerDescriptor::getProperty(const char *propertyname) const
1285 {
1286  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1287  return basedesc ? basedesc->getProperty(propertyname) : nullptr;
1288 }
1289 
1291 {
1292  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1293  return basedesc ? 2+basedesc->getFieldCount() : 2;
1294 }
1295 
1296 unsigned int ATimerDescriptor::getFieldTypeFlags(int field) const
1297 {
1298  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1299  if (basedesc) {
1300  if (field < basedesc->getFieldCount())
1301  return basedesc->getFieldTypeFlags(field);
1302  field -= basedesc->getFieldCount();
1303  }
1304  static unsigned int fieldTypeFlags[] = {
1305  FD_ISCOMPOUND,
1306  FD_ISEDITABLE,
1307  };
1308  return (field>=0 && field<2) ? fieldTypeFlags[field] : 0;
1309 }
1310 
1311 const char *ATimerDescriptor::getFieldName(int field) const
1312 {
1313  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1314  if (basedesc) {
1315  if (field < basedesc->getFieldCount())
1316  return basedesc->getFieldName(field);
1317  field -= basedesc->getFieldCount();
1318  }
1319  static const char *fieldNames[] = {
1320  "pdu",
1321  "seqNum",
1322  };
1323  return (field>=0 && field<2) ? fieldNames[field] : nullptr;
1324 }
1325 
1326 int ATimerDescriptor::findField(const char *fieldName) const
1327 {
1328  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1329  int base = basedesc ? basedesc->getFieldCount() : 0;
1330  if (fieldName[0]=='p' && strcmp(fieldName, "pdu")==0) return base+0;
1331  if (fieldName[0]=='s' && strcmp(fieldName, "seqNum")==0) return base+1;
1332  return basedesc ? basedesc->findField(fieldName) : -1;
1333 }
1334 
1335 const char *ATimerDescriptor::getFieldTypeString(int field) const
1336 {
1337  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1338  if (basedesc) {
1339  if (field < basedesc->getFieldCount())
1340  return basedesc->getFieldTypeString(field);
1341  field -= basedesc->getFieldCount();
1342  }
1343  static const char *fieldTypeStrings[] = {
1344  "DTPDU_p",
1345  "unsigned int",
1346  };
1347  return (field>=0 && field<2) ? fieldTypeStrings[field] : nullptr;
1348 }
1349 
1350 const char **ATimerDescriptor::getFieldPropertyNames(int field) const
1351 {
1352  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1353  if (basedesc) {
1354  if (field < basedesc->getFieldCount())
1355  return basedesc->getFieldPropertyNames(field);
1356  field -= basedesc->getFieldCount();
1357  }
1358  switch (field) {
1359  default: return nullptr;
1360  }
1361 }
1362 
1363 const char *ATimerDescriptor::getFieldProperty(int field, const char *propertyname) const
1364 {
1365  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1366  if (basedesc) {
1367  if (field < basedesc->getFieldCount())
1368  return basedesc->getFieldProperty(field, propertyname);
1369  field -= basedesc->getFieldCount();
1370  }
1371  switch (field) {
1372  default: return nullptr;
1373  }
1374 }
1375 
1376 int ATimerDescriptor::getFieldArraySize(void *object, int field) const
1377 {
1378  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1379  if (basedesc) {
1380  if (field < basedesc->getFieldCount())
1381  return basedesc->getFieldArraySize(object, field);
1382  field -= basedesc->getFieldCount();
1383  }
1384  ATimer *pp = (ATimer *)object; (void)pp;
1385  switch (field) {
1386  default: return 0;
1387  }
1388 }
1389 
1390 std::string ATimerDescriptor::getFieldValueAsString(void *object, int field, int i) const
1391 {
1392  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1393  if (basedesc) {
1394  if (field < basedesc->getFieldCount())
1395  return basedesc->getFieldValueAsString(object,field,i);
1396  field -= basedesc->getFieldCount();
1397  }
1398  ATimer *pp = (ATimer *)object; (void)pp;
1399  switch (field) {
1400  case 0: {std::stringstream out; out << pp->getPdu(); return out.str();}
1401  case 1: return ulong2string(pp->getSeqNum());
1402  default: return "";
1403  }
1404 }
1405 
1406 bool ATimerDescriptor::setFieldValueAsString(void *object, int field, int i, const char *value) const
1407 {
1408  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1409  if (basedesc) {
1410  if (field < basedesc->getFieldCount())
1411  return basedesc->setFieldValueAsString(object,field,i,value);
1412  field -= basedesc->getFieldCount();
1413  }
1414  ATimer *pp = (ATimer *)object; (void)pp;
1415  switch (field) {
1416  case 1: pp->setSeqNum(string2ulong(value)); return true;
1417  default: return false;
1418  }
1419 }
1420 
1421 const char *ATimerDescriptor::getFieldStructName(int field) const
1422 {
1423  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1424  if (basedesc) {
1425  if (field < basedesc->getFieldCount())
1426  return basedesc->getFieldStructName(field);
1427  field -= basedesc->getFieldCount();
1428  }
1429  switch (field) {
1430  case 0: return omnetpp::opp_typename(typeid(DTPDU_p));
1431  default: return nullptr;
1432  };
1433 }
1434 
1435 void *ATimerDescriptor::getFieldStructValuePointer(void *object, int field, int i) const
1436 {
1437  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1438  if (basedesc) {
1439  if (field < basedesc->getFieldCount())
1440  return basedesc->getFieldStructValuePointer(object, field, i);
1441  field -= basedesc->getFieldCount();
1442  }
1443  ATimer *pp = (ATimer *)object; (void)pp;
1444  switch (field) {
1445  case 0: return (void *)(&pp->getPdu()); break;
1446  default: return nullptr;
1447  }
1448 }
1449 
1451 
1452 TheInterrupterTimer::TheInterrupterTimer(const char *name, int kind) : ::DTPTimers(name,kind)
1453 {
1455 
1456  this->action = 0;
1457 }
1458 
1460 {
1461  copy(other);
1462 }
1463 
1465 {
1466 }
1467 
1469 {
1470  if (this==&other) return *this;
1471  ::DTPTimers::operator=(other);
1472  copy(other);
1473  return *this;
1474 }
1475 
1477 {
1478  this->action = other.action;
1479 }
1480 
1481 void TheInterrupterTimer::parsimPack(omnetpp::cCommBuffer *b) const
1482 {
1484  doParsimPacking(b,this->action);
1485 }
1486 
1487 void TheInterrupterTimer::parsimUnpack(omnetpp::cCommBuffer *b)
1488 {
1490  doParsimUnpacking(b,this->action);
1491 }
1492 
1494 {
1495  return this->action;
1496 }
1497 
1499 {
1500  this->action = action;
1501 }
1502 
1503 class TheInterrupterTimerDescriptor : public omnetpp::cClassDescriptor
1504 {
1505  private:
1506  mutable const char **propertynames;
1507  public:
1510 
1511  virtual bool doesSupport(omnetpp::cObject *obj) const override;
1512  virtual const char **getPropertyNames() const override;
1513  virtual const char *getProperty(const char *propertyname) const override;
1514  virtual int getFieldCount() const override;
1515  virtual const char *getFieldName(int field) const override;
1516  virtual int findField(const char *fieldName) const override;
1517  virtual unsigned int getFieldTypeFlags(int field) const override;
1518  virtual const char *getFieldTypeString(int field) const override;
1519  virtual const char **getFieldPropertyNames(int field) const override;
1520  virtual const char *getFieldProperty(int field, const char *propertyname) const override;
1521  virtual int getFieldArraySize(void *object, int field) const override;
1522 
1523  virtual std::string getFieldValueAsString(void *object, int field, int i) const override;
1524  virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override;
1525 
1526  virtual const char *getFieldStructName(int field) const override;
1527  virtual void *getFieldStructValuePointer(void *object, int field, int i) const override;
1528 };
1529 
1531 
1532 TheInterrupterTimerDescriptor::TheInterrupterTimerDescriptor() : omnetpp::cClassDescriptor("TheInterrupterTimer", "DTPTimers")
1533 {
1534  propertynames = nullptr;
1535 }
1536 
1538 {
1539  delete[] propertynames;
1540 }
1541 
1542 bool TheInterrupterTimerDescriptor::doesSupport(omnetpp::cObject *obj) const
1543 {
1544  return dynamic_cast<TheInterrupterTimer *>(obj)!=nullptr;
1545 }
1546 
1548 {
1549  if (!propertynames) {
1550  static const char *names[] = { nullptr };
1551  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1552  const char **basenames = basedesc ? basedesc->getPropertyNames() : nullptr;
1553  propertynames = mergeLists(basenames, names);
1554  }
1555  return propertynames;
1556 }
1557 
1558 const char *TheInterrupterTimerDescriptor::getProperty(const char *propertyname) const
1559 {
1560  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1561  return basedesc ? basedesc->getProperty(propertyname) : nullptr;
1562 }
1563 
1565 {
1566  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1567  return basedesc ? 1+basedesc->getFieldCount() : 1;
1568 }
1569 
1571 {
1572  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1573  if (basedesc) {
1574  if (field < basedesc->getFieldCount())
1575  return basedesc->getFieldTypeFlags(field);
1576  field -= basedesc->getFieldCount();
1577  }
1578  static unsigned int fieldTypeFlags[] = {
1579  FD_ISEDITABLE,
1580  };
1581  return (field>=0 && field<1) ? fieldTypeFlags[field] : 0;
1582 }
1583 
1585 {
1586  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1587  if (basedesc) {
1588  if (field < basedesc->getFieldCount())
1589  return basedesc->getFieldName(field);
1590  field -= basedesc->getFieldCount();
1591  }
1592  static const char *fieldNames[] = {
1593  "action",
1594  };
1595  return (field>=0 && field<1) ? fieldNames[field] : nullptr;
1596 }
1597 
1598 int TheInterrupterTimerDescriptor::findField(const char *fieldName) const
1599 {
1600  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1601  int base = basedesc ? basedesc->getFieldCount() : 0;
1602  if (fieldName[0]=='a' && strcmp(fieldName, "action")==0) return base+0;
1603  return basedesc ? basedesc->findField(fieldName) : -1;
1604 }
1605 
1607 {
1608  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1609  if (basedesc) {
1610  if (field < basedesc->getFieldCount())
1611  return basedesc->getFieldTypeString(field);
1612  field -= basedesc->getFieldCount();
1613  }
1614  static const char *fieldTypeStrings[] = {
1615  "int",
1616  };
1617  return (field>=0 && field<1) ? fieldTypeStrings[field] : nullptr;
1618 }
1619 
1621 {
1622  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1623  if (basedesc) {
1624  if (field < basedesc->getFieldCount())
1625  return basedesc->getFieldPropertyNames(field);
1626  field -= basedesc->getFieldCount();
1627  }
1628  switch (field) {
1629  case 0: {
1630  static const char *names[] = { "enum", nullptr };
1631  return names;
1632  }
1633  default: return nullptr;
1634  }
1635 }
1636 
1637 const char *TheInterrupterTimerDescriptor::getFieldProperty(int field, const char *propertyname) const
1638 {
1639  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1640  if (basedesc) {
1641  if (field < basedesc->getFieldCount())
1642  return basedesc->getFieldProperty(field, propertyname);
1643  field -= basedesc->getFieldCount();
1644  }
1645  switch (field) {
1646  case 0:
1647  if (!strcmp(propertyname,"enum")) return "InterrupterActionType";
1648  return nullptr;
1649  default: return nullptr;
1650  }
1651 }
1652 
1653 int TheInterrupterTimerDescriptor::getFieldArraySize(void *object, int field) const
1654 {
1655  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1656  if (basedesc) {
1657  if (field < basedesc->getFieldCount())
1658  return basedesc->getFieldArraySize(object, field);
1659  field -= basedesc->getFieldCount();
1660  }
1661  TheInterrupterTimer *pp = (TheInterrupterTimer *)object; (void)pp;
1662  switch (field) {
1663  default: return 0;
1664  }
1665 }
1666 
1667 std::string TheInterrupterTimerDescriptor::getFieldValueAsString(void *object, int field, int i) const
1668 {
1669  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1670  if (basedesc) {
1671  if (field < basedesc->getFieldCount())
1672  return basedesc->getFieldValueAsString(object,field,i);
1673  field -= basedesc->getFieldCount();
1674  }
1675  TheInterrupterTimer *pp = (TheInterrupterTimer *)object; (void)pp;
1676  switch (field) {
1677  case 0: return enum2string(pp->getAction(), "InterrupterActionType");
1678  default: return "";
1679  }
1680 }
1681 
1682 bool TheInterrupterTimerDescriptor::setFieldValueAsString(void *object, int field, int i, const char *value) const
1683 {
1684  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1685  if (basedesc) {
1686  if (field < basedesc->getFieldCount())
1687  return basedesc->setFieldValueAsString(object,field,i,value);
1688  field -= basedesc->getFieldCount();
1689  }
1690  TheInterrupterTimer *pp = (TheInterrupterTimer *)object; (void)pp;
1691  switch (field) {
1692  case 0: pp->setAction((InterrupterActionType)string2enum(value, "InterrupterActionType")); return true;
1693  default: return false;
1694  }
1695 }
1696 
1698 {
1699  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1700  if (basedesc) {
1701  if (field < basedesc->getFieldCount())
1702  return basedesc->getFieldStructName(field);
1703  field -= basedesc->getFieldCount();
1704  }
1705  switch (field) {
1706  default: return nullptr;
1707  };
1708 }
1709 
1710 void *TheInterrupterTimerDescriptor::getFieldStructValuePointer(void *object, int field, int i) const
1711 {
1712  omnetpp::cClassDescriptor *basedesc = getBaseClassDescriptor();
1713  if (basedesc) {
1714  if (field < basedesc->getFieldCount())
1715  return basedesc->getFieldStructValuePointer(object, field, i);
1716  field -= basedesc->getFieldCount();
1717  }
1718  TheInterrupterTimer *pp = (TheInterrupterTimer *)object; (void)pp;
1719  switch (field) {
1720  default: return nullptr;
1721  }
1722 }
1723 
1724 
virtual int getFieldArraySize(void *object, int field) const override
virtual ~DTPTimers()
Definition: DTPTimers_m.cc:192
virtual void setAction(int action)
void copy(const DTPTimers &other)
Definition: DTPTimers_m.cc:204
virtual ~DTPTimersDescriptor()
Definition: DTPTimers_m.cc:265
virtual unsigned int getSeqNum() const
InactivityTimer & operator=(const InactivityTimer &other)
Definition: DTPTimers_m.cc:467
virtual int getFieldCount() const override
virtual std::string getFieldValueAsString(void *object, int field, int i) const override
Definition: DTPTimers_m.cc:872
TheInterrupterTimer(const char *name=nullptr, int kind=0)
virtual int getFieldCount() const override
Definition: DTPTimers_m.cc:292
virtual const char * getFieldProperty(int field, const char *propertyname) const override
Definition: DTPTimers_m.cc:608
virtual unsigned int getFieldTypeFlags(int field) const override
virtual const char * getFieldStructName(int field) const override
virtual const char * getFieldProperty(int field, const char *propertyname) const override
Definition: DTPTimers_m.cc:365
virtual std::string getFieldValueAsString(void *object, int field, int i) const override
virtual const char ** getFieldPropertyNames(int field) const override
virtual std::string getFieldValueAsString(void *object, int field, int i) const override
virtual ~ATimerDescriptor()
const char ** propertynames
Definition: DTPTimers_m.cc:492
virtual int getFieldArraySize(void *object, int field) const override
virtual void parsimPack(omnetpp::cCommBuffer *b) const
virtual std::string getFieldValueAsString(void *object, int field, int i) const override
Definition: DTPTimers_m.cc:635
virtual const char * getFieldStructName(int field) const override
virtual unsigned int getFieldTypeFlags(int field) const override
Definition: DTPTimers_m.cc:793
std::ostream & operator<<(std::ostream &out, const std::vector< T, A > &vec)
Definition: DTPTimers_m.cc:146
virtual bool doesSupport(omnetpp::cObject *obj) const override
Definition: DTPTimers_m.cc:765
virtual const char ** getFieldPropertyNames(int field) const override
virtual const char * getFieldTypeString(int field) const override
Definition: DTPTimers_m.cc:334
virtual const char * getFieldName(int field) const override
virtual const char * getFieldName(int field) const override
virtual void setSeqNum(unsigned int seqNum)
virtual std::string getFieldValueAsString(void *object, int field, int i) const override
virtual ~RcvrInactivityTimer()
Definition: DTPTimers_m.cc:937
virtual void parsimUnpack(omnetpp::cCommBuffer *b)
virtual int getFieldCount() const override
Definition: DTPTimers_m.cc:787
virtual const char * getFieldStructName(int field) const override
Definition: DTPTimers_m.cc:900
SenderInactivityTimer & operator=(const SenderInactivityTimer &other)
Definition: DTPTimers_m.cc:704
virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override
Definition: DTPTimers_m.cc:649
virtual const char ** getPropertyNames() const override
Definition: DTPTimers_m.cc:533
DTPTimers & operator=(const DTPTimers &other)
Definition: DTPTimers_m.cc:196
void doParsimPacking(omnetpp::cCommBuffer *buffer, const std::vector< T, A > &v)
Definition: PDU_m.cc:22
virtual const char * getFieldTypeString(int field) const override
Definition: DTPTimers_m.cc:584
DTPDU_p pdu
Definition: DTPTimers_m.h:242
virtual void * getFieldStructValuePointer(void *object, int field, int i) const override
virtual int getFieldArraySize(void *object, int field) const override
Definition: DTPTimers_m.cc:381
virtual void parsimPack(omnetpp::cCommBuffer *b) const
Definition: DTPTimers_m.cc:479
virtual const char * getProperty(const char *propertyname) const override
Definition: DTPTimers_m.cc:781
virtual int findField(const char *fieldName) const override
InterrupterActionType
Definition: DTPTimers_m.h:62
virtual unsigned int getFieldTypeFlags(int field) const override
Register_Class(DTPTimers)
virtual const char * getFieldName(int field) const override
Definition: DTPTimers_m.cc:312
virtual void * getFieldStructValuePointer(void *object, int field, int i) const override
virtual const char ** getPropertyNames() const override
virtual void * getFieldStructValuePointer(void *object, int field, int i) const override
virtual const char * getProperty(const char *propertyname) const override
virtual const char ** getFieldPropertyNames(int field) const override
Definition: DTPTimers_m.cc:832
virtual void * getFieldStructValuePointer(void *object, int field, int i) const override
Definition: DTPTimers_m.cc:438
virtual const char ** getPropertyNames() const override
Definition: DTPTimers_m.cc:275
virtual void parsimUnpack(omnetpp::cCommBuffer *b)
Definition: DTPTimers_m.cc:721
virtual ~ATimer()
void doParsimUnpacking(omnetpp::cCommBuffer *buffer, std::vector< T, A > &v)
Definition: PDU_m.cc:31
virtual const char * getFieldProperty(int field, const char *propertyname) const override
const char ** propertynames
virtual unsigned int getFieldTypeFlags(int field) const override
virtual void parsimUnpack(omnetpp::cCommBuffer *b)
Definition: DTPTimers_m.cc:215
void doParsimArrayUnpacking(omnetpp::cCommBuffer *b, T *t, int n)
Definition: PDU_m.cc:114
virtual int findField(const char *fieldName) const override
Definition: DTPTimers_m.cc:815
virtual const char * getFieldTypeString(int field) const override
RcvrInactivityTimer & operator=(const RcvrInactivityTimer &other)
Definition: DTPTimers_m.cc:941
virtual const char * getFieldProperty(int field, const char *propertyname) const override
Definition: DTPTimers_m.cc:845
virtual void parsimUnpack(omnetpp::cCommBuffer *b)
virtual int getFieldArraySize(void *object, int field) const override
Definition: DTPTimers_m.cc:621
void copy(const ATimer &other)
TheInterrupterTimer & operator=(const TheInterrupterTimer &other)
virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override
virtual int findField(const char *fieldName) const override
Definition: DTPTimers_m.cc:578
const char ** propertynames
Definition: DTPTimers_m.cc:234
virtual bool doesSupport(omnetpp::cObject *obj) const override
virtual int findField(const char *fieldName) const override
virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override
Definition: DTPTimers_m.cc:410
virtual int getFieldArraySize(void *object, int field) const override
virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override
virtual ~InactivityTimerDescriptor()
Definition: DTPTimers_m.cc:523
virtual const char * getFieldProperty(int field, const char *propertyname) const override
SenderInactivityTimer(const char *name=nullptr, int kind=0)
Definition: DTPTimers_m.cc:690
virtual const char ** getFieldPropertyNames(int field) const override
Definition: DTPTimers_m.cc:348
virtual const char * getProperty(const char *propertyname) const override
virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override
Definition: DTPTimers_m.cc:886
virtual int getFieldCount() const override
virtual const char * getFieldStructName(int field) const override
Definition: DTPTimers_m.cc:425
void copy(const InactivityTimer &other)
Definition: DTPTimers_m.cc:475
DTPTimers(const char *name=nullptr, int kind=0)
Definition: DTPTimers_m.cc:182
virtual void parsimUnpack(omnetpp::cCommBuffer *b)
Definition: DTPTimers_m.cc:958
virtual const char * getFieldName(int field) const override
virtual bool setFieldValueAsString(void *object, int field, int i, const char *value) const override
virtual ~TheInterrupterTimer()
virtual const char ** getPropertyNames() const override
virtual const char ** getPropertyNames() const override
Definition: DTPTimers_m.cc:770
virtual const char * getFieldName(int field) const override
Definition: DTPTimers_m.cc:804
Definition: PDU_m.cc:15
virtual std::string getFieldValueAsString(void *object, int field, int i) const override
Definition: DTPTimers_m.cc:395
void copy(const TheInterrupterTimer &other)
virtual ~InactivityTimer()
Definition: DTPTimers_m.cc:463
virtual void setType(int type)
Definition: DTPTimers_m.cc:226
virtual void parsimPack(omnetpp::cCommBuffer *b) const
Definition: DTPTimers_m.cc:953
virtual unsigned int getFieldTypeFlags(int field) const override
Definition: DTPTimers_m.cc:556
virtual const char * getProperty(const char *propertyname) const override
Definition: DTPTimers_m.cc:286
virtual const char * getProperty(const char *propertyname) const override
virtual const char * getFieldTypeString(int field) const override
virtual int getFieldCount() const override
virtual void setPdu(const DTPDU_p &pdu)
virtual unsigned int getFieldTypeFlags(int field) const override
Definition: DTPTimers_m.cc:298
virtual const char * getFieldStructName(int field) const override
Definition: DTPTimers_m.cc:663
InactivityTimer(const char *name=nullptr, int kind=0)
Definition: DTPTimers_m.cc:454
virtual void parsimPack(omnetpp::cCommBuffer *b) const
Definition: DTPTimers_m.cc:209
virtual DTPDU_p & getPdu()
void copy(const RcvrInactivityTimer &other)
Definition: DTPTimers_m.cc:949
virtual bool doesSupport(omnetpp::cObject *obj) const override
virtual int getAction() const
virtual void parsimPack(omnetpp::cCommBuffer *b) const
virtual const char ** getFieldPropertyNames(int field) const override
virtual const char ** getPropertyNames() const override
ATimer(const char *name=nullptr, int kind=0)
virtual const char * getFieldStructName(int field) const override
virtual bool doesSupport(omnetpp::cObject *obj) const override
Definition: DTPTimers_m.cc:528
virtual int getFieldArraySize(void *object, int field) const override
Definition: DTPTimers_m.cc:858
virtual int findField(const char *fieldName) const override
DTPTimerType
Definition: DTPTimers_m.h:42
unsigned int seqNum
Definition: DTPTimers_m.h:243
Register_ClassDescriptor(DTPTimersDescriptor)
virtual ~SenderInactivityTimer()
Definition: DTPTimers_m.cc:700
virtual const char * getFieldTypeString(int field) const override
virtual const char * getFieldTypeString(int field) const override
Definition: DTPTimers_m.cc:821
virtual const char * getProperty(const char *propertyname) const override
Definition: DTPTimers_m.cc:544
virtual bool doesSupport(omnetpp::cObject *obj) const override
virtual const char * getFieldProperty(int field, const char *propertyname) const override
virtual void * getFieldStructValuePointer(void *object, int field, int i) const override
Definition: DTPTimers_m.cc:911
virtual bool doesSupport(omnetpp::cObject *obj) const override
Definition: DTPTimers_m.cc:270
virtual void * getFieldStructValuePointer(void *object, int field, int i) const override
Definition: DTPTimers_m.cc:674
virtual int findField(const char *fieldName) const override
Definition: DTPTimers_m.cc:326
EXECUTE_ON_STARTUP(omnetpp::cEnum *e=omnetpp::cEnum::find("DTPTimerType");if(!e) omnetpp::enums.getInstance() ->add(e=new omnetpp::cEnum("DTPTimerType"));e->insert(DTP_SENDER_INACTIVITY_TIMER,"DTP_SENDER_INACTIVITY_TIMER");e->insert(DTP_RCVR_INACTIVITY_TIMER,"DTP_RCVR_INACTIVITY_TIMER");e->insert(DTP_A_TIMER,"DTP_A_TIMER");e->insert(DTP_INTERRUPTER_TIMER,"DTP_INTERRUPTER_TIMER");)
RcvrInactivityTimer(const char *name=nullptr, int kind=0)
Definition: DTPTimers_m.cc:927
void copy(const SenderInactivityTimer &other)
Definition: DTPTimers_m.cc:712
ATimer & operator=(const ATimer &other)
virtual void parsimPack(omnetpp::cCommBuffer *b) const
Definition: DTPTimers_m.cc:716
virtual const char ** getFieldPropertyNames(int field) const override
Definition: DTPTimers_m.cc:595
virtual const char * getFieldName(int field) const override
Definition: DTPTimers_m.cc:567
void doParsimArrayPacking(omnetpp::cCommBuffer *b, const T *t, int n)
Definition: PDU_m.cc:107
virtual int getFieldCount() const override
Definition: DTPTimers_m.cc:550
virtual void parsimUnpack(omnetpp::cCommBuffer *b)
Definition: DTPTimers_m.cc:484
virtual int getType() const
Definition: DTPTimers_m.cc:221