Fast RTPS  Version 2.4.0
Fast RTPS
TypesBase.h
1 // Copyright 2018 Proyectos y Sistemas de Mantenimiento SL (eProsima).
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef TYPES_BASE_H
16 #define TYPES_BASE_H
17 
18 #include <fastdds/rtps/common/Types.h>
19 #include <bitset>
20 #include <string>
21 #include <map>
22 #include <vector>
23 #include <cctype>
24 #include <algorithm>
25 #include <memory>
26 #include <type_traits>
27 
28 namespace eprosima {
29 namespace fastdds {
30 namespace dds {
31 using DomainId_t = uint32_t;
32 } // dds
33 } // namespace fastdds
34 
35 namespace fastcdr {
36 class Cdr;
37 } // namespace fastcdr
38 namespace fastrtps {
39 namespace types {
40 
41 using eprosima::fastrtps::rtps::octet;
42 
43 using OctetSeq = std::vector<octet>;
44 
46  OctetSeq&);
47 
49  OctetSeq&,
50  int);
51 
52 size_t to_size_t(
53  const OctetSeq&);
54 
55 const std::string CONST_TRUE = "true";
56 const std::string CONST_FALSE = "false";
57 
58 const std::string ANNOTATION_KEY_ID = "key";
59 const std::string ANNOTATION_EPKEY_ID = "Key";
60 const std::string ANNOTATION_TOPIC_ID = "Topic";
61 const std::string ANNOTATION_EXTENSIBILITY_ID = "extensibility";
62 const std::string ANNOTATION_FINAL_ID = "final";
63 const std::string ANNOTATION_APPENDABLE_ID = "appendable";
64 const std::string ANNOTATION_MUTABLE_ID = "mutable";
65 const std::string ANNOTATION_NESTED_ID = "nested";
66 const std::string ANNOTATION_OPTIONAL_ID = "optional";
67 const std::string ANNOTATION_MUST_UNDERSTAND_ID = "must_understand";
68 const std::string ANNOTATION_NON_SERIALIZED_ID = "non_serialized";
69 const std::string ANNOTATION_BIT_BOUND_ID = "bit_bound";
70 const std::string ANNOTATION_DEFAULT_ID = "default";
71 const std::string ANNOTATION_DEFAULT_LITERAL_ID = "default_literal";
72 const std::string ANNOTATION_VALUE_ID = "value";
73 const std::string ANNOTATION_POSITION_ID = "position";
74 
75 const std::string EXTENSIBILITY_FINAL = "FINAL";
76 const std::string EXTENSIBILITY_APPENDABLE = "APPENDABLE";
77 const std::string EXTENSIBILITY_MUTABLE = "MUTABLE";
78 
79 const std::string TKNAME_BOOLEAN = "bool";
80 const std::string TKNAME_INT16 = "int16_t";
81 const std::string TKNAME_UINT16 = "uint16_t";
82 const std::string TKNAME_INT32 = "int32_t";
83 const std::string TKNAME_UINT32 = "uint32_t";
84 const std::string TKNAME_INT64 = "int64_t";
85 const std::string TKNAME_UINT64 = "uint64_t";
86 const std::string TKNAME_CHAR8 = "char";
87 const std::string TKNAME_BYTE = "octet";
88 const std::string TKNAME_INT8 = "int8_t";
89 const std::string TKNAME_UINT8 = "uint8_t";
90 const std::string TKNAME_CHAR16 = "wchar";
91 const std::string TKNAME_CHAR16T = "wchar_t";
92 const std::string TKNAME_FLOAT32 = "float";
93 const std::string TKNAME_FLOAT64 = "double";
94 const std::string TKNAME_FLOAT128 = "longdouble";
95 
96 const std::string TKNAME_STRING8 = "string";
97 const std::string TKNAME_STRING16 = "wstring";
98 const std::string TKNAME_ALIAS = "alias";
99 const std::string TKNAME_ENUM = "enum";
100 const std::string TKNAME_BITMASK = "bitmask";
101 const std::string TKNAME_ANNOTATION = "annotation";
102 const std::string TKNAME_STRUCTURE = "structure";
103 const std::string TKNAME_UNION = "union";
104 const std::string TKNAME_BITSET = "bitset";
105 const std::string TKNAME_SEQUENCE = "sequence";
106 const std::string TKNAME_ARRAY = "array";
107 const std::string TKNAME_MAP = "map";
108 
109 // ---------- Equivalence Kinds ------------------
110 typedef octet EquivalenceKind;
111 const octet EK_MINIMAL = 0xF1; // 0x1111 0001
112 const octet EK_COMPLETE = 0xF2; // 0x1111 0010
113 const octet EK_BOTH = 0xF3; // 0x1111 0011
114 
115 // ---------- TypeKinds (begin) ------------------
116 typedef octet TypeKind; // Primitive TKs
117 
118 const octet TK_NONE = 0x00;
119 const octet TK_BOOLEAN = 0x01;
120 const octet TK_BYTE = 0x02;
121 const octet TK_INT16 = 0x03;
122 const octet TK_INT32 = 0x04;
123 const octet TK_INT64 = 0x05;
124 const octet TK_UINT16 = 0x06;
125 const octet TK_UINT32 = 0x07;
126 const octet TK_UINT64 = 0x08;
127 const octet TK_FLOAT32 = 0x09;
128 const octet TK_FLOAT64 = 0x0A;
129 const octet TK_FLOAT128 = 0x0B;
130 const octet TK_CHAR8 = 0x10;
131 const octet TK_CHAR16 = 0x11;
132 
133 // String TKs
134 const octet TK_STRING8 = 0x20;
135 const octet TK_STRING16 = 0x21;
136 
137 
138 // Constructed/Named types
139 const octet TK_ALIAS = 0x30;
140 
141 // Enumerated TKs
142 const octet TK_ENUM = 0x40;
143 const octet TK_BITMASK = 0x41;
144 
145 // Structured TKs
146 const octet TK_ANNOTATION = 0x50;
147 const octet TK_STRUCTURE = 0x51;
148 const octet TK_UNION = 0x52;
149 const octet TK_BITSET = 0x53;
150 
151 // Collection TKs
152 const octet TK_SEQUENCE = 0x60;
153 const octet TK_ARRAY = 0x61;
154 const octet TK_MAP = 0x62;
155 
156 // ---------- TypeKinds (end) ------------------
157 
158 // The name of some element (e.g. type, type member, module)
159 // Valid characters are alphanumeric plus the "_" cannot start with digit
160 
161 const int32_t MEMBER_NAME_MAX_LENGTH = 256;
162 typedef std::string MemberName;
163 
164 // Qualified type name includes the name of containing modules
165 // using "::" as separator. No leading "::". E.g. "MyModule::MyType"
166 const int32_t TYPE_NAME_MAX_LENGTH = 256;
167 typedef std::string QualifiedTypeName;
168 
169 // Every type has an ID. Those of the primitive types are pre-defined.
170 typedef octet PrimitiveTypeId;
171 
172 // First 4 bytes of MD5 of of a member name converted to bytes
173 // using UTF-8 encoding and without a 'nul' terminator.
174 // Example: the member name "color" has NameHash {0x70, 0xDD, 0xA5, 0xDF}
175 typedef std::array<uint8_t, 4> NameHash;
176 
177 // Mask used to remove the flags that do no affect assignability
178 // Selects T1, T2, O, M, K, D
179 const uint16_t MemberFlagMinimalMask = 0x003f;
180 
185 class RTPS_DllAPI ReturnCode_t
186 {
187  uint32_t value_;
188 
189 public:
190 
191  enum
192  {
193  RETCODE_OK = 0,
194  RETCODE_ERROR = 1,
195  RETCODE_UNSUPPORTED = 2,
196  RETCODE_BAD_PARAMETER = 3,
197  RETCODE_PRECONDITION_NOT_MET = 4,
198  RETCODE_OUT_OF_RESOURCES = 5,
199  RETCODE_NOT_ENABLED = 6,
200  RETCODE_IMMUTABLE_POLICY = 7,
201  RETCODE_INCONSISTENT_POLICY = 8,
202  RETCODE_ALREADY_DELETED = 9,
203  RETCODE_TIMEOUT = 10,
204  RETCODE_NO_DATA = 11,
205  RETCODE_ILLEGAL_OPERATION = 12,
206  RETCODE_NOT_ALLOWED_BY_SECURITY = 13
207  };
208 
210  : value_(RETCODE_OK)
211  {
212  }
213 
215  uint32_t e)
216  {
217  value_ = e;
218  }
219 
221  const ReturnCode_t& c) const
222  {
223  return value_ == c.value_;
224  }
225 
227  const ReturnCode_t& c) const
228  {
229  return value_ != c.value_;
230  }
231 
232  explicit operator bool() = delete;
233 
234  uint32_t operator ()() const
235  {
236  return value_;
237  }
238 
239  bool operator !() const
240  {
241  return value_ != 0;
242  }
243 
244 };
245 
246 template<class T>
247 typename std::enable_if<std::is_arithmetic<T>::value || std::is_enum<T>::value, bool>::type
249  T a,
250  const ReturnCode_t& b)
251 {
252  return b.operator ==(
253  a);
254 }
255 
256 template<class T>
257 typename std::enable_if<std::is_arithmetic<T>::value || std::is_enum<T>::value, bool>::type
259  T a,
260  const ReturnCode_t& b)
261 {
262  return b.operator !=(
263  a);
264 }
265 
266 // TODO Remove this alias when Fast-RTPS reaches version 2
268 
269 typedef uint32_t MemberId;
270 #define MEMBER_ID_INVALID 0X0FFFFFFF
271 #define INDEX_INVALID UINT32_MAX
272 
273 const int32_t MAX_BITMASK_LENGTH = 64;
274 const int32_t MAX_ELEMENTS_COUNT = 100;
275 const int32_t MAX_STRING_LENGTH = 255;
276 
277 // Long Bound of a collection type
278 typedef uint32_t LBound;
279 typedef std::vector<LBound> LBoundSeq;
281 
282 // Short Bound of a collection type
283 typedef octet SBound;
284 typedef std::vector<SBound> SBoundSeq;
286 
287 // Auxiliar function to compare sequences (std::vector)
288 template<class T>
290  const std::vector<T>& a,
291  const std::vector<T>& b)
292 {
293  if (a.size() == b.size())
294  {
295  auto aIt = a.begin();
296  auto bIt = b.begin();
297  while (aIt != a.end() && bIt != b.end())
298  {
299  if (*aIt == *bIt)
300  {
301  ++aIt;
302  ++bIt;
303  }
304  else
305  {
306  return false;
307  }
308  }
309  return true;
310  }
311  return false;
312 }
313 
314 // Flags that apply to struct/union/collection/enum/bitmask/bitset
315 // members/elements and DO affect type assignability
316 // Depending on the flag it may not apply to members of all types
317 
318 // When not all, the applicable member types are listed
320 {
321 private:
322 
323  std::bitset<16> m_MemberFlag;
324 
325 public:
326 
328  {
329  }
330 
332  const MemberFlag& x)
333  : m_MemberFlag(x.m_MemberFlag)
334  {
335  }
336 
338  MemberFlag&& x)
339  : m_MemberFlag(std::move(x.m_MemberFlag))
340  {
341  }
342 
344  const MemberFlag& x)
345  {
346  m_MemberFlag = x.m_MemberFlag;
347  return *this;
348  }
349 
351  MemberFlag&& x)
352  {
353  m_MemberFlag = std::move(x.m_MemberFlag);
354  return *this;
355  }
356 
357  // T1 | 00 = INVALID, 01 = DISCARD
358  bool TRY_CONSTRUCT1() const
359  {
360  return m_MemberFlag.test(0);
361  }
362 
364  bool b)
365  {
366  b ? m_MemberFlag.set(0) : m_MemberFlag.reset(0);
367  }
368 
369  // T2 | 10 = USE_DEFAULT, 11 = TRIM
370  bool TRY_CONSTRUCT2() const
371  {
372  return m_MemberFlag.test(1);
373  }
374 
376  bool b)
377  {
378  b ? m_MemberFlag.set(1) : m_MemberFlag.reset(1);
379  }
380 
381  // X StructMember, UnionMember,
382  // CollectionElement
383  bool IS_EXTERNAL() const
384  {
385  return m_MemberFlag.test(2);
386  }
387 
389  bool b)
390  {
391  b ? m_MemberFlag.set(2) : m_MemberFlag.reset(2);
392  }
393 
394  // O StructMember
395  bool IS_OPTIONAL() const
396  {
397  return m_MemberFlag.test(3);
398  }
399 
401  bool b)
402  {
403  b ? m_MemberFlag.set(3) : m_MemberFlag.reset(3);
404  }
405 
406  // M StructMember
407  bool IS_MUST_UNDERSTAND() const
408  {
409  return m_MemberFlag.test(4);
410  }
411 
413  bool b)
414  {
415  b ? m_MemberFlag.set(4) : m_MemberFlag.reset(4);
416  }
417 
418  // K StructMember, UnionDiscriminator
419  bool IS_KEY() const
420  {
421  return m_MemberFlag.test(5);
422  }
423 
424  void IS_KEY(
425  bool b)
426  {
427  b ? m_MemberFlag.set(5) : m_MemberFlag.reset(5);
428  }
429 
430  // D UnionMember, EnumerationLiteral
431  bool IS_DEFAULT() const
432  {
433  return m_MemberFlag.test(6);
434  }
435 
437  bool b)
438  {
439  b ? m_MemberFlag.set(6) : m_MemberFlag.reset(6);
440  }
441 
442  void serialize(
443  eprosima::fastcdr::Cdr& cdr) const;
444 
446  eprosima::fastcdr::Cdr& cdr);
447 
448  static size_t getCdrSerializedSize(
449  const MemberFlag&,
450  size_t current_alignment = 0);
451 
453  const MemberFlag& other) const
454  {
455  return m_MemberFlag == other.m_MemberFlag;
456  }
457 
458 };
459 
460 typedef MemberFlag CollectionElementFlag; // T1, T2, X
461 typedef MemberFlag StructMemberFlag; // T1, T2, O, M, K, X
462 typedef MemberFlag UnionMemberFlag; // T1, T2, D, X
463 typedef MemberFlag UnionDiscriminatorFlag; // T1, T2, K
465 typedef MemberFlag AnnotationParameterFlag; // Unused. No flags apply
466 typedef MemberFlag AliasMemberFlag; // Unused. No flags apply
467 typedef MemberFlag BitflagFlag; // Unused. No flags apply
468 typedef MemberFlag BitsetMemberFlag; // Unused. No flags apply
469 
470 // Flags that apply to type declarationa and DO affect assignability
471 // Depending on the flag it may not apply to all types
472 // When not all, the applicable types are listed
473 class TypeFlag
474 {
475 private:
476 
477  std::bitset<16> m_TypeFlag;
478 
479 public:
480 
482  {
483  }
484 
486  const TypeFlag& x)
487  : m_TypeFlag(x.m_TypeFlag)
488  {
489  }
490 
492  TypeFlag&& x)
493  : m_TypeFlag(std::move(x.m_TypeFlag))
494  {
495  }
496 
498  const TypeFlag& x)
499  {
500  m_TypeFlag = x.m_TypeFlag;
501  return *this;
502  }
503 
505  TypeFlag&& x)
506  {
507  m_TypeFlag = std::move(x.m_TypeFlag);
508  return *this;
509  }
510 
511  // F |
512  bool IS_FINAL() const
513  {
514  return m_TypeFlag.test(0);
515  }
516 
517  void IS_FINAL(
518  bool b)
519  {
520  b ? m_TypeFlag.set(0) : m_TypeFlag.reset(0);
521  }
522 
523  // A |- Struct, Union
524  bool IS_APPENDABLE() const
525  {
526  return m_TypeFlag.test(1);
527  }
528 
530  bool b)
531  {
532  b ? m_TypeFlag.set(1) : m_TypeFlag.reset(1);
533  }
534 
535  // M | (exactly one flag)
536  bool IS_MUTABLE() const
537  {
538  return m_TypeFlag.test(2);
539  }
540 
542  bool b)
543  {
544  b ? m_TypeFlag.set(2) : m_TypeFlag.reset(2);
545  }
546 
547  // N Struct, Union
548  bool IS_NESTED() const
549  {
550  return m_TypeFlag.test(3);
551  }
552 
553  void IS_NESTED(
554  bool b)
555  {
556  b ? m_TypeFlag.set(3) : m_TypeFlag.reset(3);
557  }
558 
559  // H Struct
560  bool IS_AUTOID_HASH() const
561  {
562  return m_TypeFlag.test(4);
563  }
564 
566  bool b)
567  {
568  b ? m_TypeFlag.set(4) : m_TypeFlag.reset(4);
569  }
570 
571  void serialize(
572  eprosima::fastcdr::Cdr& cdr) const;
573 
575  eprosima::fastcdr::Cdr& cdr);
576 
577  static size_t getCdrSerializedSize(
578  const TypeFlag&,
579  size_t current_alignment = 0);
580 
582  const TypeFlag& other) const
583  {
584  return m_TypeFlag == other.m_TypeFlag;
585  }
586 
587 };
588 
589 typedef TypeFlag StructTypeFlag; // All flags apply
590 typedef TypeFlag UnionTypeFlag; // All flags apply
591 typedef TypeFlag CollectionTypeFlag; // Unused. No flags apply
592 typedef TypeFlag AnnotationTypeFlag; // Unused. No flags apply
593 typedef TypeFlag AliasTypeFlag; // Unused. No flags apply
594 typedef TypeFlag EnumTypeFlag; // Unused. No flags apply
595 typedef TypeFlag BitmaskTypeFlag; // Unused. No flags apply
596 typedef TypeFlag BitsetTypeFlag; // Unused. No flags apply
597 
598 // Mask used to remove the flags that do no affect assignability
599 const uint16_t TypeFlagMinimalMask = 0x0007; // Selects M, A, F
600 
601 // --- Annotation usage: ----------------------------------------------
602 
603 // ID of a type member
604 const uint32_t ANNOTATION_STR_VALUE_MAX_LEN = 128;
606 
607 } // namespace types
608 } // namespace fastrtps
609 } // namespace eprosima
610 
611 #endif // TYPES_BASE_H
Definition: TypesBase.h:320
bool IS_OPTIONAL() const
Definition: TypesBase.h:395
MemberFlag(MemberFlag &&x)
Definition: TypesBase.h:337
void TRY_CONSTRUCT1(bool b)
Definition: TypesBase.h:363
bool IS_MUST_UNDERSTAND() const
Definition: TypesBase.h:407
MemberFlag & operator=(const MemberFlag &x)
Definition: TypesBase.h:343
void IS_OPTIONAL(bool b)
Definition: TypesBase.h:400
bool IS_DEFAULT() const
Definition: TypesBase.h:431
bool TRY_CONSTRUCT2() const
Definition: TypesBase.h:370
void TRY_CONSTRUCT2(bool b)
Definition: TypesBase.h:375
void serialize(eprosima::fastcdr::Cdr &cdr) const
bool IS_KEY() const
Definition: TypesBase.h:419
bool IS_EXTERNAL() const
Definition: TypesBase.h:383
MemberFlag()
Definition: TypesBase.h:327
bool operator==(const MemberFlag &other) const
Definition: TypesBase.h:452
void IS_EXTERNAL(bool b)
Definition: TypesBase.h:388
void IS_DEFAULT(bool b)
Definition: TypesBase.h:436
bool TRY_CONSTRUCT1() const
Definition: TypesBase.h:358
void deserialize(eprosima::fastcdr::Cdr &cdr)
static size_t getCdrSerializedSize(const MemberFlag &, size_t current_alignment=0)
MemberFlag(const MemberFlag &x)
Definition: TypesBase.h:331
void IS_MUST_UNDERSTAND(bool b)
Definition: TypesBase.h:412
void IS_KEY(bool b)
Definition: TypesBase.h:424
This class represents the enumeration ReturnCode_t.
Definition: TypesBase.h:186
ReturnCode_t(uint32_t e)
Definition: TypesBase.h:214
ReturnCode_t()
Definition: TypesBase.h:209
Definition: TypesBase.h:474
void IS_MUTABLE(bool b)
Definition: TypesBase.h:541
bool IS_NESTED() const
Definition: TypesBase.h:548
TypeFlag & operator=(const TypeFlag &x)
Definition: TypesBase.h:497
TypeFlag()
Definition: TypesBase.h:481
void IS_APPENDABLE(bool b)
Definition: TypesBase.h:529
bool IS_APPENDABLE() const
Definition: TypesBase.h:524
TypeFlag(TypeFlag &&x)
Definition: TypesBase.h:491
void IS_FINAL(bool b)
Definition: TypesBase.h:517
bool operator==(const TypeFlag &other) const
Definition: TypesBase.h:581
static size_t getCdrSerializedSize(const TypeFlag &, size_t current_alignment=0)
void IS_NESTED(bool b)
Definition: TypesBase.h:553
bool IS_MUTABLE() const
Definition: TypesBase.h:536
void serialize(eprosima::fastcdr::Cdr &cdr) const
TypeFlag(const TypeFlag &x)
Definition: TypesBase.h:485
void IS_AUTOID_HASH(bool b)
Definition: TypesBase.h:565
void deserialize(eprosima::fastcdr::Cdr &cdr)
bool IS_FINAL() const
Definition: TypesBase.h:512
bool IS_AUTOID_HASH() const
Definition: TypesBase.h:560
uint32_t DomainId_t
Definition: TypesBase.h:31
const octet TK_FLOAT32
Definition: TypesBase.h:127
MemberFlag BitsetMemberFlag
Definition: TypesBase.h:468
uint32_t MemberId
Definition: TypesBase.h:269
TypeFlag BitsetTypeFlag
Definition: TypesBase.h:596
const octet TK_BYTE
Definition: TypesBase.h:120
const std::string ANNOTATION_DEFAULT_LITERAL_ID
Definition: TypesBase.h:71
TypeFlag StructTypeFlag
Definition: TypesBase.h:589
const octet TK_UINT64
Definition: TypesBase.h:126
octet PrimitiveTypeId
Definition: TypesBase.h:170
const std::string TKNAME_MAP
Definition: TypesBase.h:107
const octet TK_BITSET
Definition: TypesBase.h:149
const std::string ANNOTATION_TOPIC_ID
Definition: TypesBase.h:60
octet EquivalenceKind
Definition: TypesBase.h:110
const octet TK_UNION
Definition: TypesBase.h:148
const std::string CONST_FALSE
Definition: TypesBase.h:56
TypeFlag AliasTypeFlag
Definition: TypesBase.h:593
const octet TK_FLOAT64
Definition: TypesBase.h:128
MemberFlag BitflagFlag
Definition: TypesBase.h:467
const std::string ANNOTATION_VALUE_ID
Definition: TypesBase.h:72
const std::string EXTENSIBILITY_MUTABLE
Definition: TypesBase.h:77
const uint16_t MemberFlagMinimalMask
Definition: TypesBase.h:179
MemberFlag StructMemberFlag
Definition: TypesBase.h:461
const octet TK_STRING16
Definition: TypesBase.h:135
const std::string TKNAME_BITMASK
Definition: TypesBase.h:100
octet SBound
Definition: TypesBase.h:283
const std::string TKNAME_STRING8
Definition: TypesBase.h:96
uint32_t LBound
Definition: TypesBase.h:278
TypeFlag CollectionTypeFlag
Definition: TypesBase.h:591
const std::string TKNAME_CHAR16
Definition: TypesBase.h:90
const std::string TKNAME_UINT64
Definition: TypesBase.h:85
const uint16_t TypeFlagMinimalMask
Definition: TypesBase.h:599
const std::string ANNOTATION_MUTABLE_ID
Definition: TypesBase.h:64
const octet TK_INT32
Definition: TypesBase.h:122
const octet TK_ANNOTATION
Definition: TypesBase.h:146
const std::string TKNAME_SEQUENCE
Definition: TypesBase.h:105
const std::string ANNOTATION_APPENDABLE_ID
Definition: TypesBase.h:63
const std::string ANNOTATION_OPTIONAL_ID
Definition: TypesBase.h:66
const std::string TKNAME_FLOAT64
Definition: TypesBase.h:93
const std::string ANNOTATION_POSITION_ID
Definition: TypesBase.h:73
MemberFlag EnumeratedLiteralFlag
Definition: TypesBase.h:464
const octet TK_MAP
Definition: TypesBase.h:154
const std::string ANNOTATION_EPKEY_ID
Definition: TypesBase.h:59
const octet EK_COMPLETE
Definition: TypesBase.h:112
std::vector< SBound > SBoundSeq
Definition: TypesBase.h:284
std::string MemberName
Definition: TypesBase.h:162
const octet TK_UINT16
Definition: TypesBase.h:124
const std::string TKNAME_FLOAT128
Definition: TypesBase.h:94
const std::string TKNAME_STRING16
Definition: TypesBase.h:97
const octet TK_CHAR8
Definition: TypesBase.h:130
const std::string TKNAME_BITSET
Definition: TypesBase.h:104
const std::string TKNAME_UNION
Definition: TypesBase.h:103
TypeFlag AnnotationTypeFlag
Definition: TypesBase.h:592
std::vector< octet > OctetSeq
Definition: TypesBase.h:43
const std::string EXTENSIBILITY_APPENDABLE
Definition: TypesBase.h:76
TypeFlag UnionTypeFlag
Definition: TypesBase.h:590
const std::string TKNAME_UINT32
Definition: TypesBase.h:83
const octet EK_BOTH
Definition: TypesBase.h:113
const std::string TKNAME_INT32
Definition: TypesBase.h:82
const std::string TKNAME_INT8
Definition: TypesBase.h:88
TypeFlag EnumTypeFlag
Definition: TypesBase.h:594
const octet TK_CHAR16
Definition: TypesBase.h:131
const std::string CONST_TRUE
Definition: TypesBase.h:55
const std::string TKNAME_ANNOTATION
Definition: TypesBase.h:101
const int32_t MAX_ELEMENTS_COUNT
Definition: TypesBase.h:274
const octet EK_MINIMAL
Definition: TypesBase.h:111
const octet TK_ALIAS
Definition: TypesBase.h:139
const std::string EXTENSIBILITY_FINAL
Definition: TypesBase.h:75
const octet TK_INT16
Definition: TypesBase.h:121
MemberFlag UnionMemberFlag
Definition: TypesBase.h:462
std::enable_if< std::is_arithmetic< T >::value||std::is_enum< T >::value, bool >::type operator!=(T a, const ReturnCode_t &b)
Definition: TypesBase.h:258
const octet TK_BOOLEAN
Definition: TypesBase.h:119
const uint32_t ANNOTATION_OCTETSEC_VALUE_MAX_LEN
Definition: TypesBase.h:605
const octet TK_FLOAT128
Definition: TypesBase.h:129
const std::string TKNAME_ALIAS
Definition: TypesBase.h:98
const std::string TKNAME_BOOLEAN
Definition: TypesBase.h:79
std::string QualifiedTypeName
Definition: TypesBase.h:167
const octet TK_BITMASK
Definition: TypesBase.h:143
const std::string TKNAME_FLOAT32
Definition: TypesBase.h:92
bool compareSequence(const std::vector< T > &a, const std::vector< T > &b)
Definition: TypesBase.h:289
const LBound INVALID_LBOUND
Definition: TypesBase.h:280
const SBound INVALID_SBOUND
Definition: TypesBase.h:285
TypeFlag BitmaskTypeFlag
Definition: TypesBase.h:595
size_t to_size_t(const OctetSeq &)
const std::string ANNOTATION_DEFAULT_ID
Definition: TypesBase.h:70
const uint32_t ANNOTATION_STR_VALUE_MAX_LEN
Definition: TypesBase.h:604
const octet TK_ENUM
Definition: TypesBase.h:142
const std::string TKNAME_UINT16
Definition: TypesBase.h:81
OctetSeq & operator++(OctetSeq &)
const std::string TKNAME_UINT8
Definition: TypesBase.h:89
const std::string ANNOTATION_NON_SERIALIZED_ID
Definition: TypesBase.h:68
const std::string TKNAME_INT64
Definition: TypesBase.h:84
const int32_t MAX_BITMASK_LENGTH
Definition: TypesBase.h:273
const octet TK_STRUCTURE
Definition: TypesBase.h:147
std::vector< LBound > LBoundSeq
Definition: TypesBase.h:279
const octet TK_ARRAY
Definition: TypesBase.h:153
std::enable_if< std::is_arithmetic< T >::value||std::is_enum< T >::value, bool >::type operator==(T a, const ReturnCode_t &b)
Definition: TypesBase.h:248
const octet TK_SEQUENCE
Definition: TypesBase.h:152
MemberFlag AliasMemberFlag
Definition: TypesBase.h:466
MemberFlag AnnotationParameterFlag
Definition: TypesBase.h:465
MemberFlag UnionDiscriminatorFlag
Definition: TypesBase.h:463
const std::string TKNAME_CHAR16T
Definition: TypesBase.h:91
const octet TK_INT64
Definition: TypesBase.h:123
const std::string TKNAME_CHAR8
Definition: TypesBase.h:86
const octet TK_NONE
Definition: TypesBase.h:118
const std::string ANNOTATION_FINAL_ID
Definition: TypesBase.h:62
const octet TK_STRING8
Definition: TypesBase.h:134
const octet TK_UINT32
Definition: TypesBase.h:125
const std::string TKNAME_ENUM
Definition: TypesBase.h:99
octet TypeKind
Definition: TypesBase.h:116
const std::string TKNAME_ARRAY
Definition: TypesBase.h:106
const std::string TKNAME_STRUCTURE
Definition: TypesBase.h:102
const std::string ANNOTATION_BIT_BOUND_ID
Definition: TypesBase.h:69
const int32_t TYPE_NAME_MAX_LENGTH
Definition: TypesBase.h:166
const int32_t MEMBER_NAME_MAX_LENGTH
Definition: TypesBase.h:161
const int32_t MAX_STRING_LENGTH
Definition: TypesBase.h:275
std::array< uint8_t, 4 > NameHash
Definition: TypesBase.h:175
const std::string ANNOTATION_NESTED_ID
Definition: TypesBase.h:65
MemberFlag CollectionElementFlag
Definition: TypesBase.h:460
const std::string ANNOTATION_EXTENSIBILITY_ID
Definition: TypesBase.h:61
const std::string ANNOTATION_MUST_UNDERSTAND_ID
Definition: TypesBase.h:67
const std::string TKNAME_BYTE
Definition: TypesBase.h:87
const std::string ANNOTATION_KEY_ID
Definition: TypesBase.h:58
const std::string TKNAME_INT16
Definition: TypesBase.h:80
eProsima namespace.
Definition: LibrarySettingsAttributes.h:23