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