OpenDDS  Snapshot(2023/04/28-20:55)
TypeObject.h
Go to the documentation of this file.
1 /*
2  * Distributed under the OpenDDS License.
3  * See: http://www.opendds.org/license.html
4  */
5 
6 #ifndef OPENDDS_DCPS_XTYPES_TYPE_OBJECT_H
7 #define OPENDDS_DCPS_XTYPES_TYPE_OBJECT_H
8 
9 #include "External.h"
10 
12 #include <dds/DCPS/PoolAllocator.h>
13 #include <dds/DCPS/Serializer.h>
14 
15 #include <ace/CDR_Base.h>
16 
17 #include <algorithm>
18 #include <cstring>
19 
21 namespace OpenDDS {
22 
23 namespace XTypes {
24  struct TypeInformation;
25 }
26 
27 namespace DCPS {
29  bool operator<<(Serializer& ser, const XTypes::TypeInformation& type_info);
30 
32  bool operator>>(Serializer& ser, XTypes::TypeInformation& type_info);
33 }
34 
35 namespace XTypes {
36 
37  template<typename T, typename T_slice, typename TAG>
39  public:
40  typedef T_slice _slice_type;
41 
42  Fake_TAO_Array_Forany_T (_slice_type *p)
43  : ptr_(p)
44  {}
45 
46  typedef const _slice_type * _in_type;
47  typedef _slice_type * & _out_type;
48 
49  _in_type in (void) const
50  {
51  return (const T_slice *) this->ptr_;
52  }
53 
54  _out_type out (void)
55  {
56  return this->ptr_;
57  }
58 
59  private:
60  _slice_type * ptr_;
61  };
62 
65 
66  template <typename T>
67  class Optional {
68  public:
70  : present_(false)
71  , value_()
72  {}
73 
74  Optional(const T& v)
75  : present_(true)
76  {
77  new(value_) T(v);
78  }
79 
81  if (present_) {
82  value().~T();
83  }
84  }
85 
86  Optional(const Optional& rhs)
87  : present_(false)
88  , value_()
89  {
90  *this = rhs;
91  }
92 
93  Optional& operator=(const Optional& rhs) {
94  if (this != &rhs) {
95  if (present_) {
96  if (rhs.present_) {
97  value() = rhs.value();
98  } else {
99  value().~T();
100  }
101  } else {
102  if (rhs.present_) {
103  new(value_) T(rhs.value());
104  }
105  }
106  present_ = rhs.present_;
107  }
108  return *this;
109  }
110 
111  bool operator==(const Optional& other) const
112  {
113  if (present_) {
114  return present_ == other.present_ && value() == other.value();
115  }
116 
117  return present_ == other.present_;
118  }
119 
120  bool operator!=(const Optional& other) const
121  {
122  return !(*this == other);
123  }
124 
125  operator bool() const {
126  return present_;
127  }
128 
129  bool has_value() const {
130  return present_;
131  }
132 
133  T& value() {
134  return reinterpret_cast<T&>(value_);
135  }
136 
137  const T& value() const {
138  return reinterpret_cast<const T&>(value_);
139  }
140 
141  private:
142  bool present_;
143  union {
145  unsigned char value_[sizeof(T)];
146  };
147  };
148 
149  template <typename T>
150  struct Sequence {
152  typedef OPENDDS_VECTOR(T) Members;
153  Members members;
154 
155  Sequence& append(const T& member)
156  {
157  members.push_back(member);
158  return *this;
159  }
160 
162  {
163  std::sort(members.begin(), members.end());
164  return *this;
165  }
166 
168  {
169  return static_cast<ACE_CDR::ULong>(members.size());
170  }
171 
173  {
174  return members.resize(len);
175  }
176 
177  const T& operator[](ACE_CDR::ULong i) const
178  {
179  return members[i];
180  }
181 
183  {
184  return members[i];
185  }
186 
187  bool operator<(const Sequence& other) const { return members < other.members; }
188  bool operator==(const Sequence& other) const { return members == other.members; }
189  bool operator!=(const Sequence& other) const { return members != other.members; }
190 
191  T* get_buffer() { return &members[0]; }
192  const T* get_buffer() const { return &members[0]; }
193 
194  typedef typename Members::const_iterator const_iterator;
195  const_iterator begin() const { return members.begin(); }
196  const_iterator end() const { return members.end(); }
197  };
198 
199  // Based on dds-xtypes_typeobject.idl
200 
201  // The types in this file shall be serialized with XCDR encoding version 2
202 
203  // ---------- Equivalence Kinds -------------------
205  const EquivalenceKind EK_MINIMAL = 0xF1; // 0x1111 0001
206  const EquivalenceKind EK_COMPLETE = 0xF2; // 0x1111 0010
207  const EquivalenceKind EK_BOTH = 0xF3; // 0x1111 0011
208 
209  // ---------- TypeKinds (begin) -------------------
211 
212  // Primitive TKs
213  const TypeKind TK_NONE = 0x00;
214  const TypeKind TK_BOOLEAN = 0x01;
215  const TypeKind TK_BYTE = 0x02;
216  const TypeKind TK_INT16 = 0x03;
217  const TypeKind TK_INT32 = 0x04;
218  const TypeKind TK_INT64 = 0x05;
219  const TypeKind TK_UINT16 = 0x06;
220  const TypeKind TK_UINT32 = 0x07;
221  const TypeKind TK_UINT64 = 0x08;
222  const TypeKind TK_FLOAT32 = 0x09;
223  const TypeKind TK_FLOAT64 = 0x0A;
224  const TypeKind TK_FLOAT128 = 0x0B;
225  const TypeKind TK_INT8 = 0x0C; // XTypes 1.3 Annex B
226  const TypeKind TK_UINT8 = 0x0D; // XTypes 1.3 Annex B
227  const TypeKind TK_CHAR8 = 0x10;
228  const TypeKind TK_CHAR16 = 0x11;
229 
230  // String TKs
231  const TypeKind TK_STRING8 = 0x20;
232  const TypeKind TK_STRING16 = 0x21;
233 
234  // Constructed/Named types
235  const TypeKind TK_ALIAS = 0x30;
236 
237  // Enumerated TKs
238  const TypeKind TK_ENUM = 0x40;
239  const TypeKind TK_BITMASK = 0x41;
240 
241  // Structured TKs
242  const TypeKind TK_ANNOTATION = 0x50;
243  const TypeKind TK_STRUCTURE = 0x51;
244  const TypeKind TK_UNION = 0x52;
245  const TypeKind TK_BITSET = 0x53;
246 
247  // Collection TKs
248  const TypeKind TK_SEQUENCE = 0x60;
249  const TypeKind TK_ARRAY = 0x61;
250  const TypeKind TK_MAP = 0x62;
251  // ---------- TypeKinds (end) -------------------
252 
253  // ---------- Extra TypeIdentifiers (begin) ------------
255  const TypeIdentifierKind TI_STRING8_SMALL = 0x70;
256  const TypeIdentifierKind TI_STRING8_LARGE = 0x71;
257  const TypeIdentifierKind TI_STRING16_SMALL = 0x72;
258  const TypeIdentifierKind TI_STRING16_LARGE = 0x73;
259 
260  const TypeIdentifierKind TI_PLAIN_SEQUENCE_SMALL = 0x80;
261  const TypeIdentifierKind TI_PLAIN_SEQUENCE_LARGE = 0x81;
262 
263  const TypeIdentifierKind TI_PLAIN_ARRAY_SMALL = 0x90;
264  const TypeIdentifierKind TI_PLAIN_ARRAY_LARGE = 0x91;
265 
266  const TypeIdentifierKind TI_PLAIN_MAP_SMALL = 0xA0;
267  const TypeIdentifierKind TI_PLAIN_MAP_LARGE = 0xA1;
268 
269  const TypeIdentifierKind TI_STRONGLY_CONNECTED_COMPONENT = 0xB0;
270  // ---------- Extra TypeIdentifiers (end) --------------
271 
272  // The name of some element (e.g. type, type member, module)
273  // Valid characters are alphanumeric plus the "_" cannot start with digit
276 
277  // Qualified type name includes the name of containing modules
278  // using "::" as separator. No leading "::". E.g. "MyModule::MyType"
281 
282  // Every type has an ID. Those of the primitive types are pre-defined.
284 
285  // First 14 bytes of MD5 of the serialized TypeObject using XCDR
286  // version 2 with Little Endian encoding
292 
293  // First 4 bytes of MD5 of of a member name converted to bytes
294  // using UTF-8 encoding and without a 'nul' terminator.
295  // Example: the member name "color" has NameHash {0x70, 0xDD, 0xA5, 0xDF}
297  struct NameHash_tag {};
300 
301  inline bool name_hash_equal(const NameHash& x, const NameHash& y)
302  {
303  return x[0] == y[0] && x[1] == y[1] && x[2] == y[2] && x[3] == y[3];
304  }
305 
306  inline bool name_hash_not_equal(const NameHash& x, const NameHash& y)
307  {
308  return !name_hash_equal(x, y);
309  }
310 
311  // Long Bound of a collection type
314  const LBound INVALID_LBOUND = 0;
315 
316  // Short Bound of a collection type
319  const SBound INVALID_SBOUND = 0;
320 
321  struct EquivalenceHashWrapper { // not in spec
326  {
327  eh_[0] = a; eh_[1] = b; eh_[2] = c; eh_[3] = d; eh_[4] = e; eh_[5] = f; eh_[6] = g;
328  eh_[7] = h; eh_[8] = i; eh_[9] = j; eh_[10] = k; eh_[11] = l; eh_[12] = m; eh_[13] = n;
329  }
330  EquivalenceHash eh_;
331  };
332 
333  // union TypeObjectHashId switch (octet) {
334  // case EK_COMPLETE:
335  // case EK_MINIMAL:
336  // EquivalenceHash hash;
337  // };
339  EquivalenceKind kind;
340  EquivalenceHash hash;
341 
343  : kind(0)
344  {}
345 
346  TypeObjectHashId(const EquivalenceKind& a_kind,
347  const EquivalenceHashWrapper& a_hash)
348  : kind(a_kind)
349  {
350  std::memcpy(hash, a_hash.eh_, sizeof hash);
351  }
352 
353  bool operator<(const TypeObjectHashId& other) const
354  {
355  if (kind < other.kind) return true;
356  if (other.kind < kind) return false;
357  int ret = std::memcmp(hash, other.hash, sizeof hash);
358  if (ret < 0) return true;
359  if (ret > 0) return false;
360  return false;
361  }
362  };
363 
364  // Flags that apply to struct/union/collection/enum/bitmask/bitset
365  // members/elements and DO affect type assignability
366  // Depending on the flag it may not apply to members of all types
367  // When not all, the applicable member types are listed
369  const MemberFlag TRY_CONSTRUCT1 = 1 << 0; // T1 | 00 = INVALID, 01 = DISCARD
370  const MemberFlag TRY_CONSTRUCT2 = 1 << 1; // T2 | 10 = USE_DEFAULT, 11 = TRIM
371  const MemberFlag IS_EXTERNAL = 1 << 2; // X StructMember, UnionMember,
372  // CollectionElement
373  const MemberFlag IS_OPTIONAL = 1 << 3; // O StructMember
374  const MemberFlag IS_MUST_UNDERSTAND = 1 << 4; // M StructMember
375  const MemberFlag IS_KEY = 1 << 5; // K StructMember, UnionDiscriminator
376  const MemberFlag IS_DEFAULT = 1 << 6; // D UnionMember, EnumerationLiteral
377 
378  typedef MemberFlag CollectionElementFlag; // T1, T2, X
379  typedef MemberFlag StructMemberFlag; // T1, T2, O, M, K, X
380  typedef MemberFlag UnionMemberFlag; // T1, T2, D, X
381  typedef MemberFlag UnionDiscriminatorFlag; // T1, T2, K
382  typedef MemberFlag EnumeratedLiteralFlag; // D
383  typedef MemberFlag AnnotationParameterFlag; // Unused. No flags apply
384  typedef MemberFlag AliasMemberFlag; // Unused. No flags apply
385  typedef MemberFlag BitflagFlag; // Unused. No flags apply
386  typedef MemberFlag BitsetMemberFlag; // Unused. No flags apply
387 
390  const MemberFlag TryConstructTrimValue = TRY_CONSTRUCT1 | TRY_CONSTRUCT2;
391 
392  // Mask used to remove the flags that do not affect assignability
393  // Selects T1, T2, O, M, K, D
394  const MemberFlag MemberFlagMinimalMask = 0x003f;
395 
396  // Flags that apply to type declarations and DO affect assignability
397  // Depending on the flag it may not apply to all types
398  // When not all, the applicable types are listed
400  const TypeFlag IS_FINAL = 1 << 0; // F |
401  const TypeFlag IS_APPENDABLE = 1 << 1; // A |- Struct, Union
402  const TypeFlag IS_MUTABLE = 1 << 2; // M | (exactly one flag)
403 
404  const TypeFlag IS_NESTED = 1 << 3; // N Struct, Union
405  const TypeFlag IS_AUTOID_HASH = 1 << 4; // H Struct
406 
407  typedef TypeFlag StructTypeFlag; // All flags apply
408  typedef TypeFlag UnionTypeFlag; // All flags apply
409  typedef TypeFlag CollectionTypeFlag; // Unused. No flags apply
410  typedef TypeFlag AnnotationTypeFlag; // Unused. No flags apply
411  typedef TypeFlag AliasTypeFlag; // Unused. No flags apply
412  typedef TypeFlag EnumTypeFlag; // Unused. No flags apply
413  typedef TypeFlag BitmaskTypeFlag; // Unused. No flags apply
414  typedef TypeFlag BitsetTypeFlag; // Unused. No flags apply
415 
416  // Mask used to remove the flags that do no affect assignability
417  const TypeFlag TypeFlagMinimalMask = 0x0007; // Selects M, A, F
418 
419  // Forward declaration
420  class TypeIdentifier;
421 
422  // 1 Byte
424  SBound bound;
425 
427  : bound(0)
428  {}
429 
430  explicit StringSTypeDefn(const SBound a_bound)
431  : bound(a_bound)
432  {}
433 
434  bool operator<(const StringSTypeDefn& other) const
435  {
436  return bound < other.bound;
437  }
438  };
439 
440  // 4 Bytes
442  LBound bound;
443 
445  : bound(0)
446  {}
447 
448  explicit StringLTypeDefn(const LBound a_bound)
449  : bound(a_bound)
450  {}
451 
452  bool operator<(const StringLTypeDefn& other) const
453  {
454  return bound < other.bound;
455  }
456  };
457 
459  EquivalenceKind equiv_kind;
460  CollectionElementFlag element_flags;
461 
463  : equiv_kind(0)
464  , element_flags(0)
465  {}
466 
467  PlainCollectionHeader(const EquivalenceKind& a_equiv_kind,
468  const CollectionElementFlag& a_element_flags)
469  : equiv_kind(a_equiv_kind)
470  , element_flags(a_element_flags)
471  {}
472 
473  bool operator<(const PlainCollectionHeader& other) const
474  {
475  if (equiv_kind < other.equiv_kind) return true;
476  if (other.equiv_kind < equiv_kind) return false;
477  if (element_flags < other.element_flags) return true;
478  if (other.element_flags < element_flags) return false;
479  return false;
480  }
481  };
482 
485  SBound bound;
487 
489  : bound(INVALID_SBOUND)
490  {}
491 
493  const SBound& a_bound,
494  const TypeIdentifier& a_element_identifier)
495  : header(a_header)
496  , bound(a_bound)
497  , element_identifier(a_element_identifier)
498  {}
499 
500  bool operator<(const PlainSequenceSElemDefn& other) const;
501  };
502 
505  LBound bound;
507 
509  : bound(INVALID_LBOUND)
510  {}
511 
513  const LBound& a_bound,
514  const TypeIdentifier& a_element_identifier)
515  : header(a_header)
516  , bound(a_bound)
517  , element_identifier(a_element_identifier)
518  {}
519 
520  bool operator<(const PlainSequenceLElemDefn& other) const;
521  };
522 
525  SBoundSeq array_bound_seq;
527 
529 
531  const SBoundSeq& a_array_bound_seq,
532  const TypeIdentifier& a_element_identifier)
533  : header(a_header)
534  , array_bound_seq(a_array_bound_seq)
535  , element_identifier(a_element_identifier)
536  {}
537 
538  bool operator<(const PlainArraySElemDefn& other) const;
539  };
540 
543  LBoundSeq array_bound_seq;
545 
547 
549  const LBoundSeq& a_array_bound_seq,
550  const TypeIdentifier& a_element_identifier)
551  : header(a_header)
552  , array_bound_seq(a_array_bound_seq)
553  , element_identifier(a_element_identifier)
554  {}
555 
556  bool operator<(const PlainArrayLElemDefn& other) const;
557  };
558 
561  SBound bound;
563  CollectionElementFlag key_flags;
565 
567  : bound(INVALID_SBOUND)
568  , key_flags(0)
569  {}
570 
572  const SBound& a_bound,
573  const TypeIdentifier& a_element_identifier,
574  const CollectionElementFlag& a_key_flags,
575  const TypeIdentifier& a_key_identifier)
576  : header(a_header)
577  , bound(a_bound)
578  , element_identifier(a_element_identifier)
579  , key_flags(a_key_flags)
580  , key_identifier(a_key_identifier)
581  {}
582 
583  bool operator<(const PlainMapSTypeDefn& other) const;
584  };
585 
588  LBound bound;
590  CollectionElementFlag key_flags;
592 
594  : bound(INVALID_LBOUND)
595  , key_flags(0)
596  {}
597 
599  const LBound& a_bound,
600  const TypeIdentifier& a_element_identifier,
601  const CollectionElementFlag& a_key_flags,
602  const TypeIdentifier& a_key_identifier)
603  : header(a_header)
604  , bound(a_bound)
605  , element_identifier(a_element_identifier)
606  , key_flags(a_key_flags)
607  , key_identifier(a_key_identifier)
608  {}
609 
610  bool operator<(const PlainMapLTypeDefn& other) const;
611  };
612 
613  // Used for Types that have cyclic dependencies with other types
615  TypeObjectHashId sc_component_id; // Hash StronglyConnectedComponent
616  ACE_CDR::Long scc_length; // StronglyConnectedComponent.length
617  ACE_CDR::Long scc_index; // identify type in Strongly Connected Comp.
618 
620  : scc_length(0)
621  , scc_index(0)
622  {}
623 
625  const ACE_CDR::Long& a_scc_length,
626  const ACE_CDR::Long& a_scc_index)
627  : sc_component_id(a_sc_component_id)
628  , scc_length(a_scc_length)
629  , scc_index(a_scc_index)
630  {}
631 
632  bool operator<(const StronglyConnectedComponentId& other) const
633  {
634  if (sc_component_id < other.sc_component_id) return true;
635  if (other.sc_component_id < sc_component_id) return false;
636  if (scc_length < other.scc_length) return true;
637  if (other.scc_length < scc_length) return false;
638  if (scc_index < other.scc_index) return true;
639  if (other.scc_index < scc_index) return false;
640  return false;
641  }
642  };
643 
644  // Future extensibility
646  // Empty. Available for future extension
647  };
648 
649  // The TypeIdentifier uniquely identifies a type (a set of equivalent
650  // types according to an equivalence relationship: COMPLETE, MNIMAL).
651  //
652  // In some cases (primitive types, strings, plain types) the identifier
653  // is a explicit description of the type.
654  // In other cases the Identifier is a Hash of the type description
655  //
656  // In the case of primitive types and strings the implied equivalence
657  // relation is the identity.
658  //
659  // For Plain Types and Hash-defined TypeIdentifiers there are three
660  // possibilities: MINIMAL, COMPLETE, and COMMON:
661  // - MINIMAL indicates the TypeIdentifier identifies equivalent types
662  // according to the MINIMAL equivalence relation
663  // - COMPLETE indicates the TypeIdentifier identifies equivalent types
664  // according to the COMPLETE equivalence relation
665  // - COMMON indicates the TypeIdentifier identifies equivalent types
666  // according to both the MINIMAL and the COMMON equivalence relation.
667  // This means the TypeIdentifier is the same for both relationships
668  //
669  // @extensibility(FINAL) @nested
670  // union TypeIdentifier switch (octet) {
671  // // ============ Primitive types - use TypeKind ====================
672  // // All primitive types fall here.
673  // // Commented-out because Unions cannot have cases with no member.
674  // /*
675  // case TK_NONE:
676  // case TK_BOOLEAN:
677  // case TK_BYTE:
678  // case TK_INT16:
679  // case TK_INT32:
680  // case TK_INT64:
681  // case TK_UINT16:
682  // case TK_UINT32:
683  // case TK_UINT64:
684  // case TK_FLOAT32:
685  // case TK_FLOAT64:
686  // case TK_FLOAT128:
687  // case TK_CHAR8:
688  // case TK_CHAR16:
689  // // No Value
690  // */
691 
692  // // ============ Strings - use TypeIdentifierKind ===================
693  // case TI_STRING8_SMALL:
694  // case TI_STRING16_SMALL:
695  // StringSTypeDefn string_sdefn;
696 
697  // case TI_STRING8_LARGE:
698  // case TI_STRING16_LARGE:
699  // StringLTypeDefn string_ldefn;
700 
701  // // ============ Plain collections - use TypeIdentifierKind =========
702  // case TI_PLAIN_SEQUENCE_SMALL:
703  // PlainSequenceSElemDefn seq_sdefn;
704  // case TI_PLAIN_SEQUENCE_LARGE:
705  // PlainSequenceLElemDefn seq_ldefn;
706 
707  // case TI_PLAIN_ARRAY_SMALL:
708  // PlainArraySElemDefn array_sdefn;
709  // case TI_PLAIN_ARRAY_LARGE:
710  // PlainArrayLElemDefn array_ldefn;
711 
712  // case TI_PLAIN_MAP_SMALL:
713  // PlainMapSTypeDefn map_sdefn;
714  // case TI_PLAIN_MAP_LARGE:
715  // PlainMapLTypeDefn map_ldefn;
716 
717  // // ============ Types that are mutually dependent on each other ===
718  // case TI_STRONGLY_CONNECTED_COMPONENT:
719  // StronglyConnectedComponentId sc_component_id;
720 
721  // // ============ The remaining cases - use EquivalenceKind =========
722  // case EK_COMPLETE:
723  // case EK_MINIMAL:
724  // EquivalenceHash equivalence_hash;
725 
726  // // =================== Future extensibility ============
727  // // Future extensions
728  // default:
729  // ExtendedTypeDefn extended_defn;
730  // };
731 
733  public:
734  explicit TypeIdentifier(ACE_CDR::Octet kind = TK_NONE);
735  TypeIdentifier(const TypeIdentifier& other);
736  TypeIdentifier& operator=(const TypeIdentifier& other);
737  ~TypeIdentifier() { reset(); }
738 
739  TypeIdentifier(ACE_CDR::Octet kind, const StringSTypeDefn& sdefn);
740  TypeIdentifier(ACE_CDR::Octet kind, const StringLTypeDefn& ldefn);
745  TypeIdentifier(ACE_CDR::Octet kind, const EquivalenceHashWrapper& equivalence_hash);
746  TypeIdentifier(ACE_CDR::Octet kind, const StronglyConnectedComponentId& sc_component_id);
747 
748  ACE_CDR::Octet kind() const { return kind_; }
749 
750 #define OPENDDS_UNION_ACCESSORS(T, N) \
751  const T& N() const { return *static_cast<T*>(active_); } \
752  T& N() { return *static_cast<T*>(active_); }
762  OPENDDS_UNION_ACCESSORS(EquivalenceHash, equivalence_hash);
764 #undef OPENDDS_UNION_ACCESSORS
765 
766  bool operator<(const TypeIdentifier& other) const
767  {
768  if (kind_ != other.kind_) {
769  return kind_ < other.kind_;
770  }
771 
772  switch (kind_) {
774  return sc_component_id() < other.sc_component_id();
775  case EK_COMPLETE:
776  case EK_MINIMAL:
777  return std::memcmp(equivalence_hash(), other.equivalence_hash(), sizeof equivalence_hash()) < 0;
778  case TI_STRING8_SMALL:
779  case TI_STRING16_SMALL:
780  return string_sdefn() < other.string_sdefn();
781  case TI_STRING8_LARGE:
782  case TI_STRING16_LARGE:
783  return string_ldefn() < other.string_ldefn();
785  return seq_sdefn() < other.seq_sdefn();
787  return seq_ldefn() < other.seq_ldefn();
789  return array_sdefn() < other.array_sdefn();
791  return array_ldefn() < other.array_ldefn();
792  case TI_PLAIN_MAP_SMALL:
793  return map_sdefn() < other.map_sdefn();
794  case TI_PLAIN_MAP_LARGE:
795  return map_ldefn() < other.map_ldefn();
796 
797  default:
798  return false;
799  }
800  }
801 
802  bool operator==(const TypeIdentifier& other) const
803  {
804  return !(*this < other) && !(other < *this);
805  }
806 
807  private:
809  void* active_;
810  union {
812 #define OPENDDS_UNION_MEMBER(T, N) unsigned char N ## _[sizeof(T)]
813  OPENDDS_UNION_MEMBER(StringSTypeDefn, string_sdefn);
814  OPENDDS_UNION_MEMBER(StringLTypeDefn, string_ldefn);
822  OPENDDS_UNION_MEMBER(EquivalenceHash, equivalence_hash);
823  OPENDDS_UNION_MEMBER(ExtendedTypeDefn, extended_defn);
824 #undef OPENDDS_UNION_MEMBER
825  };
826  void activate(const TypeIdentifier* other = 0);
827  void reset();
828  };
829 
831 
832  // Operators less-than of member types of TypeIdentifier
834  {
835  if (header < other.header) return true;
836  if (other.header < header) return false;
837  if (bound < other.bound) return true;
838  if (other.bound < bound) return false;
839  if (*element_identifier < *other.element_identifier) return true;
840  if (*other.element_identifier < *element_identifier) return false;
841  return false;
842  }
843 
845  {
846  if (header < other.header) return true;
847  if (other.header < header) return false;
848  if (bound < other.bound) return true;
849  if (other.bound < bound) return false;
850  if (*element_identifier < *other.element_identifier) return true;
851  if (*other.element_identifier < *element_identifier) return false;
852  return false;
853  }
854 
855  inline bool PlainArraySElemDefn::operator<(const PlainArraySElemDefn& other) const
856  {
857  if (header < other.header) return true;
858  if (other.header < header) return false;
859  if (array_bound_seq < other.array_bound_seq) return true;
860  if (other.array_bound_seq < array_bound_seq) return false;
861  if (*element_identifier < *other.element_identifier) return true;
862  if (*other.element_identifier < *element_identifier) return false;
863  return false;
864  }
865 
866  inline bool PlainArrayLElemDefn::operator<(const PlainArrayLElemDefn& other) const
867  {
868  if (header < other.header) return true;
869  if (other.header < header) return false;
870  if (array_bound_seq < other.array_bound_seq) return true;
871  if (other.array_bound_seq < array_bound_seq) return false;
872  if (*element_identifier < *other.element_identifier) return true;
873  if (*other.element_identifier < *element_identifier) return false;
874  return false;
875  }
876 
877  inline bool PlainMapSTypeDefn::operator<(const PlainMapSTypeDefn& other) const
878  {
879  if (header < other.header) return true;
880  if (other.header < header) return false;
881  if (bound < other.bound) return true;
882  if (other.bound < bound) return false;
883  if (*element_identifier < *other.element_identifier) return true;
884  if (*other.element_identifier < *element_identifier) return false;
885  if (key_flags < other.key_flags) return true;
886  if (other.key_flags < key_flags) return false;
887  if (*key_identifier < *other.key_identifier) return true;
888  if (*other.key_identifier < *key_identifier) return false;
889  return false;
890  }
891 
892  inline bool PlainMapLTypeDefn::operator<(const PlainMapLTypeDefn& other) const
893  {
894  if (header < other.header) return true;
895  if (other.header < header) return false;
896  if (bound < other.bound) return true;
897  if (other.bound < bound) return false;
898  if (*element_identifier < *other.element_identifier) return true;
899  if (*other.element_identifier < *element_identifier) return false;
900  if (key_flags < other.key_flags) return true;
901  if (other.key_flags < key_flags) return false;
902  if (*key_identifier < *other.key_identifier) return true;
903  if (*other.key_identifier < *key_identifier) return false;
904  return false;
905  }
906 
907  // --- Annotation usage: -----------------------------------------------
908 
909  // ID of a type member
912  /// Implementation specific sentinel for a union discriminator used in DynamicData
913  const ACE_CDR::ULong DISCRIMINATOR_ID = MEMBER_ID_INVALID - 1;
916 
918  // Empty. Available for future extension
920  {
921  return true;
922  }
923 
925  {
926  return !(*this == other);
927  }
928  };
929 
930  /* Literal value of an annotation member: either the default value in its
931  * definition or the value applied in its usage.
932  */
933  // @extensibility(FINAL) @nested
934  // union AnnotationParameterValue switch (octet) {
935  // case TK_BOOLEAN:
936  // boolean boolean_value;
937  // case TK_BYTE:
938  // octet byte_value;
939  // case TK_INT8:
940  // int8 int8_value;
941  // case TK_UINT8:
942  // uint8 uint8_value;
943  // case TK_INT16:
944  // short int16_value;
945  // case TK_UINT16:
946  // unsigned short uint_16_value;
947  // case TK_INT32:
948  // long int32_value;
949  // case TK_UINT32:
950  // unsigned long uint32_value;
951  // case TK_INT64:
952  // long long int64_value;
953  // case TK_UINT64:
954  // unsigned long long uint64_value;
955  // case TK_FLOAT32:
956  // float float32_value;
957  // case TK_FLOAT64:
958  // double float64_value;
959  // case TK_FLOAT128:
960  // long double float128_value;
961  // case TK_CHAR8:
962  // char char_value;
963  // case TK_CHAR16:
964  // wchar wchar_value;
965  // case TK_ENUM:
966  // long enumerated_value;
967  // case TK_STRING8:
968  // string<ANNOTATION_STR_VALUE_MAX_LEN> string8_value;
969  // case TK_STRING16:
970  // wstring<ANNOTATION_STR_VALUE_MAX_LEN> string16_value;
971  // default:
972  // ExtendedAnnotationParameterValue extended_value;
973  // };
974 
976  public:
977 
978  explicit AnnotationParameterValue(ACE_CDR::Octet kind = TK_NONE);
980  AnnotationParameterValue& operator=(const AnnotationParameterValue& other);
982 
983  ACE_CDR::Octet kind() const { return kind_; }
984 
985 #define OPENDDS_UNION_ACCESSORS(T, N) \
986  const T& N() const { return *static_cast<T*>(active_); } \
987  T& N() { return *static_cast<T*>(active_); }
993  OPENDDS_UNION_ACCESSORS(ACE_CDR::UShort, uint16_value); // OMG Issue DDSXTY14-46.
998  OPENDDS_UNION_ACCESSORS(ACE_CDR::Float, float32_value);
1003  OPENDDS_UNION_ACCESSORS(ACE_CDR::Long, enumerated_value);
1004  OPENDDS_UNION_ACCESSORS(OPENDDS_STRING, string8_value);
1005  OPENDDS_UNION_ACCESSORS(OPENDDS_WSTRING, string16_value);
1006  OPENDDS_UNION_ACCESSORS(ExtendedAnnotationParameterValue, extended_value);
1007 #undef OPENDDS_UNION_ACCESSORS
1008 
1009  bool operator==(const AnnotationParameterValue& other) const
1010  {
1011  if (kind_ != other.kind_) return false;
1012 
1013  switch (kind_) {
1014  case TK_NONE:
1015  return true;
1016  case TK_BOOLEAN:
1017  return boolean_value() == other.boolean_value();
1018  case TK_BYTE:
1019  return byte_value() == other.byte_value();
1020  case TK_INT8:
1021  return int8_value() == other.int8_value();
1022  case TK_UINT8:
1023  return uint8_value() == other.uint8_value();
1024  case TK_INT16:
1025  return int16_value() == other.int16_value();
1026  case TK_UINT16:
1027  return uint16_value() == other.uint16_value();
1028  case TK_INT32:
1029  return int32_value() == other.int32_value();
1030  case TK_UINT32:
1031  return uint32_value() == other.uint32_value();
1032  case TK_INT64:
1033  return int64_value() == other.int64_value();
1034  case TK_UINT64:
1035  return uint64_value() == other.uint64_value();
1036  case TK_FLOAT32:
1037  return float32_value() == other.float32_value();
1038  case TK_FLOAT64:
1039  return float64_value() == other.float64_value();
1040  case TK_FLOAT128:
1041  return float128_value() == other.float128_value();
1042  case TK_CHAR8:
1043  return char_value() == other.char_value();
1044  case TK_CHAR16:
1045  return wchar_value() == other.wchar_value();
1046  case TK_ENUM:
1047  return enumerated_value() == other.enumerated_value();
1048  case TK_STRING8:
1049  return string8_value() == other.string8_value();
1050  case TK_STRING16:
1051  return string16_value() == other.string16_value();
1052  default:
1053  return extended_value() == other.extended_value();
1054  }
1055  }
1056 
1057  bool operator!=(const AnnotationParameterValue& other) const
1058  {
1059  return !(*this == other);
1060  }
1061 
1062  private:
1064  void* active_;
1065  union {
1067 #define OPENDDS_UNION_MEMBER(T, N) unsigned char N ## _[sizeof(T)]
1068  OPENDDS_UNION_MEMBER(ACE_CDR::Boolean, boolean_value);
1069  OPENDDS_UNION_MEMBER(ACE_CDR::Octet, byte_value);
1070  OPENDDS_UNION_MEMBER(ACE_CDR::Char, int8_value);
1071  OPENDDS_UNION_MEMBER(ACE_CDR::Octet, uint8_value);
1072  OPENDDS_UNION_MEMBER(ACE_CDR::Short, int16_value);
1073  OPENDDS_UNION_MEMBER(ACE_CDR::UShort, uint16_value); // OMG Issue DDSXTY14-46.
1074  OPENDDS_UNION_MEMBER(ACE_CDR::Long, int32_value);
1075  OPENDDS_UNION_MEMBER(ACE_CDR::ULong, uint32_value);
1078  OPENDDS_UNION_MEMBER(ACE_CDR::Float, float32_value);
1079  OPENDDS_UNION_MEMBER(ACE_CDR::Double, float64_value);
1080  OPENDDS_UNION_MEMBER(ACE_CDR::LongDouble, float128_value);
1082  OPENDDS_UNION_MEMBER(ACE_CDR::WChar, wchar_value);
1083  OPENDDS_UNION_MEMBER(ACE_CDR::Long, enumerated_value);
1084  OPENDDS_UNION_MEMBER(DCPS::String, string8_value);
1085  OPENDDS_UNION_MEMBER(DCPS::WString, string16_value);
1086  OPENDDS_UNION_MEMBER(ExtendedAnnotationParameterValue, extended_value);
1087 #undef OPENDDS_UNION_MEMBER
1088  };
1089  void activate(const AnnotationParameterValue* other = 0);
1090  void reset();
1091  };
1092 
1093  // The application of an annotation to some type or type member
1095  NameHash paramname_hash;
1097 
1099  {
1100  paramname_hash[0] = paramname_hash[1] = paramname_hash[2] = paramname_hash[3] = 0;
1101  }
1102 
1104  : value(a_value)
1105  {
1106  paramname_hash[0] = a;
1107  paramname_hash[1] = b;
1108  paramname_hash[2] = c;
1109  paramname_hash[3] = d;
1110  }
1111 
1112  AppliedAnnotationParameter(const NameHash& a_name_hash,
1113  const AnnotationParameterValue& a_value)
1114  : value(a_value)
1115  {
1116  std::memcpy(&paramname_hash, a_name_hash, sizeof paramname_hash);
1117  }
1118 
1119  bool operator<(const AppliedAnnotationParameter& other) const
1120  {
1121  return std::memcmp(paramname_hash, other.paramname_hash, sizeof paramname_hash) < 0;
1122  }
1123 
1124  bool operator==(const AppliedAnnotationParameter& other) const
1125  {
1126  return name_hash_equal(paramname_hash, other.paramname_hash) && value == other.value;
1127  }
1128 
1129  bool operator!=(const AppliedAnnotationParameter& other) const
1130  {
1131  return !(*this == other);
1132  }
1133  };
1134  // Sorted by AppliedAnnotationParameter.paramname_hash
1136 
1140 
1142 
1144  const Optional<AppliedAnnotationParameterSeq>& a_param_seq)
1145  : annotation_typeid(ann_typeid)
1146  , param_seq(a_param_seq)
1147  {}
1148 
1149  bool operator<(const AppliedAnnotation& other) const
1150  {
1151  return annotation_typeid < other.annotation_typeid;
1152  }
1153 
1154  bool operator==(const AppliedAnnotation& other) const
1155  {
1156  return annotation_typeid == other.annotation_typeid && param_seq == other.param_seq;
1157  }
1158 
1159  bool operator!=(const AppliedAnnotation& other) const
1160  {
1161  return !(*this == other);
1162  }
1163  };
1164  // Sorted by AppliedAnnotation.annotation_typeid
1166 
1167  // @verbatim(placement="<placement>", language="<lang>", text="<text>")
1172 
1174 
1176  const OPENDDS_STRING& a_language,
1177  const OPENDDS_STRING& a_text)
1178  : placement(a_placement)
1179  , language(a_language)
1180  , text(a_text)
1181  {}
1182 
1183  bool operator==(const AppliedVerbatimAnnotation& other) const
1184  {
1185  return placement == other.placement && language == other.language && text == other.text;
1186  }
1187 
1188  bool operator!=(const AppliedVerbatimAnnotation& other) const
1189  {
1190  return !(*this == other);
1191  }
1192  };
1193 
1194  // --- Aggregate types: ------------------------------------------------
1196  Optional<DCPS::String> unit; // @unit("<unit>")
1199  Optional<DCPS::String> hash_id; // @hash_id("<membername>")
1200 
1202 
1206  const Optional<DCPS::String>& a_hash_id);
1207 
1209  {
1210  return unit == other.unit && min == other.min && max == other.max && hash_id == other.hash_id;
1211  }
1212 
1214  {
1215  return !(*this == other);
1216  }
1217  };
1218 
1220  MemberId member_id;
1221  StructMemberFlag member_flags;
1223 
1225  : member_id(0)
1226  , member_flags(0)
1227  {}
1228 
1229  CommonStructMember (const MemberId& a_member_id,
1230  const StructMemberFlag& a_member_flags,
1231  const TypeIdentifier& a_member_type_id)
1232  : member_id(a_member_id)
1233  , member_flags(a_member_flags)
1234  , member_type_id(a_member_type_id)
1235  {}
1236 
1237  bool operator==(const CommonStructMember& other) const
1238  {
1239  return member_id == other.member_id && member_flags == other.member_flags && member_type_id == other.member_type_id;
1240  }
1241 
1242  bool operator!=(const CommonStructMember& other) const
1243  {
1244  return !(*this == other);
1245  }
1246  };
1247 
1248  // COMPLETE Details for a member of an aggregate type
1250  MemberName name;
1253 
1255 
1256  CompleteMemberDetail(const MemberName& a_name,
1257  const Optional<AppliedBuiltinMemberAnnotations>& an_ann_builtin,
1258  const Optional<AppliedAnnotationSeq>& an_ann_custom)
1259  : name(a_name)
1260  , ann_builtin(an_ann_builtin)
1261  , ann_custom(an_ann_custom)
1262  {}
1263 
1264  bool operator==(const CompleteMemberDetail& other) const
1265  {
1266  return name == other.name && ann_builtin == other.ann_builtin && ann_custom == other.ann_custom;
1267  }
1268 
1269  bool operator!=(const CompleteMemberDetail& other) const
1270  {
1271  return !(*this == other);
1272  }
1273  };
1274 
1275  // MINIMAL Details for a member of an aggregate type
1277  NameHash name_hash;
1278 
1280  {
1281  name_hash[0] = name_hash[1] = name_hash[2] = name_hash[3] = 0;
1282  }
1283 
1285  {
1286  name_hash[0] = a; name_hash[1] = b; name_hash[2] = c; name_hash[3] = d;
1287  }
1288 
1289  explicit MinimalMemberDetail(const NameHash& a_name_hash)
1290  {
1291  std::memcpy(&name_hash, &a_name_hash, sizeof name_hash);
1292  }
1293 
1294  explicit MinimalMemberDetail(const OPENDDS_STRING& name);
1295 
1296  bool operator==(const MinimalMemberDetail& other) const
1297  {
1298  return name_hash_equal(name_hash, other.name_hash);
1299  }
1300 
1301  bool operator!=(const MinimalMemberDetail& other) const
1302  {
1303  return !(*this == other);
1304  }
1305  };
1306 
1307  // Member of an aggregate type
1311 
1313 
1315  const CompleteMemberDetail& a_detail)
1316  : common(a_common)
1317  , detail(a_detail)
1318  {}
1319 
1320  bool operator<(const CompleteStructMember& other) const
1321  {
1322  return common.member_id < other.common.member_id;
1323  }
1324 
1325  bool operator==(const CompleteStructMember& other) const
1326  {
1327  return common == other.common && detail == other.detail;
1328  }
1329 
1330  bool operator!=(const CompleteStructMember& other) const
1331  {
1332  return !(*this == other);
1333  }
1334  };
1335  // Ordered by the member_index
1337 
1338  // Member of an aggregate type
1342 
1344 
1346  const MinimalMemberDetail& a_detail)
1347  : common(a_common)
1348  , detail(a_detail)
1349  {}
1350 
1351  bool operator<(const MinimalStructMember& other) const
1352  {
1353  return common.member_id < other.common.member_id;
1354  }
1355 
1356  bool operator==(const MinimalStructMember& other) const
1357  {
1358  return common == other.common && detail == other.detail;
1359  }
1360 
1361  bool operator!=(const MinimalStructMember& other) const
1362  {
1363  return !(*this == other);
1364  }
1365  };
1366  // Ordered by common.member_id
1368 
1371 
1373 
1375  : verbatim(a_verbatim)
1376  {}
1377 
1379  {
1380  return verbatim == other.verbatim;
1381  }
1382 
1384  {
1385  return !(*this == other);
1386  }
1387  };
1388 
1390  // Empty. Available for future extension
1391  bool operator==(const MinimalTypeDetail&) const
1392  {
1393  return true;
1394  }
1395 
1396  bool operator!=(const MinimalTypeDetail& other) const
1397  {
1398  return !(*this == other);
1399  }
1400  };
1401 
1405  QualifiedTypeName type_name;
1406 
1408 
1410  const Optional<AppliedAnnotationSeq>& an_ann_custom,
1411  const QualifiedTypeName& a_type_name)
1412  : ann_builtin(an_ann_builtin)
1413  , ann_custom(an_ann_custom)
1414  , type_name(a_type_name)
1415  {}
1416 
1417  bool operator==(const CompleteTypeDetail& other) const
1418  {
1419  return ann_builtin == other.ann_builtin && ann_custom == other.ann_custom && type_name == other.type_name;
1420  }
1421 
1422  bool operator!=(const CompleteTypeDetail& other) const
1423  {
1424  return !(*this == other);
1425  }
1426  };
1427 
1431 
1433 
1435  const CompleteTypeDetail& a_detail)
1436  : base_type(a_base_type)
1437  , detail(a_detail)
1438  {}
1439 
1440  bool operator==(const CompleteStructHeader& other) const
1441  {
1442  return base_type == other.base_type && detail == other.detail;
1443  }
1444 
1445  bool operator!=(const CompleteStructHeader& other) const
1446  {
1447  return !(*this == other);
1448  }
1449  };
1450 
1454 
1456 
1458  const MinimalTypeDetail& a_detail)
1459  : base_type(a_base_type)
1460  , detail(a_detail)
1461  {}
1462 
1463  bool operator==(const MinimalStructHeader& other) const
1464  {
1465  return base_type == other.base_type && detail == other.detail;
1466  }
1467 
1468  bool operator!=(const MinimalStructHeader& other) const
1469  {
1470  return !(*this == other);
1471  }
1472  };
1473 
1475  StructTypeFlag struct_flags;
1477  CompleteStructMemberSeq member_seq;
1478 
1480  : struct_flags(0)
1481  {}
1482 
1483  CompleteStructType(const StructTypeFlag& a_struct_flags,
1484  const CompleteStructHeader& a_header,
1485  const CompleteStructMemberSeq& a_member_seq)
1486  : struct_flags(a_struct_flags)
1487  , header(a_header)
1488  , member_seq(a_member_seq)
1489  {}
1490 
1491  bool operator==(const CompleteStructType& other) const
1492  {
1493  return struct_flags == other.struct_flags && header == other.header && member_seq == other.member_seq;
1494  }
1495 
1496  bool operator!=(const CompleteStructType& other) const
1497  {
1498  return !(*this == other);
1499  }
1500  };
1501 
1503  StructTypeFlag struct_flags;
1505  MinimalStructMemberSeq member_seq;
1506 
1508  : struct_flags(0)
1509  {}
1510 
1511  MinimalStructType(const StructTypeFlag& a_struct_flags,
1512  const MinimalStructHeader& a_header,
1513  const MinimalStructMemberSeq& a_member_seq)
1514  : struct_flags(a_struct_flags)
1515  , header(a_header)
1516  , member_seq(a_member_seq)
1517  {}
1518 
1519  bool operator==(const MinimalStructType& other) const
1520  {
1521  return struct_flags == other.struct_flags && header == other.header && member_seq == other.member_seq;
1522  }
1523 
1524  bool operator!=(const MinimalStructType& other) const
1525  {
1526  return !(*this == other);
1527  }
1528  };
1529 
1530  // --- Union: ----------------------------------------------------------
1531 
1532  // Case labels that apply to a member of a union type
1533  // Ordered by their values
1535 
1537  MemberId member_id;
1538  UnionMemberFlag member_flags;
1540  UnionCaseLabelSeq label_seq;
1541 
1543  : member_id(0)
1544  , member_flags(0)
1545  {}
1546 
1547  CommonUnionMember(const MemberId& a_member_id,
1548  const UnionMemberFlag& a_member_flags,
1549  const TypeIdentifier& a_type_id,
1550  const UnionCaseLabelSeq& a_label_seq)
1551  : member_id(a_member_id)
1552  , member_flags(a_member_flags)
1553  , type_id(a_type_id)
1554  , label_seq(a_label_seq)
1555  {}
1556 
1557  bool operator==(const CommonUnionMember& other) const
1558  {
1559  return member_id == other.member_id && member_flags == other.member_flags && type_id == other.type_id && label_seq == other.label_seq;
1560  }
1561 
1562  bool operator!=(const CommonUnionMember& other) const
1563  {
1564  return !(*this == other);
1565  }
1566  };
1567 
1568  // Member of a union type
1572 
1574 
1576  const CompleteMemberDetail& a_detail)
1577  : common(a_common)
1578  , detail(a_detail)
1579  {}
1580 
1581  bool operator<(const CompleteUnionMember& other) const
1582  {
1583  return common.member_id < other.common.member_id;
1584  }
1585 
1586  bool operator==(const CompleteUnionMember& other) const
1587  {
1588  return common == other.common && detail == other.detail;
1589  }
1590 
1591  bool operator!=(const CompleteUnionMember& other) const
1592  {
1593  return !(*this == other);
1594  }
1595  };
1596  // Ordered by member_index
1598 
1599  // Member of a union type
1603 
1605 
1607  const MinimalMemberDetail& a_detail)
1608  : common(a_common)
1609  , detail(a_detail)
1610  {}
1611 
1612  bool operator<(const MinimalUnionMember& other) const
1613  {
1614  return common.member_id < other.common.member_id;
1615  }
1616 
1617  bool operator==(const MinimalUnionMember& other) const
1618  {
1619  return common == other.common && detail == other.detail;
1620  }
1621 
1622  bool operator!=(const MinimalUnionMember& other) const
1623  {
1624  return !(*this == other);
1625  }
1626  };
1627  // Ordered by MinimalUnionMember.common.member_id
1629 
1631  UnionDiscriminatorFlag member_flags;
1633 
1635  : member_flags(0)
1636  {}
1637 
1638  CommonDiscriminatorMember(const UnionDiscriminatorFlag& a_member_flags,
1639  const TypeIdentifier& a_type_id)
1640  : member_flags(a_member_flags)
1641  , type_id(a_type_id)
1642  {}
1643 
1644  bool operator==(const CommonDiscriminatorMember& other) const
1645  {
1646  return member_flags == other.member_flags && type_id == other.type_id;
1647  }
1648 
1649  bool operator!=(const CommonDiscriminatorMember& other) const
1650  {
1651  return !(*this == other);
1652  }
1653  };
1654 
1655  // Member of a union type
1660 
1662 
1664  const Optional<AppliedBuiltinTypeAnnotations>& an_ann_builtin,
1665  const Optional<AppliedAnnotationSeq>& an_ann_custom)
1666  : common(a_common)
1667  , ann_builtin(an_ann_builtin)
1668  , ann_custom(an_ann_custom)
1669  {}
1670 
1671  bool operator==(const CompleteDiscriminatorMember& other) const
1672  {
1673  return common == other.common && ann_builtin == other.ann_builtin && ann_custom == other.ann_custom;
1674  }
1675 
1676  bool operator!=(const CompleteDiscriminatorMember& other) const
1677  {
1678  return !(*this == other);
1679  }
1680  };
1681 
1682  // Member of a union type
1685 
1687 
1689  : common(a_common)
1690  {}
1691 
1692  bool operator==(const MinimalDiscriminatorMember& other) const
1693  {
1694  return common == other.common;
1695  }
1696 
1697  bool operator!=(const MinimalDiscriminatorMember& other) const
1698  {
1699  return !(*this == other);
1700  }
1701  };
1702 
1705 
1707 
1708  explicit CompleteUnionHeader(const CompleteTypeDetail& a_detail)
1709  : detail(a_detail)
1710  {}
1711 
1712  bool operator==(const CompleteUnionHeader& other) const
1713  {
1714  return detail == other.detail;
1715  }
1716 
1717  bool operator!=(const CompleteUnionHeader& other) const
1718  {
1719  return !(*this == other);
1720  }
1721  };
1722 
1725 
1727 
1728  explicit MinimalUnionHeader(const MinimalTypeDetail& a_detail)
1729  : detail(a_detail)
1730  {}
1731 
1732  bool operator==(const MinimalUnionHeader& other) const
1733  {
1734  return detail == other.detail;
1735  }
1736 
1737  bool operator!=(const MinimalUnionHeader& other) const
1738  {
1739  return !(*this == other);
1740  }
1741  };
1742 
1744  UnionTypeFlag union_flags;
1747  CompleteUnionMemberSeq member_seq;
1748 
1750  : union_flags(0)
1751  {}
1752 
1753  CompleteUnionType(const UnionTypeFlag& a_union_flags,
1754  const CompleteUnionHeader& a_header,
1755  const CompleteDiscriminatorMember& a_discriminator,
1756  const CompleteUnionMemberSeq& a_member_seq)
1757  : union_flags(a_union_flags)
1758  , header(a_header)
1759  , discriminator(a_discriminator)
1760  , member_seq(a_member_seq)
1761  {}
1762 
1763  bool operator==(const CompleteUnionType& other) const
1764  {
1765  return union_flags == other.union_flags && header == other.header && discriminator == other.discriminator && member_seq == other.member_seq;
1766  }
1767 
1768  bool operator!=(const CompleteUnionType& other) const
1769  {
1770  return !(*this == other);
1771  }
1772  };
1773 
1775  UnionTypeFlag union_flags;
1778  MinimalUnionMemberSeq member_seq;
1779 
1781  : union_flags(0)
1782  {}
1783 
1784  MinimalUnionType(const UnionTypeFlag& a_union_flags,
1785  const MinimalUnionHeader& a_header,
1786  const MinimalDiscriminatorMember& a_discriminator,
1787  const MinimalUnionMemberSeq& a_member_seq)
1788  : union_flags(a_union_flags)
1789  , header(a_header)
1790  , discriminator(a_discriminator)
1791  , member_seq(a_member_seq)
1792  {}
1793 
1794  bool operator==(const MinimalUnionType& other) const
1795  {
1796  return union_flags == other.union_flags && header == other.header && discriminator == other.discriminator && member_seq == other.member_seq;
1797  }
1798 
1799  bool operator!=(const MinimalUnionType& other) const
1800  {
1801  return !(*this == other);
1802  }
1803  };
1804 
1805  // --- Annotation: ----------------------------------------------------
1807  AnnotationParameterFlag member_flags;
1809 
1811  : member_flags(0)
1812  {}
1813 
1814  bool operator==(const CommonAnnotationParameter& other) const
1815  {
1816  return member_flags == other.member_flags && member_type_id == other.member_type_id;
1817  }
1818 
1819  bool operator!=(const CommonAnnotationParameter& other) const
1820  {
1821  return !(*this == other);
1822  }
1823  };
1824 
1825  // Member of an annotation type
1828  MemberName name;
1830 
1831  bool operator==(const CompleteAnnotationParameter& other) const
1832  {
1833  return common == other.common && name == other.name && default_value == other.default_value;
1834  }
1835 
1836  bool operator!=(const CompleteAnnotationParameter& other) const
1837  {
1838  return !(*this == other);
1839  }
1840  };
1841  // Ordered by CompleteAnnotationParameter.name
1843 
1846  NameHash name_hash;
1848 
1850  {
1851  name_hash[0] = name_hash[1] = name_hash[2] = name_hash[3] = 0;
1852  }
1853 
1854  bool operator==(const MinimalAnnotationParameter& other) const
1855  {
1856  return common == other.common && name_hash_equal(name_hash, other.name_hash) && default_value == other.default_value;
1857  }
1858 
1859  bool operator!=(const MinimalAnnotationParameter& other) const
1860  {
1861  return !(*this == other);
1862  }
1863  };
1864  // Ordered by MinimalAnnotationParameter.name_hash
1866 
1868  QualifiedTypeName annotation_name;
1869 
1870  bool operator==(const CompleteAnnotationHeader& other) const
1871  {
1872  return annotation_name == other.annotation_name;
1873  }
1874 
1875  bool operator!=(const CompleteAnnotationHeader& other) const
1876  {
1877  return !(*this == other);
1878  }
1879  };
1880 
1882  // Empty. Available for future extension
1883 
1885  {
1886  return true;
1887  }
1888 
1889  bool operator!=(const MinimalAnnotationHeader& other) const
1890  {
1891  return !(*this == other);
1892  }
1893  };
1894 
1896  AnnotationTypeFlag annotation_flag;
1898  CompleteAnnotationParameterSeq member_seq;
1899 
1901  : annotation_flag(0)
1902  {}
1903 
1904  bool operator==(const CompleteAnnotationType& other) const
1905  {
1906  return annotation_flag == other.annotation_flag && header == other.header && member_seq == other.member_seq;
1907  }
1908 
1909  bool operator!=(const CompleteAnnotationType& other) const
1910  {
1911  return !(*this == other);
1912  }
1913  };
1914 
1916  AnnotationTypeFlag annotation_flag;
1918  MinimalAnnotationParameterSeq member_seq;
1919 
1921  : annotation_flag(0)
1922  {}
1923 
1924  bool operator==(const MinimalAnnotationType& other) const
1925  {
1926  return annotation_flag == other.annotation_flag && header == other.header && member_seq == other.member_seq;
1927  }
1928 
1929  bool operator!=(const MinimalAnnotationType& other) const
1930  {
1931  return !(*this == other);
1932  }
1933  };
1934 
1935  // --- Alias: ----------------------------------------------------------
1937  AliasMemberFlag related_flags;
1939 
1941  : related_flags(0)
1942  {}
1943 
1944  CommonAliasBody(const AliasMemberFlag& a_related_flags,
1945  const TypeIdentifier& a_related_type)
1946  : related_flags(a_related_flags)
1947  , related_type(a_related_type)
1948  {}
1949 
1950  bool operator==(const CommonAliasBody& other) const
1951  {
1952  return related_flags == other.related_flags && related_type == other.related_type;
1953  }
1954 
1955  bool operator!=(const CommonAliasBody& other) const
1956  {
1957  return !(*this == other);
1958  }
1959  };
1960 
1965 
1967 
1969  const Optional<AppliedBuiltinMemberAnnotations>& an_ann_builtin,
1970  const Optional<AppliedAnnotationSeq>& an_ann_custom)
1971  : common(a_common)
1972  , ann_builtin(an_ann_builtin)
1973  , ann_custom(an_ann_custom)
1974  {}
1975 
1976  bool operator==(const CompleteAliasBody& other) const
1977  {
1978  return common == other.common && ann_builtin == other.ann_builtin && ann_custom == other.ann_custom;
1979  }
1980 
1981  bool operator!=(const CompleteAliasBody& other) const
1982  {
1983  return !(*this == other);
1984  }
1985  };
1986 
1989 
1991 
1992  explicit MinimalAliasBody(const CommonAliasBody& a_common)
1993  : common(a_common)
1994  {}
1995 
1996  bool operator==(const MinimalAliasBody& other) const
1997  {
1998  return common == other.common;
1999  }
2000 
2001  bool operator!=(const MinimalAliasBody& other) const
2002  {
2003  return !(*this == other);
2004  }
2005  };
2006 
2009 
2011 
2012  explicit CompleteAliasHeader(const CompleteTypeDetail& a_detail)
2013  : detail(a_detail)
2014  {}
2015 
2016  bool operator==(const CompleteAliasHeader& other) const
2017  {
2018  return detail == other.detail;
2019  }
2020 
2021  bool operator!=(const CompleteAliasHeader& other) const
2022  {
2023  return !(*this == other);
2024  }
2025  };
2026 
2028  // Empty. Available for future extension
2029 
2030  bool operator==(const MinimalAliasHeader&) const
2031  {
2032  return true;
2033  }
2034 
2035  bool operator!=(const MinimalAliasHeader& other) const
2036  {
2037  return !(*this == other);
2038  }
2039  };
2040 
2042  AliasTypeFlag alias_flags;
2045 
2047  : alias_flags(0)
2048  {}
2049 
2050  CompleteAliasType(const AliasTypeFlag& a_alias_flags,
2051  const CompleteAliasHeader& a_header,
2052  const CompleteAliasBody& a_body)
2053  : alias_flags(a_alias_flags)
2054  , header(a_header)
2055  , body(a_body)
2056  {}
2057 
2058  bool operator==(const CompleteAliasType& other) const
2059  {
2060  return alias_flags == other.alias_flags && header == other.header && body == other.body;
2061  }
2062 
2063  bool operator!=(const CompleteAliasType& other) const
2064  {
2065  return !(*this == other);
2066  }
2067  };
2068 
2070  AliasTypeFlag alias_flags;
2073 
2075  : alias_flags(0)
2076  {}
2077 
2078  MinimalAliasType(const AliasTypeFlag& a_alias_flags,
2079  const MinimalAliasHeader& a_header,
2080  const MinimalAliasBody& a_body)
2081  : alias_flags(a_alias_flags)
2082  , header(a_header)
2083  , body(a_body)
2084  {}
2085 
2086  bool operator==(const MinimalAliasType& other) const
2087  {
2088  return alias_flags == other.alias_flags && header == other.header && body == other.body;
2089  }
2090 
2091  bool operator!=(const MinimalAliasType& other) const
2092  {
2093  return !(*this == other);
2094  }
2095  };
2096 
2097  // --- Collections: ----------------------------------------------------
2101 
2103 
2105  const Optional<AppliedAnnotationSeq>& an_ann_custom)
2106  : ann_builtin(an_ann_builtin)
2107  , ann_custom(an_ann_custom)
2108  {}
2109 
2110  bool operator==(const CompleteElementDetail& other) const
2111  {
2112  return ann_builtin == other.ann_builtin && ann_custom == other.ann_custom;
2113  }
2114 
2115  bool operator!=(const CompleteElementDetail& other) const
2116  {
2117  return !(*this == other);
2118  }
2119  };
2120 
2122  CollectionElementFlag element_flags;
2124 
2126  : element_flags(0)
2127  {}
2128 
2129  CommonCollectionElement(CollectionElementFlag a_element_flags,
2130  const TypeIdentifier& a_type)
2131  : element_flags(a_element_flags)
2132  , type(a_type)
2133  {}
2134 
2135  bool operator==(const CommonCollectionElement& other) const
2136  {
2137  return element_flags == other.element_flags && type == other.type;
2138  }
2139 
2140  bool operator!=(const CommonCollectionElement& other) const
2141  {
2142  return !(*this == other);
2143  }
2144  };
2145 
2149 
2151 
2153  const CompleteElementDetail& a_detail)
2154  : common(a_common)
2155  , detail(a_detail)
2156  {}
2157 
2158  bool operator==(const CompleteCollectionElement& other) const
2159  {
2160  return common == other.common && detail == other.detail;
2161  }
2162 
2163  bool operator!=(const CompleteCollectionElement& other) const
2164  {
2165  return !(*this == other);
2166  }
2167  };
2168 
2171 
2173 
2175  : common(a_common) {}
2176 
2177  bool operator==(const MinimalCollectionElement& other) const
2178  {
2179  return common == other.common;
2180  }
2181 
2182  bool operator!=(const MinimalCollectionElement& other) const
2183  {
2184  return !(*this == other);
2185  }
2186  };
2187 
2189  LBound bound;
2190 
2192  : bound(0)
2193  {}
2194 
2195  explicit CommonCollectionHeader(LBound a_bound) : bound(a_bound) {}
2196 
2197  bool operator==(const CommonCollectionHeader& other) const
2198  {
2199  return bound == other.bound;
2200  }
2201 
2202  bool operator!=(const CommonCollectionHeader& other) const
2203  {
2204  return !(*this == other);
2205  }
2206  };
2207 
2210  Optional<CompleteTypeDetail> detail; // not present for anonymous
2211 
2213 
2215  const Optional<CompleteTypeDetail>& a_detail)
2216  : common(a_common)
2217  , detail(a_detail)
2218  {}
2219 
2220  bool operator==(const CompleteCollectionHeader& other) const
2221  {
2222  return common == other.common && detail == other.detail;
2223  }
2224 
2225  bool operator!=(const CompleteCollectionHeader& other) const
2226  {
2227  return !(*this == other);
2228  }
2229  };
2230 
2233 
2235 
2237  : common(a_common) {}
2238 
2239  bool operator==(const MinimalCollectionHeader& other) const
2240  {
2241  return common == other.common;
2242  }
2243 
2244  bool operator!=(const MinimalCollectionHeader& other) const
2245  {
2246  return !(*this == other);
2247  }
2248  };
2249 
2250  // --- Sequence: ------------------------------------------------------
2252  CollectionTypeFlag collection_flag;
2255 
2257  : collection_flag(0)
2258  , header()
2259  , element()
2260  {}
2261 
2262  CompleteSequenceType(CollectionTypeFlag a_collection_flag,
2263  const CompleteCollectionHeader& a_header,
2264  const CompleteCollectionElement& an_element)
2265  : collection_flag(a_collection_flag)
2266  , header(a_header)
2267  , element(an_element)
2268  {}
2269 
2270  bool operator==(const CompleteSequenceType& other) const
2271  {
2272  return collection_flag == other.collection_flag && header == other.header && element == other.element;
2273  }
2274 
2275  bool operator!=(const CompleteSequenceType& other) const
2276  {
2277  return !(*this == other);
2278  }
2279  };
2280 
2282  CollectionTypeFlag collection_flag;
2285 
2287  : collection_flag(0)
2288  , header()
2289  , element()
2290  {}
2291 
2292  MinimalSequenceType(CollectionTypeFlag a_collection_flag,
2293  const MinimalCollectionHeader& a_header,
2294  const MinimalCollectionElement& a_element)
2295  : collection_flag(a_collection_flag)
2296  , header(a_header)
2297  , element(a_element)
2298  {}
2299 
2300  bool operator==(const MinimalSequenceType& other) const
2301  {
2302  return collection_flag == other.collection_flag && header == other.header && element == other.element;
2303  }
2304 
2305  bool operator!=(const MinimalSequenceType& other) const
2306  {
2307  return !(*this == other);
2308  }
2309  };
2310 
2311  // --- Array: ------------------------------------------------------
2313  LBoundSeq bound_seq;
2314 
2316 
2317  explicit CommonArrayHeader(const LBoundSeq& a_bound_seq)
2318  : bound_seq(a_bound_seq) {}
2319 
2320  bool operator==(const CommonArrayHeader& other) const
2321  {
2322  return bound_seq == other.bound_seq;
2323  }
2324 
2325  bool operator!=(const CommonArrayHeader& other) const
2326  {
2327  return !(*this == other);
2328  }
2329  };
2330 
2334 
2336 
2338  const CompleteTypeDetail& a_detail)
2339  : common(a_common)
2340  , detail(a_detail)
2341  {}
2342 
2343  bool operator==(const CompleteArrayHeader& other) const
2344  {
2345  return common == other.common && detail == other.detail;
2346  }
2347 
2348  bool operator!=(const CompleteArrayHeader& other) const
2349  {
2350  return !(*this == other);
2351  }
2352  };
2353 
2356 
2358 
2359  explicit MinimalArrayHeader(const CommonArrayHeader& a_common)
2360  : common(a_common)
2361  {}
2362 
2363  bool operator==(const MinimalArrayHeader& other) const
2364  {
2365  return common == other.common;
2366  }
2367 
2368  bool operator!=(const MinimalArrayHeader& other) const
2369  {
2370  return !(*this == other);
2371  }
2372  };
2373 
2375  CollectionTypeFlag collection_flag;
2378 
2380  : collection_flag(0)
2381  , header()
2382  , element()
2383  {}
2384 
2385  CompleteArrayType(CollectionTypeFlag a_collection_flag,
2386  const CompleteArrayHeader& a_header,
2387  const CompleteCollectionElement& an_element)
2388  : collection_flag(a_collection_flag)
2389  , header(a_header)
2390  , element(an_element)
2391  {}
2392 
2393  bool operator==(const CompleteArrayType& other) const
2394  {
2395  return collection_flag == other.collection_flag && header == other.header && element == other.element;
2396  }
2397 
2398  bool operator!=(const CompleteArrayType& other) const
2399  {
2400  return !(*this == other);
2401  }
2402  };
2403 
2405  CollectionTypeFlag collection_flag;
2408 
2410  : collection_flag(0)
2411  , header()
2412  , element()
2413  {}
2414 
2415  MinimalArrayType(CollectionTypeFlag a_collection_flag,
2416  const MinimalArrayHeader& a_header,
2417  const MinimalCollectionElement& a_element)
2418  : collection_flag(a_collection_flag)
2419  , header(a_header)
2420  , element(a_element)
2421  {}
2422 
2423  bool operator==(const MinimalArrayType& other) const
2424  {
2425  return collection_flag == other.collection_flag && header == other.header && element == other.element;
2426  }
2427 
2428  bool operator!=(const MinimalArrayType& other) const
2429  {
2430  return !(*this == other);
2431  }
2432  };
2433 
2434  // --- Map: ------------------------------------------------------
2436  CollectionTypeFlag collection_flag;
2440 
2442  : collection_flag(0)
2443  {}
2444 
2445  bool operator==(const CompleteMapType& other) const
2446  {
2447  return collection_flag == other.collection_flag && header == other.header && key == other.key && element == other.element;
2448  }
2449 
2450  bool operator!=(const CompleteMapType& other) const
2451  {
2452  return !(*this == other);
2453  }
2454  };
2455 
2457  CollectionTypeFlag collection_flag;
2461 
2463  : collection_flag(0)
2464  {}
2465 
2466  bool operator==(const MinimalMapType& other) const
2467  {
2468  return collection_flag == other.collection_flag && header == other.header && key == other.key && element == other.element;
2469  }
2470 
2471  bool operator!=(const MinimalMapType& other) const
2472  {
2473  return !(*this == other);
2474  }
2475  };
2476 
2477  // --- Enumeration: ----------------------------------------------------
2479 
2480  // Constant in an enumerated type
2483  EnumeratedLiteralFlag flags;
2484 
2486  : value(0)
2487  , flags(0)
2488  {}
2489 
2491  EnumeratedLiteralFlag a_flags)
2492  : value(a_value)
2493  , flags(a_flags)
2494  {}
2495 
2496  bool operator==(const CommonEnumeratedLiteral& other) const
2497  {
2498  return value == other.value && flags == other.flags;
2499  }
2500 
2501  bool operator!=(const CommonEnumeratedLiteral& other) const
2502  {
2503  return !(*this == other);
2504  }
2505  };
2506 
2507  // Constant in an enumerated type
2511 
2513 
2515  const CompleteMemberDetail& a_detail)
2516  : common(a_common)
2517  , detail(a_detail)
2518  {}
2519 
2520  bool operator<(const CompleteEnumeratedLiteral& other) const
2521  {
2522  return common.value < other.common.value;
2523  }
2524 
2525  bool operator==(const CompleteEnumeratedLiteral& other) const
2526  {
2527  return common == other.common && detail == other.detail;
2528  }
2529 
2530  bool operator!=(const CompleteEnumeratedLiteral& other) const
2531  {
2532  return !(*this == other);
2533  }
2534  };
2535  // Ordered by EnumeratedLiteral.common.value
2537 
2538  // Constant in an enumerated type
2542 
2544 
2546  const MinimalMemberDetail& a_detail)
2547  : common(a_common)
2548  , detail(a_detail)
2549  {}
2550 
2551  bool operator<(const MinimalEnumeratedLiteral& other) const
2552  {
2553  return common.value < other.common.value;
2554  }
2555 
2556  bool operator==(const MinimalEnumeratedLiteral& other) const
2557  {
2558  return common == other.common && detail == other.detail;
2559  }
2560 
2561  bool operator!=(const MinimalEnumeratedLiteral& other) const
2562  {
2563  return !(*this == other);
2564  }
2565  };
2566  // Ordered by EnumeratedLiteral.common.value
2568 
2570  BitBound bit_bound;
2571 
2573  : bit_bound(0)
2574  {}
2575 
2576  explicit CommonEnumeratedHeader(BitBound a_bit_bound)
2577  : bit_bound(a_bit_bound)
2578  {}
2579 
2580  bool operator==(const CommonEnumeratedHeader& other) const
2581  {
2582  return bit_bound == other.bit_bound;
2583  }
2584 
2585  bool operator!=(const CommonEnumeratedHeader& other) const
2586  {
2587  return !(*this == other);
2588  }
2589  };
2590 
2594 
2596 
2598  const CompleteTypeDetail& a_detail)
2599  : common(a_common)
2600  , detail(a_detail)
2601  {}
2602 
2603  bool operator==(const CompleteEnumeratedHeader& other) const
2604  {
2605  return common == other.common && detail == other.detail;
2606  }
2607 
2608  bool operator!=(const CompleteEnumeratedHeader& other) const
2609  {
2610  return !(*this == other);
2611  }
2612  };
2613 
2616 
2618 
2620  : common(a_common)
2621  {}
2622 
2623  bool operator==(const MinimalEnumeratedHeader& other) const
2624  {
2625  return common == other.common;
2626  }
2627 
2628  bool operator!=(const MinimalEnumeratedHeader& other) const
2629  {
2630  return !(*this == other);
2631  }
2632  };
2633 
2634  // Enumerated type
2636  EnumTypeFlag enum_flags;
2638  CompleteEnumeratedLiteralSeq literal_seq;
2639 
2641  : enum_flags(0)
2642  {}
2643 
2644  CompleteEnumeratedType(const EnumTypeFlag& a_enum_flags,
2645  const CompleteEnumeratedHeader& a_header,
2646  const CompleteEnumeratedLiteralSeq& a_literal_seq)
2647  : enum_flags(a_enum_flags)
2648  , header(a_header)
2649  , literal_seq(a_literal_seq)
2650  {}
2651 
2652  bool operator==(const CompleteEnumeratedType& other) const
2653  {
2654  return enum_flags == other.enum_flags && header == other.header && literal_seq == other.literal_seq;
2655  }
2656 
2657  bool operator!=(const CompleteEnumeratedType& other) const
2658  {
2659  return !(*this == other);
2660  }
2661  };
2662 
2663  // Enumerated type
2665  EnumTypeFlag enum_flags;
2667  MinimalEnumeratedLiteralSeq literal_seq;
2668 
2670  : enum_flags(0)
2671  {}
2672 
2673  MinimalEnumeratedType(const EnumTypeFlag& a_enum_flags,
2674  const MinimalEnumeratedHeader& a_header,
2675  const MinimalEnumeratedLiteralSeq& a_literal_seq)
2676  : enum_flags(a_enum_flags)
2677  , header(a_header)
2678  , literal_seq(a_literal_seq)
2679  {}
2680 
2681  bool operator==(const MinimalEnumeratedType& other) const
2682  {
2683  return enum_flags == other.enum_flags && header == other.header && literal_seq == other.literal_seq;
2684  }
2685 
2686  bool operator!=(const MinimalEnumeratedType& other) const
2687  {
2688  return !(*this == other);
2689  }
2690  };
2691 
2692  // --- Bitmask: --------------------------------------------------------
2693  // Bit in a bit mask
2694  struct CommonBitflag {
2696  BitflagFlag flags;
2697 
2699  : position(0)
2700  , flags(0)
2701  {}
2702 
2703  bool operator==(const CommonBitflag& other) const
2704  {
2705  return position == other.position && flags == other.flags;
2706  }
2707 
2708  bool operator!=(const CommonBitflag& other) const
2709  {
2710  return !(*this == other);
2711  }
2712  };
2713 
2717 
2718  bool operator==(const CompleteBitflag& other) const
2719  {
2720  return common == other.common && detail == other.detail;
2721  }
2722 
2723  bool operator!=(const CompleteBitflag& other) const
2724  {
2725  return !(*this == other);
2726  }
2727  };
2728  // Ordered by Bitflag.position
2730 
2734 
2735  bool operator==(const MinimalBitflag& other) const
2736  {
2737  return common == other.common && detail == other.detail;
2738  }
2739 
2740  bool operator!=(const MinimalBitflag& other) const
2741  {
2742  return !(*this == other);
2743  }
2744  };
2745  // Ordered by Bitflag.position
2747 
2748  // This type is defined in the IDL but not used.
2749  // struct CommonBitmaskHeader {
2750  // BitBound bit_bound;
2751  // };
2752 
2754 
2756 
2758  BitmaskTypeFlag bitmask_flags; // unused
2759  CompleteBitmaskHeader header;
2760  CompleteBitflagSeq flag_seq;
2761 
2763  : bitmask_flags(0)
2764  {}
2765 
2766  bool operator==(const CompleteBitmaskType& other) const
2767  {
2768  return bitmask_flags == other.bitmask_flags && header == other.header && flag_seq == other.flag_seq;
2769  }
2770 
2771  bool operator!=(const CompleteBitmaskType& other) const
2772  {
2773  return !(*this == other);
2774  }
2775  };
2776 
2778  BitmaskTypeFlag bitmask_flags; // unused
2779  MinimalBitmaskHeader header;
2780  MinimalBitflagSeq flag_seq;
2781 
2783  : bitmask_flags(0)
2784  {}
2785 
2786  bool operator==(const MinimalBitmaskType& other) const
2787  {
2788  return bitmask_flags == other.bitmask_flags && header == other.header && flag_seq == other.flag_seq;
2789  }
2790 
2791  bool operator!=(const MinimalBitmaskType& other) const
2792  {
2793  return !(*this == other);
2794  }
2795  };
2796 
2797  // --- Bitset: ----------------------------------------------------------
2800  BitsetMemberFlag flags;
2802  TypeKind holder_type; // Must be primitive integer type
2803 
2805  : position(0)
2806  , flags(0)
2807  , bitcount(0)
2808  , holder_type(TK_NONE)
2809  {}
2810 
2811  bool operator==(const CommonBitfield& other) const
2812  {
2813  return position == other.position && flags == other.flags && bitcount == other.bitcount && holder_type == other.holder_type;
2814  }
2815 
2816  bool operator!=(const CommonBitfield& other) const
2817  {
2818  return !(*this == other);
2819  }
2820  };
2821 
2825 
2826  bool operator==(const CompleteBitfield& other) const
2827  {
2828  return common == other.common && detail == other.detail;
2829  }
2830 
2831  bool operator!=(const CompleteBitfield& other) const
2832  {
2833  return !(*this == other);
2834  }
2835  };
2836  // Ordered by Bitfield.position
2838 
2841  NameHash name_hash;
2842 
2844  {
2845  name_hash[0] = name_hash[1] = name_hash[2] = name_hash[3] = 0;
2846  }
2847 
2848  bool operator==(const MinimalBitfield& other) const
2849  {
2850  return common == other.common && name_hash_equal(name_hash, other.name_hash);
2851  }
2852 
2853  bool operator!=(const MinimalBitfield& other) const
2854  {
2855  return !(*this == other);
2856  }
2857  };
2858  // Ordered by Bitfield.position
2860 
2863 
2864  bool operator==(const CompleteBitsetHeader& other) const
2865  {
2866  return detail == other.detail;
2867  }
2868 
2869  bool operator!=(const CompleteBitsetHeader& other) const
2870  {
2871  return !(*this == other);
2872  }
2873  };
2874 
2876  // Empty. Available for future extension
2877 
2878  bool operator==(const MinimalBitsetHeader&) const
2879  {
2880  return true;
2881  }
2882 
2883  bool operator!=(const MinimalBitsetHeader& other) const
2884  {
2885  return !(*this == other);
2886  }
2887  };
2888 
2890  BitsetTypeFlag bitset_flags; // unused
2892  CompleteBitfieldSeq field_seq;
2893 
2895  : bitset_flags(0)
2896  {}
2897 
2898  bool operator==(const CompleteBitsetType& other) const
2899  {
2900  return bitset_flags == other.bitset_flags && header == other.header && field_seq == other.field_seq;
2901  }
2902 
2903  bool operator!=(const CompleteBitsetType& other) const
2904  {
2905  return !(*this == other);
2906  }
2907  };
2908 
2910  BitsetTypeFlag bitset_flags; // unused
2912  MinimalBitfieldSeq field_seq;
2913 
2915  : bitset_flags(0)
2916  {}
2917 
2918  bool operator==(const MinimalBitsetType& other) const
2919  {
2920  return bitset_flags == other.bitset_flags && header == other.header && field_seq == other.field_seq;
2921  }
2922 
2923  bool operator!=(const MinimalBitsetType& other) const
2924  {
2925  return !(*this == other);
2926  }
2927  };
2928 
2929  // --- Type Object: ---------------------------------------------------
2930  // The types associated with each case selection must have extensibility
2931  // kind APPENDABLE or MUTABLE so that they can be extended in the future
2932 
2934  // Empty. Available for future extension
2935 
2937  {
2938  return true;
2939  }
2940 
2941  bool operator!=(const CompleteExtendedType& other) const
2942  {
2943  return !(*this == other);
2944  }
2945  };
2946 
2947  // @extensibility(FINAL) @nested
2948  // union CompleteTypeObject switch (octet) {
2949  // case TK_ALIAS:
2950  // CompleteAliasType alias_type;
2951  // case TK_ANNOTATION:
2952  // CompleteAnnotationType annotation_type;
2953  // case TK_STRUCTURE:
2954  // CompleteStructType struct_type;
2955  // case TK_UNION:
2956  // CompleteUnionType union_type;
2957  // case TK_BITSET:
2958  // CompleteBitsetType bitset_type;
2959  // case TK_SEQUENCE:
2960  // CompleteSequenceType sequence_type;
2961  // case TK_ARRAY:
2962  // CompleteArrayType array_type;
2963  // case TK_MAP:
2964  // CompleteMapType map_type;
2965  // case TK_ENUM:
2966  // CompleteEnumeratedType enumerated_type;
2967  // case TK_BITMASK:
2968  // CompleteBitmaskType bitmask_type;
2969 
2970  // // =================== Future extensibility ============
2971  // default:
2972  // CompleteExtendedType extended_type;
2973  // };
2974 
2987 
2988  // =================== Future extensibility ============
2990 
2992  : kind(TK_NONE)
2993  {}
2994 
2995  explicit CompleteTypeObject(const CompleteAliasType& alias)
2996  : kind(TK_ALIAS)
2997  , alias_type(alias)
2998  {}
2999 
3000  explicit CompleteTypeObject(const CompleteAnnotationType& annotation)
3001  : kind(TK_ANNOTATION)
3002  , annotation_type(annotation)
3003  {}
3004 
3005  explicit CompleteTypeObject(const CompleteStructType& struct_)
3006  : kind(TK_STRUCTURE)
3007  , struct_type(struct_)
3008  {}
3009 
3010  explicit CompleteTypeObject(const CompleteUnionType& union_)
3011  : kind(TK_UNION)
3012  , union_type(union_)
3013  {}
3014 
3015  explicit CompleteTypeObject(const CompleteBitsetType& bitset)
3016  : kind(TK_BITSET)
3017  , bitset_type(bitset)
3018  {}
3019 
3020  explicit CompleteTypeObject(const CompleteSequenceType& sequence)
3021  : kind(TK_SEQUENCE)
3022  , sequence_type(sequence)
3023  {}
3024 
3025  explicit CompleteTypeObject(const CompleteArrayType& array)
3026  : kind(TK_ARRAY)
3027  , array_type(array)
3028  {}
3029 
3031  : kind(TK_MAP)
3032  , map_type(map)
3033  {}
3034 
3036  : kind(TK_ENUM)
3037  , enumerated_type(enum_)
3038  {}
3039 
3040  explicit CompleteTypeObject(const CompleteBitmaskType& bitmask)
3041  : kind(TK_BITMASK)
3042  , bitmask_type(bitmask)
3043  {}
3044 
3045  bool operator==(const CompleteTypeObject& other) const
3046  {
3047  if (kind != other.kind) return false;
3048 
3049  switch (kind) {
3050  case TK_NONE:
3051  return true;
3052  case TK_ALIAS:
3053  return alias_type == other.alias_type;
3054  case TK_ANNOTATION:
3055  return annotation_type == other.annotation_type;
3056  case TK_STRUCTURE:
3057  return struct_type == other.struct_type;
3058  case TK_UNION:
3059  return union_type == other.union_type;
3060  case TK_BITSET:
3061  return bitset_type == other.bitset_type;
3062  case TK_SEQUENCE:
3063  return sequence_type == other.sequence_type;
3064  case TK_ARRAY:
3065  return array_type == other.array_type;
3066  case TK_MAP:
3067  return map_type == other.map_type;
3068  case TK_ENUM:
3069  return enumerated_type == other.enumerated_type;
3070  case TK_BITMASK:
3071  return bitmask_type == other.bitmask_type;
3072  default:
3073  return extended_type == other.extended_type;
3074  }
3075  }
3076 
3077  bool operator!=(const CompleteTypeObject& other) const
3078  {
3079  return !(*this == other);
3080  }
3081  };
3082 
3084  // Empty. Available for future extension
3085 
3086  bool operator==(const MinimalExtendedType&) const
3087  {
3088  return true;
3089  }
3090 
3091  bool operator!=(const MinimalExtendedType& other) const
3092  {
3093  return !(*this == other);
3094  }
3095  };
3096 
3097  // @extensibility(FINAL) @nested
3098  // union MinimalTypeObject switch (octet) {
3099  // case TK_ALIAS:
3100  // MinimalAliasType alias_type;
3101  // case TK_ANNOTATION:
3102  // MinimalAnnotationType annotation_type;
3103  // case TK_STRUCTURE:
3104  // MinimalStructType struct_type;
3105  // case TK_UNION:
3106  // MinimalUnionType union_type;
3107  // case TK_BITSET:
3108  // MinimalBitsetType bitset_type;
3109  // case TK_SEQUENCE:
3110  // MinimalSequenceType sequence_type;
3111  // case TK_ARRAY:
3112  // MinimalArrayType array_type;
3113  // case TK_MAP:
3114  // MinimalMapType map_type;
3115  // case TK_ENUM:
3116  // MinimalEnumeratedType enumerated_type;
3117  // case TK_BITMASK:
3118  // MinimalBitmaskType bitmask_type;
3119 
3120  // // =================== Future extensibility ============
3121  // default:
3122  // MinimalExtendedType extended_type;
3123  // };
3124 
3137 
3138  // =================== Future extensibility ============
3140 
3142  : kind(TK_NONE)
3143  {}
3144 
3145  explicit MinimalTypeObject(const MinimalAliasType& alias)
3146  : kind(TK_ALIAS)
3147  , alias_type(alias)
3148  {}
3149 
3150  explicit MinimalTypeObject(const MinimalAnnotationType& annotation)
3151  : kind(TK_ANNOTATION)
3152  , annotation_type(annotation)
3153  {}
3154 
3155  explicit MinimalTypeObject(const MinimalStructType& struct_)
3156  : kind(TK_STRUCTURE)
3157  , struct_type(struct_)
3158  {}
3159 
3160  explicit MinimalTypeObject(const MinimalUnionType& union_)
3161  : kind(TK_UNION)
3162  , union_type(union_)
3163  {}
3164 
3165  explicit MinimalTypeObject(const MinimalBitsetType& bitset)
3166  : kind(TK_BITSET)
3167  , bitset_type(bitset)
3168  {}
3169 
3170  explicit MinimalTypeObject(const MinimalSequenceType& sequence)
3171  : kind(TK_SEQUENCE)
3172  , sequence_type(sequence)
3173  {}
3174 
3175  explicit MinimalTypeObject(const MinimalArrayType& array)
3176  : kind(TK_ARRAY)
3177  , array_type(array)
3178  {}
3179 
3180  explicit MinimalTypeObject(const MinimalMapType& map)
3181  : kind(TK_MAP)
3182  , map_type(map)
3183  {}
3184 
3186  : kind(TK_ENUM)
3187  , enumerated_type(enum_)
3188  {}
3189 
3190  explicit MinimalTypeObject(const MinimalBitmaskType& bitmask)
3191  : kind(TK_BITMASK)
3192  , bitmask_type(bitmask)
3193  {}
3194 
3195  bool operator==(const MinimalTypeObject& other) const
3196  {
3197  if (kind != other.kind) return false;
3198 
3199  switch (kind) {
3200  case TK_NONE:
3201  return true;
3202  case TK_ALIAS:
3203  return alias_type == other.alias_type;
3204  case TK_ANNOTATION:
3205  return annotation_type == other.annotation_type;
3206  case TK_STRUCTURE:
3207  return struct_type == other.struct_type;
3208  case TK_UNION:
3209  return union_type == other.union_type;
3210  case TK_BITSET:
3211  return bitset_type == other.bitset_type;
3212  case TK_SEQUENCE:
3213  return sequence_type == other.sequence_type;
3214  case TK_ARRAY:
3215  return array_type == other.array_type;
3216  case TK_MAP:
3217  return map_type == other.map_type;
3218  case TK_ENUM:
3219  return enumerated_type == other.enumerated_type;
3220  case TK_BITMASK:
3221  return bitmask_type == other.bitmask_type;
3222  default:
3223  return extended_type == other.extended_type;
3224  }
3225  }
3226 
3227  bool operator!=(const MinimalTypeObject& other) const
3228  {
3229  return !(*this == other);
3230  }
3231  };
3232 
3233  // @extensibility(APPENDABLE) @nested
3234  // union TypeObject switch (octet) { // EquivalenceKind
3235  // case EK_COMPLETE:
3236  // CompleteTypeObject complete;
3237  // case EK_MINIMAL:
3238  // MinimalTypeObject minimal;
3239  // };
3240 
3241  struct TypeObject {
3245 
3247  : kind(0)
3248  {}
3249 
3250  explicit TypeObject(const CompleteTypeObject& a_complete)
3251  : kind(EK_COMPLETE)
3252  , complete(a_complete)
3253  {}
3254 
3255  explicit TypeObject(const MinimalTypeObject& a_minimal)
3256  : kind(EK_MINIMAL)
3257  , minimal(a_minimal)
3258  {}
3259 
3260  bool operator==(const TypeObject& other) const
3261  {
3262  if (kind != other.kind) return false;
3263 
3264  if (kind == EK_COMPLETE) {
3265  return complete == other.complete;
3266  }
3267 
3268  return minimal == other.minimal;
3269  }
3270 
3271  bool operator!=(const TypeObject& other) const
3272  {
3273  return !(*this == other);
3274  }
3275  };
3276 
3278 
3279  // Set of TypeObjects representing a strong component: Equivalence class
3280  // for the Strong Connectivity relationship (mutual reachability between
3281  // types).
3282  // Ordered by fully qualified typename lexicographic order
3283  typedef TypeObjectSeq StronglyConnectedComponent;
3284 
3288 
3290 
3292  : type_identifier(ti)
3293  , type_object(to)
3294  {}
3295 
3296  bool operator==(const TypeIdentifierTypeObjectPair& other) const
3297  {
3298  return type_identifier == other.type_identifier && type_object == other.type_object;
3299  }
3300 
3301  bool operator!=(const TypeIdentifierTypeObjectPair& other) const
3302  {
3303  return !(*this == other);
3304  }
3305  };
3307 
3311 
3313 
3315  : type_identifier1(t1)
3316  , type_identifier2(t2)
3317  {}
3318 
3319  bool operator==(const TypeIdentifierPair& other) const
3320  {
3321  return type_identifier1 == other.type_identifier1 && type_identifier2 == other.type_identifier2;
3322  }
3323 
3324  bool operator!=(const TypeIdentifierPair& other) const
3325  {
3326  return !(*this == other);
3327  }
3328  };
3330 
3334 
3336  : typeobject_serialized_size()
3337  {}
3338 
3340  : type_id(ti)
3341  , typeobject_serialized_size(to_size)
3342  {}
3343 
3344  bool operator==(const TypeIdentifierWithSize& other) const
3345  {
3346  return type_id == other.type_id && typeobject_serialized_size == other.typeobject_serialized_size;
3347  }
3348 
3349  bool operator!=(const TypeIdentifierWithSize& other) const
3350  {
3351  return !(*this == other);
3352  }
3353  };
3355 
3358  // The total additional types related to minimal_type
3360  TypeIdentifierWithSizeSeq dependent_typeids;
3361 
3363  : dependent_typeid_count(0)
3364  {}
3365  };
3366 
3368 
3369  // This appears in the builtin DDS topics PublicationBuiltinTopicData
3370  // and SubscriptionBuiltinTopicData
3371 
3375  };
3376 
3378  TypeIdentifier makeTypeIdentifier(const TypeObject& type_object,
3379  const DCPS::Encoding* encoding_option = 0);
3380 
3381  template <typename T>
3382  void serialize_type_info(const TypeInformation& type_info, T& seq,
3383  const DCPS::Encoding* encoding_option = 0)
3384  {
3385  const DCPS::Encoding& encoding = encoding_option ? *encoding_option : get_typeobject_encoding();
3386  const size_t sz = DCPS::serialized_size(encoding, type_info);
3387  seq.length(static_cast<unsigned>(sz));
3388  DCPS::MessageBlockHelper<T> helper(seq);
3389  DCPS::Serializer serializer(helper, encoding);
3390  if (!(serializer << type_info)) {
3391  ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: serialize_type_info ")
3392  ACE_TEXT("serialization of type information failed.\n")));
3393  }
3394  }
3395 
3396  template <typename T>
3397  bool deserialize_type_info(TypeInformation& type_info, const T& seq)
3398  {
3399  DCPS::MessageBlockHelper<T> helper(seq);
3400  DCPS::Serializer serializer(helper, XTypes::get_typeobject_encoding());
3401  if (!(serializer >> type_info)) {
3402  ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: deserialize_type_info ")
3403  ACE_TEXT("deserialization of type information failed.\n")));
3404  return false;
3405  }
3406  return true;
3407  }
3408 
3411 
3413  void hash_member_name(NameHash& name_hash, const OPENDDS_STRING& name);
3414 
3416  bool is_fully_descriptive(const TypeIdentifier& ti);
3417 
3419  bool is_plain_collection(const TypeIdentifier& ti);
3420 
3422  bool has_type_object(const TypeIdentifier& ti);
3423 
3424  typedef OPENDDS_MAP(TypeIdentifier, TypeObject) TypeMap;
3425 
3427  TypeMap type_map_;
3428 
3430  {
3431  type_map_[ti] = to;
3432  return *this;
3433  }
3434 
3435  operator TypeMap&() { return type_map_; }
3436  };
3437 
3438  void compute_dependencies(const TypeMap& type_map,
3439  const TypeIdentifier& type_identifier,
3440  OPENDDS_SET(TypeIdentifier)& dependencies);
3441 
3443  const char* typekind_to_string(TypeKind tk);
3444 
3446  bool is_primitive(TypeKind tk);
3447 
3449  bool is_scalar(TypeKind tk);
3450 
3452  bool is_basic(TypeKind tk);
3453 
3455  bool is_complex(TypeKind tk);
3456 
3458  bool is_sequence_like(TypeKind tk);
3459 } // namespace XTypes
3460 
3461 namespace DCPS {
3462 
3463 template<typename T>
3465 
3466 template<typename T>
3467 const XTypes::TypeMap& getMinimalTypeMap();
3468 
3469 template<typename T>
3471 
3472 template<typename T>
3473 const XTypes::TypeMap& getCompleteTypeMap();
3474 
3475 template<typename T>
3476 void serialized_size(const Encoding& encoding, size_t& size,
3477  const XTypes::Optional<T>& opt)
3478 {
3479  size += DCPS::boolean_cdr_size;
3480  if (opt) {
3481  serialized_size(encoding, size, opt.value());
3482  }
3483 }
3484 
3485 template<typename T>
3486 bool operator<<(Serializer& strm, const XTypes::Optional<T>& opt)
3487 {
3488  if (!(strm << ACE_OutputCDR::from_boolean(opt.has_value()))) {
3489  return false;
3490  }
3491  return !opt.has_value() || strm << opt.value();
3492 }
3493 
3494 template<typename T>
3496 {
3497  bool present;
3498  if (!(strm >> ACE_InputCDR::to_boolean(present))) {
3499  return false;
3500  }
3501  if (present) {
3502  T value;
3503  const bool status = strm >> value;
3504  opt = XTypes::Optional<T>(value);
3505  return status;
3506  }
3507 
3508  return true;
3509 }
3510 
3511 
3512 // XCDR2 encoding rule 12 - Sequences not "of primitive element type"
3513 
3514 template<typename T>
3515 void serialized_size(const Encoding& encoding, size_t& size,
3516  const XTypes::Sequence<T>& seq)
3517 {
3518  if (!encoding.skip_sequence_dheader()) {
3519  serialized_size_delimiter(encoding, size);
3520  }
3521  primitive_serialized_size_ulong(encoding, size);
3522  for (ACE_CDR::ULong i = 0; i < seq.length(); ++i) {
3523  serialized_size(encoding, size, seq[i]);
3524  }
3525 }
3526 
3527 template<typename T>
3528 void serialized_size(const Encoding& encoding, size_t& size,
3529  const NestedKeyOnly<const XTypes::Sequence<T> >& seq)
3530 {
3531  if (!encoding.skip_sequence_dheader()) {
3532  serialized_size_delimiter(encoding, size);
3533  }
3534  primitive_serialized_size_ulong(encoding, size);
3535  for (ACE_CDR::ULong i = 0; i < seq.value.length(); ++i) {
3536  serialized_size(encoding, size, NestedKeyOnly<const T>(seq.value[i]));
3537  }
3538 }
3539 
3540 template<typename T>
3541 bool operator<<(Serializer& strm, const XTypes::Sequence<T>& seq)
3542 {
3543  if (!strm.encoding().skip_sequence_dheader()) {
3544  size_t total_size = 0;
3545  serialized_size(strm.encoding(), total_size, seq);
3546  if (!strm.write_delimiter(total_size)) {
3547  return false;
3548  }
3549  }
3550  const ACE_CDR::ULong length = seq.length();
3551  if (!(strm << length)) {
3552  return false;
3553  }
3554  for (ACE_CDR::ULong i = 0; i < length; ++i) {
3555  if (!(strm << seq[i])) {
3556  return false;
3557  }
3558  }
3559  return true;
3560 }
3561 
3562 template<typename T>
3563 bool operator<<(Serializer& strm, const NestedKeyOnly<const XTypes::Sequence<T> >& seq)
3564 {
3565  if (!strm.encoding().skip_sequence_dheader()) {
3566  size_t total_size = 0;
3567  serialized_size(strm.encoding(), total_size, seq);
3568  if (!strm.write_delimiter(total_size)) {
3569  return false;
3570  }
3571  }
3572  const ACE_CDR::ULong length = seq.value.length();
3573  if (!(strm << length)) {
3574  return false;
3575  }
3576  for (ACE_CDR::ULong i = 0; i < length; ++i) {
3577  if (!(strm << NestedKeyOnly<const T>(seq.value[i]))) {
3578  return false;
3579  }
3580  }
3581  return true;
3582 }
3583 
3584 template<typename T>
3586 {
3587  size_t total_size = 0;
3588  if (!strm.read_delimiter(total_size)) {
3589  return false;
3590  }
3591 
3592  // special cases for compatibility with older versions that encoded this
3593  // sequence incorrectly - if the DHeader was read as a 0, it's an empty
3594  // sequence although it should have been encoded as DHeader (4) + Length (0)
3595  if (total_size == 0) {
3596  seq.length(0);
3597  return true;
3598  }
3599 
3600  if (total_size < 4) {
3601  return false;
3602  }
3603 
3604  const size_t end_of_seq = strm.rpos() + total_size;
3605  ACE_CDR::ULong length;
3606  if (!(strm >> length)) {
3607  return false;
3608  }
3609 
3610  if (length > strm.length()) {
3611  // if encoded incorrectly, the first 4 bytes of the elements were read
3612  // as if they were the length - this may end up being larger than the
3613  // number of bytes remaining in the Serializer
3614  return false;
3615  }
3616 
3617  seq.length(length);
3618  for (ACE_CDR::ULong i = 0; i < length; ++i) {
3619  if (!(strm >> seq[i])) {
3620  return false;
3621  }
3622  }
3623  return strm.skip(end_of_seq - strm.rpos());
3624 }
3625 
3626 template<typename T>
3628 {
3629  size_t total_size = 0;
3630  if (!strm.read_delimiter(total_size)) {
3631  return false;
3632  }
3633 
3634  // special cases for compatibility with older versions that encoded this
3635  // sequence incorrectly - if the DHeader was read as a 0, it's an empty
3636  // sequence although it should have been encoded as DHeader (4) + Length (0)
3637  if (total_size == 0) {
3638  seq.value.length(0);
3639  return true;
3640  }
3641 
3642  if (total_size < 4) {
3643  return false;
3644  }
3645 
3646  const size_t end_of_seq = strm.rpos() + total_size;
3647  ACE_CDR::ULong length;
3648  if (!(strm >> length)) {
3649  return false;
3650  }
3651 
3652  if (length > strm.length()) {
3653  // if encoded incorrectly, the first 4 bytes of the elements were read
3654  // as if they were the length - this may end up being larger than the
3655  // number of bytes remaining in the Serializer
3656  return false;
3657  }
3658 
3659  seq.value.length(length);
3660  for (ACE_CDR::ULong i = 0; i < length; ++i) {
3661  NestedKeyOnly<T> tmp(seq.value[i]);
3662  if (!(strm >> tmp)) {
3663  return false;
3664  }
3665  }
3666  return strm.skip(end_of_seq - strm.rpos());
3667 }
3668 
3669 template <typename T>
3671 {
3672  // No-op;
3673  return true;
3674 }
3675 
3676 // non-template overloads for sequences of basic types:
3677 // XCDR2 encoding rule 11 - Sequences of primitive element type
3678 
3680 void serialized_size(const Encoding& encoding, size_t& size,
3681  const XTypes::LBoundSeq& seq);
3683 bool operator<<(Serializer& strm, const XTypes::LBoundSeq& seq);
3685 bool operator>>(Serializer& strm, XTypes::LBoundSeq& seq);
3686 
3688 void serialized_size(const Encoding& encoding, size_t& size,
3689  const XTypes::SBoundSeq& seq);
3691 bool operator<<(Serializer& strm, const XTypes::SBoundSeq& seq);
3693 bool operator>>(Serializer& strm, XTypes::SBoundSeq& seq);
3694 
3696 void serialized_size(const Encoding& encoding, size_t& size,
3697  const XTypes::UnionCaseLabelSeq& seq);
3699 bool operator<<(Serializer& strm, const XTypes::UnionCaseLabelSeq& seq);
3702 
3703 
3704 inline void serialized_size(const Encoding&, size_t&, const XTypes::MinimalTypeDetail&)
3705 {}
3706 inline bool operator<<(Serializer&, const XTypes::MinimalTypeDetail&) { return true; }
3707 inline bool operator>>(Serializer&, XTypes::MinimalTypeDetail&) { return true; }
3708 
3709 void serialized_size(const Encoding& encoding, size_t& size,
3711 bool operator<<(Serializer& strm,
3713 bool operator>>(Serializer& strm,
3715 
3716 void serialized_size(const Encoding& encoding, size_t& size,
3717  const XTypes::NameHash_forany& arr);
3718 bool operator<<(Serializer& ser, const XTypes::NameHash_forany& arr);
3720 
3721 void serialized_size(const Encoding& encoding, size_t& size,
3722  const XTypes::EquivalenceHash_forany& arr);
3725 
3726 void serialized_size(const Encoding& encoding, size_t& size,
3727  const XTypes::CompleteTypeDetail& stru);
3728 bool operator<<(Serializer& ser, const XTypes::CompleteTypeDetail& stru);
3730 
3731 void serialized_size(const Encoding& encoding, size_t& size,
3732  const XTypes::CompleteStructHeader& stru);
3733 bool operator<<(Serializer& ser, const XTypes::CompleteStructHeader& stru);
3735 
3736 void serialized_size(const Encoding& encoding, size_t& size,
3737  const XTypes::MinimalStructHeader& stru);
3738 bool operator<<(Serializer& ser, const XTypes::MinimalStructHeader& stru);
3740 
3741 void serialized_size(const Encoding& encoding, size_t& size,
3742  const XTypes::CompleteStructType& stru);
3743 bool operator<<(Serializer& ser, const XTypes::CompleteStructType& stru);
3745 
3746 void serialized_size(const Encoding& encoding, size_t& size,
3747  const XTypes::MinimalStructType& stru);
3748 bool operator<<(Serializer& ser, const XTypes::MinimalStructType& stru);
3750 
3751 void serialized_size(const Encoding& encoding, size_t& size,
3752  const XTypes::CompleteUnionType& stru);
3753 bool operator<<(Serializer& ser, const XTypes::CompleteUnionType& stru);
3755 
3756 void serialized_size(const Encoding& encoding, size_t& size,
3757  const XTypes::MinimalUnionType& stru);
3758 bool operator<<(Serializer& ser, const XTypes::MinimalUnionType& stru);
3760 
3761 void serialized_size(const Encoding& encoding, size_t& size,
3762  const XTypes::CompleteAnnotationType& stru);
3763 bool operator<<(Serializer& ser, const XTypes::CompleteAnnotationType& stru);
3765 
3766 void serialized_size(const Encoding& encoding, size_t& size,
3767  const XTypes::MinimalAnnotationType& stru);
3768 bool operator>>(Serializer& ser, const XTypes::MinimalAnnotationType& stru);
3770 
3771 void serialized_size(const Encoding& encoding, size_t& size,
3772  const XTypes::CompleteAliasType& stru);
3773 bool operator>>(Serializer& ser, const XTypes::CompleteAliasType& stru);
3775 
3776 void serialized_size(const Encoding& encoding, size_t& size,
3777  const XTypes::MinimalAliasType& stru);
3778 bool operator>>(Serializer& ser, const XTypes::MinimalAliasType& stru);
3780 
3781 void serialized_size(const Encoding& encoding, size_t& size,
3782  const XTypes::CompleteSequenceType& stru);
3783 bool operator<<(Serializer& ser, const XTypes::CompleteSequenceType& stru);
3785 
3786 void serialized_size(const Encoding& encoding, size_t& size,
3787  const XTypes::MinimalSequenceType& stru);
3788 bool operator<<(Serializer& ser, const XTypes::MinimalSequenceType& stru);
3790 
3791 void serialized_size(const Encoding& encoding, size_t& size,
3792  const XTypes::CompleteArrayType& stru);
3793 bool operator<<(Serializer& ser, const XTypes::CompleteArrayType& stru);
3795 
3796 void serialized_size(const Encoding& encoding, size_t& size,
3797  const XTypes::MinimalArrayType& stru);
3798 bool operator<<(Serializer& ser, const XTypes::MinimalArrayType& stru);
3800 
3801 void serialized_size(const Encoding& encoding, size_t& size,
3802  const XTypes::CompleteMapType& stru);
3803 bool operator<<(Serializer& ser, const XTypes::CompleteMapType& stru);
3805 
3806 void serialized_size(const Encoding& encoding, size_t& size,
3807  const XTypes::MinimalMapType& stru);
3808 bool operator<<(Serializer& ser, const XTypes::MinimalMapType& stru);
3809 bool operator>>(Serializer& ser, XTypes::MinimalMapType& stru);
3810 
3811 void serialized_size(const Encoding& encoding, size_t& size,
3812  const XTypes::CompleteEnumeratedHeader& stru);
3815 
3816 void serialized_size(const Encoding& encoding, size_t& size,
3817  const XTypes::MinimalEnumeratedHeader& stru);
3818 bool operator<<(Serializer& ser, const XTypes::MinimalEnumeratedHeader& stru);
3820 
3821 void serialized_size(const Encoding& encoding, size_t& size,
3822  const XTypes::CompleteEnumeratedType& stru);
3823 bool operator<<(Serializer& ser, const XTypes::CompleteEnumeratedType& stru);
3825 
3826 void serialized_size(const Encoding& encoding, size_t& size,
3827  const XTypes::MinimalEnumeratedType& stru);
3828 bool operator<<(Serializer& ser, const XTypes::MinimalEnumeratedType& stru);
3830 
3831 void serialized_size(const Encoding& encoding, size_t& size,
3832  const XTypes::MinimalBitmaskType& stru);
3833 bool operator<<(Serializer& ser, const XTypes::MinimalBitmaskType& stru);
3835 
3836 void serialized_size(const Encoding& encoding, size_t& size,
3837  const XTypes::CompleteBitmaskType& stru);
3838 bool operator<<(Serializer& ser, const XTypes::CompleteBitmaskType& stru);
3840 
3841 void serialized_size(const Encoding& encoding, size_t& size,
3842  const XTypes::CompleteBitsetType& stru);
3843 bool operator<<(Serializer& ser, const XTypes::CompleteBitsetType& stru);
3845 
3846 void serialized_size(const Encoding& encoding, size_t& size,
3847  const XTypes::MinimalBitsetType& stru);
3848 bool operator<<(Serializer& ser, const XTypes::MinimalBitsetType& stru);
3850 
3851 void serialized_size(const Encoding& encoding, size_t& size,
3852  const XTypes::CompleteExtendedType& stru);
3853 bool operator<<(Serializer& strm, const XTypes::CompleteExtendedType& stru);
3855 
3856 void serialized_size(const Encoding& encoding, size_t& size,
3857  const XTypes::CompleteTypeObject& type_object);
3858 bool operator<<(Serializer& ser, const XTypes::CompleteTypeObject& type_object);
3859 bool operator>>(Serializer& ser, XTypes::CompleteTypeObject& type_object);
3860 
3861 void serialized_size(const Encoding& encoding, size_t& size,
3862  const XTypes::MinimalExtendedType& stru);
3863 bool operator<<(Serializer& strm, const XTypes::MinimalExtendedType& stru);
3865 
3866 void serialized_size(const Encoding& encoding, size_t& size,
3867  const XTypes::MinimalTypeObject& type_object);
3868 bool operator<<(Serializer& ser, const XTypes::MinimalTypeObject& type_object);
3869 bool operator>>(Serializer& ser, XTypes::MinimalTypeObject& type_object);
3870 
3872 void serialized_size(const Encoding& encoding, size_t& size,
3873  const XTypes::TypeObject& type_object);
3874 
3876 bool operator<<(Serializer& ser, const XTypes::TypeObject& type_object);
3877 
3879 bool operator>>(Serializer& ser, XTypes::TypeObject& type_object);
3880 
3882 void serialized_size(const Encoding& encoding, size_t& size,
3883  const XTypes::TypeInformation& type_info);
3884 
3886 void serialized_size(const Encoding& encoding, size_t& size,
3887  const XTypes::TypeIdentifier& stru);
3889 void serialized_size(const Encoding& encoding, size_t& size,
3892 bool operator<<(Serializer& ser, const XTypes::TypeIdentifier& stru);
3894 bool operator<<(Serializer& ser, const NestedKeyOnly<const XTypes::TypeIdentifier>& stru);
3896 bool operator>>(Serializer& ser, XTypes::TypeIdentifier& stru);
3899 
3901 void serialized_size(const Encoding& encoding, size_t& size,
3902  const XTypes::TypeIdentifierWithSize& stru);
3904 void serialized_size(const Encoding& encoding, size_t& size,
3907 bool operator<<(Serializer& ser, const XTypes::TypeIdentifierWithSize& stru);
3909 bool operator<<(Serializer& ser, const NestedKeyOnly<const XTypes::TypeIdentifierWithSize>& stru);
3914 
3915 void serialized_size(const Encoding& encoding, size_t& size,
3919 
3920 void serialized_size(const Encoding& encoding, size_t& size,
3921  const XTypes::AppliedAnnotation& stru);
3922 bool operator<<(Serializer& ser, const XTypes::AppliedAnnotation& stru);
3924 
3925 void serialized_size(const Encoding& encoding, size_t& size,
3929 
3930 void serialized_size(const Encoding& encoding, size_t& size,
3931  const XTypes::CompleteAliasBody& stru);
3932 bool operator<<(Serializer& ser, const XTypes::CompleteAliasBody& stru);
3934 
3935 void serialized_size(const Encoding& encoding, size_t& size,
3936  const XTypes::CompleteAliasHeader& stru);
3937 bool operator<<(Serializer& ser, const XTypes::CompleteAliasHeader& stru);
3939 
3940 void serialized_size(const Encoding& encoding, size_t& size,
3941  const XTypes::CompleteAnnotationHeader& stru);
3944 
3945 void serialized_size(const Encoding& encoding, size_t& size,
3949 
3950 void serialized_size(const Encoding& encoding, size_t& size,
3951  const XTypes::CompleteArrayHeader& stru);
3952 bool operator<<(Serializer& ser, const XTypes::CompleteArrayHeader& stru);
3954 
3955 void serialized_size(const Encoding& encoding, size_t& size,
3956  const XTypes::CompleteBitfield& stru);
3957 bool operator<<(Serializer& ser, const XTypes::CompleteBitfield& stru);
3959 
3960 void serialized_size(const Encoding& encoding, size_t& size,
3961  const XTypes::CompleteBitflag& stru);
3962 bool operator<<(Serializer& ser, const XTypes::CompleteBitflag& stru);
3964 
3965 void serialized_size(const Encoding& encoding, size_t& size,
3966  const XTypes::CompleteBitsetHeader& stru);
3967 bool operator<<(Serializer& ser, const XTypes::CompleteBitsetHeader& stru);
3969 
3970 void serialized_size(const Encoding& encoding, size_t& size,
3971  const XTypes::CompleteCollectionElement& stru);
3974 
3975 void serialized_size(const Encoding& encoding, size_t& size,
3976  const XTypes::CompleteCollectionHeader& stru);
3979 
3980 void serialized_size(const Encoding& encoding, size_t& size,
3984 
3985 void serialized_size(const Encoding& encoding, size_t& size,
3986  const XTypes::CompleteEnumeratedLiteral& stru);
3989 
3990 void serialized_size(const Encoding& encoding, size_t& size,
3991  const XTypes::CompleteStructMember& stru);
3992 bool operator<<(Serializer& ser, const XTypes::CompleteStructMember& stru);
3994 
3995 void serialized_size(const Encoding& encoding, size_t& size,
3996  const XTypes::CompleteUnionHeader& stru);
3997 bool operator<<(Serializer& ser, const XTypes::CompleteUnionHeader& stru);
3999 
4000 void serialized_size(const Encoding& encoding, size_t& size,
4001  const XTypes::CompleteUnionMember& stru);
4002 bool operator<<(Serializer& ser, const XTypes::CompleteUnionMember& stru);
4004 
4005 void serialized_size(const Encoding& encoding, size_t& size,
4006  const XTypes::MinimalAliasBody& stru);
4007 bool operator<<(Serializer& ser, const XTypes::MinimalAliasBody& stru);
4009 
4010 void serialized_size(const Encoding& encoding, size_t& size,
4011  const XTypes::MinimalAliasHeader& stru);
4012 bool operator<<(Serializer& ser, const XTypes::MinimalAliasHeader& stru);
4014 
4015 void serialized_size(const Encoding& encoding, size_t& size,
4016  const XTypes::MinimalAnnotationHeader& stru);
4017 bool operator<<(Serializer& ser, const XTypes::MinimalAnnotationHeader& stru);
4019 
4020 void serialized_size(const Encoding& encoding, size_t& size,
4024 
4025 void serialized_size(const Encoding& encoding, size_t& size,
4026  const XTypes::MinimalArrayHeader& stru);
4027 bool operator<<(Serializer& ser, const XTypes::MinimalArrayHeader& stru);
4029 
4030 void serialized_size(const Encoding& encoding, size_t& size,
4031  const XTypes::MinimalBitfield& stru);
4032 bool operator<<(Serializer& ser, const XTypes::MinimalBitfield& stru);
4034 
4035 void serialized_size(const Encoding& encoding, size_t& size,
4036  const XTypes::MinimalBitflag& stru);
4037 bool operator<<(Serializer& ser, const XTypes::MinimalBitflag& stru);
4038 bool operator>>(Serializer& ser, XTypes::MinimalBitflag& stru);
4039 
4040 void serialized_size(const Encoding& encoding, size_t& size,
4041  const XTypes::MinimalBitsetHeader& stru);
4042 bool operator<<(Serializer& ser, const XTypes::MinimalBitsetHeader& stru);
4044 
4045 void serialized_size(const Encoding& encoding, size_t& size,
4046  const XTypes::MinimalCollectionElement& stru);
4049 
4050 void serialized_size(const Encoding& encoding, size_t& size,
4051  const XTypes::MinimalCollectionHeader& stru);
4052 bool operator<<(Serializer& ser, const XTypes::MinimalCollectionHeader& stru);
4054 
4055 void serialized_size(const Encoding& encoding, size_t& size,
4059 
4060 void serialized_size(const Encoding& encoding, size_t& size,
4061  const XTypes::MinimalEnumeratedLiteral& stru);
4064 
4065 void serialized_size(const Encoding& encoding, size_t& size,
4066  const XTypes::MinimalStructMember& stru);
4067 bool operator<<(Serializer& ser, const XTypes::MinimalStructMember& stru);
4069 
4070 void serialized_size(const Encoding& encoding, size_t& size,
4071  const XTypes::MinimalUnionHeader& stru);
4072 bool operator<<(Serializer& ser, const XTypes::MinimalUnionHeader& stru);
4074 
4075 void serialized_size(const Encoding& encoding, size_t& size,
4076  const XTypes::MinimalUnionMember& stru);
4077 bool operator<<(Serializer& ser, const XTypes::MinimalUnionMember& stru);
4079 
4080 void serialized_size(const Encoding& encoding, size_t& size,
4081  const XTypes::AnnotationParameterValue& stru);
4082 bool operator<<(Serializer& strm, const XTypes::AnnotationParameterValue& stru);
4084 
4085 void serialized_size(const Encoding& encoding, size_t& size,
4089 
4090 void serialized_size(const Encoding& encoding, size_t& size,
4094 
4095 void serialized_size(const Encoding& encoding, size_t& size,
4096  const XTypes::AppliedVerbatimAnnotation& stru);
4099 
4100 void serialized_size(const Encoding& encoding, size_t& size,
4101  const XTypes::CommonAliasBody& stru);
4102 bool operator<<(Serializer& strm, const XTypes::CommonAliasBody& stru);
4103 bool operator>>(Serializer& strm, XTypes::CommonAliasBody& stru);
4104 
4105 void serialized_size(const Encoding& encoding, size_t& size,
4106  const XTypes::CommonAnnotationParameter& stru);
4109 
4110 void serialized_size(const Encoding& encoding, size_t& size,
4111  const XTypes::CommonArrayHeader& stru);
4112 bool operator<<(Serializer& strm, const XTypes::CommonArrayHeader& stru);
4114 
4115 void serialized_size(const Encoding& encoding, size_t& size,
4116  const XTypes::CommonBitfield& stru);
4117 bool operator<<(Serializer& strm, const XTypes::CommonBitfield& stru);
4118 bool operator>>(Serializer& strm, XTypes::CommonBitfield& stru);
4119 
4120 void serialized_size(const Encoding& encoding, size_t& size,
4121  const XTypes::CommonBitflag& stru);
4122 bool operator<<(Serializer& strm, const XTypes::CommonBitflag& stru);
4123 bool operator>>(Serializer& strm, XTypes::CommonBitflag& stru);
4124 
4125 void serialized_size(const Encoding& encoding, size_t& size,
4126  const XTypes::CommonCollectionElement& stru);
4127 bool operator<<(Serializer& strm, const XTypes::CommonCollectionElement& stru);
4129 
4130 void serialized_size(const Encoding& encoding, size_t& size,
4131  const XTypes::CommonCollectionHeader& stru);
4132 bool operator<<(Serializer& strm, const XTypes::CommonCollectionHeader& stru);
4134 
4135 void serialized_size(const Encoding& encoding, size_t& size,
4136  const XTypes::CommonDiscriminatorMember& stru);
4139 
4140 void serialized_size(const Encoding& encoding, size_t& size,
4141  const XTypes::CommonEnumeratedHeader& stru);
4142 bool operator<<(Serializer& strm, const XTypes::CommonEnumeratedHeader& stru);
4144 
4145 void serialized_size(const Encoding& encoding, size_t& size,
4146  const XTypes::CommonEnumeratedLiteral& stru);
4147 bool operator<<(Serializer& strm, const XTypes::CommonEnumeratedLiteral& stru);
4149 
4150 void serialized_size(const Encoding& encoding, size_t& size,
4151  const XTypes::CommonStructMember& stru);
4152 bool operator<<(Serializer& strm, const XTypes::CommonStructMember& stru);
4154 
4155 void serialized_size(const Encoding& encoding, size_t& size,
4156  const XTypes::CommonUnionMember& stru);
4157 bool operator<<(Serializer& strm, const XTypes::CommonUnionMember& stru);
4159 
4160 void serialized_size(const Encoding& encoding, size_t& size,
4161  const XTypes::CompleteElementDetail& stru);
4162 bool operator<<(Serializer& strm, const XTypes::CompleteElementDetail& stru);
4164 
4165 void serialized_size(const Encoding& encoding, size_t& size,
4166  const XTypes::CompleteMemberDetail& stru);
4167 bool operator<<(Serializer& strm, const XTypes::CompleteMemberDetail& stru);
4169 
4170 void serialized_size(const Encoding& encoding, size_t& size,
4171  const XTypes::MinimalMemberDetail& stru);
4172 bool operator<<(Serializer& strm, const XTypes::MinimalMemberDetail& stru);
4174 
4175 void serialized_size(const Encoding& encoding, size_t& size,
4176  const XTypes::ExtendedTypeDefn& stru);
4177 bool operator<<(Serializer& strm, const XTypes::ExtendedTypeDefn& stru);
4179 
4180 void serialized_size(const Encoding& encoding, size_t& size,
4181  const XTypes::PlainArrayLElemDefn& stru);
4182 bool operator<<(Serializer& strm, const XTypes::PlainArrayLElemDefn& stru);
4184 
4185 void serialized_size(const Encoding& encoding, size_t& size,
4186  const XTypes::PlainArraySElemDefn& stru);
4187 bool operator<<(Serializer& strm, const XTypes::PlainArraySElemDefn& stru);
4189 
4190 void serialized_size(const Encoding& encoding, size_t& size,
4191  const XTypes::PlainMapLTypeDefn& stru);
4192 bool operator<<(Serializer& strm, const XTypes::PlainMapLTypeDefn& stru);
4194 
4195 void serialized_size(const Encoding& encoding, size_t& size,
4196  const XTypes::PlainMapSTypeDefn& stru);
4197 bool operator<<(Serializer& strm, const XTypes::PlainMapSTypeDefn& stru);
4199 
4200 void serialized_size(const Encoding& encoding, size_t& size,
4201  const XTypes::PlainSequenceLElemDefn& stru);
4202 bool operator<<(Serializer& strm, const XTypes::PlainSequenceLElemDefn& stru);
4204 
4205 void serialized_size(const Encoding& encoding, size_t& size,
4206  const XTypes::PlainSequenceSElemDefn& stru);
4207 bool operator<<(Serializer& strm, const XTypes::PlainSequenceSElemDefn& stru);
4209 
4210 void serialized_size(const Encoding& encoding, size_t& size,
4211  const XTypes::StringLTypeDefn& stru);
4212 bool operator<<(Serializer& strm, const XTypes::StringLTypeDefn& stru);
4213 bool operator>>(Serializer& strm, XTypes::StringLTypeDefn& stru);
4214 
4215 void serialized_size(const Encoding& encoding, size_t& size,
4216  const XTypes::StringSTypeDefn& stru);
4217 bool operator<<(Serializer& strm, const XTypes::StringSTypeDefn& stru);
4218 bool operator>>(Serializer& strm, XTypes::StringSTypeDefn& stru);
4219 
4220 void serialized_size(const Encoding& encoding, size_t& size,
4224 
4225 void serialized_size(const Encoding& encoding, size_t& size,
4226  const XTypes::PlainCollectionHeader& stru);
4227 bool operator<<(Serializer& strm, const XTypes::PlainCollectionHeader& stru);
4229 
4230 void serialized_size(const Encoding& encoding, size_t& size,
4231  const XTypes::TypeObjectHashId& stru);
4232 bool operator<<(Serializer& strm, const XTypes::TypeObjectHashId& stru);
4234 
4236 void serialized_size(const Encoding& encoding, size_t& size,
4239 void serialized_size(const Encoding& encoding, size_t& size,
4244 bool operator<<(Serializer& ser, const NestedKeyOnly<const XTypes::TypeIdentifierTypeObjectPair>& stru);
4249 
4251 void serialized_size(const Encoding& encoding, size_t& size,
4252  const XTypes::TypeIdentifierPair& stru);
4254 void serialized_size(const Encoding& encoding, size_t& size,
4257 bool operator<<(Serializer& strm, const XTypes::TypeIdentifierPair& stru);
4259 bool operator<<(Serializer& ser, const NestedKeyOnly<const XTypes::TypeIdentifierPair>& stru);
4264 
4266 bool to_type_object(const unsigned char* buffer, size_t size, XTypes::TypeObject& to);
4267 
4268 } // namespace DCPS
4269 } // namespace OpenDDS
4270 
4272 
4273 #endif /* OPENDDS_DCPS_XTYPES_TYPE_OBJECT_H */
ACE_Byte Octet
bool read_delimiter(size_t &size)
Definition: Serializer.inl:912
CompleteAnnotationParameterSeq member_seq
Definition: TypeObject.h:1898
const size_t boolean_cdr_size
Definition: Serializer.h:89
MinimalTypeObject(const MinimalArrayType &array)
Definition: TypeObject.h:3175
MinimalTypeObject(const MinimalUnionType &union_)
Definition: TypeObject.h:3160
MemberFlag StructMemberFlag
Definition: TypeObject.h:379
CompleteArrayHeader(const CommonArrayHeader &a_common, const CompleteTypeDetail &a_detail)
Definition: TypeObject.h:2337
bool operator!=(const CompleteCollectionHeader &other) const
Definition: TypeObject.h:2225
const TypeKind TK_SEQUENCE
Definition: TypeObject.h:248
bool operator==(const CompleteAnnotationParameter &other) const
Definition: TypeObject.h:1831
std::wstring WString
Sequence< CompleteBitflag > CompleteBitflagSeq
Definition: TypeObject.h:2729
bool operator==(const MinimalUnionType &other) const
Definition: TypeObject.h:1794
const T & value() const
Definition: TypeObject.h:137
bool operator!=(const AnnotationParameterValue &other) const
Definition: TypeObject.h:1057
bool operator<(const TypeIdentifier &other) const
Definition: TypeObject.h:766
CompleteStructMember(const CommonStructMember &a_common, const CompleteMemberDetail &a_detail)
Definition: TypeObject.h:1314
PlainSequenceLElemDefn(const PlainCollectionHeader &a_header, const LBound &a_bound, const TypeIdentifier &a_element_identifier)
Definition: TypeObject.h:512
CommonUnionMember(const MemberId &a_member_id, const UnionMemberFlag &a_member_flags, const TypeIdentifier &a_type_id, const UnionCaseLabelSeq &a_label_seq)
Definition: TypeObject.h:1547
void length(ACE_CDR::ULong len)
Definition: TypeObject.h:172
size_t rpos() const
Examine the logical reading position of the stream.
Definition: Serializer.h:475
CompleteCollectionElement element
Definition: TypeObject.h:2254
MinimalEnumeratedType enumerated_type
Definition: TypeObject.h:3135
#define ACE_ERROR(X)
bool operator!=(const TypeIdentifierPair &other) const
Definition: TypeObject.h:3324
External< TypeIdentifier > element_identifier
Definition: TypeObject.h:562
CompleteMemberDetail detail
Definition: TypeObject.h:2824
bool operator==(const CompleteUnionType &other) const
Definition: TypeObject.h:1763
bool operator==(const CompleteDiscriminatorMember &other) const
Definition: TypeObject.h:1671
bool is_complex(TypeKind tk)
ACE_CDR::ULong MemberId
Definition: TypeObject.h:910
ACE_INT64 LongLong
const XTypes::TypeIdentifier & getCompleteTypeIdentifier()
const LogLevel::Value value
Definition: debug.cpp:61
bool operator==(const AppliedAnnotation &other) const
Definition: TypeObject.h:1154
const TypeKind TK_INT32
Definition: TypeObject.h:217
ACE_CDR::LongDouble max_alignment
Definition: TypeObject.h:144
#define OPENDDS_UNION_ACCESSORS(T, N)
Definition: TypeObject.h:985
bool operator==(const CommonArrayHeader &other) const
Definition: TypeObject.h:2320
Optional< AppliedBuiltinTypeAnnotations > ann_builtin
Definition: TypeObject.h:1403
bool operator!=(const CompleteMapType &other) const
Definition: TypeObject.h:2450
MemberFlag UnionMemberFlag
Definition: TypeObject.h:380
CompleteSequenceType(CollectionTypeFlag a_collection_flag, const CompleteCollectionHeader &a_header, const CompleteCollectionElement &an_element)
Definition: TypeObject.h:2262
Optional< AppliedAnnotationSeq > ann_custom
Definition: TypeObject.h:1964
std::string String
bool operator!=(const MinimalStructMember &other) const
Definition: TypeObject.h:1361
bool operator!=(const TypeObject &other) const
Definition: TypeObject.h:3271
const TypeKind TK_STRING16
Definition: TypeObject.h:232
const LBound INVALID_LBOUND
Definition: TypeObject.h:314
MinimalTypeObject(const MinimalBitsetType &bitset)
Definition: TypeObject.h:3165
MinimalCollectionHeader header
Definition: TypeObject.h:2283
bool operator!=(const MinimalStructHeader &other) const
Definition: TypeObject.h:1468
const XTypes::TypeMap & getMinimalTypeMap()
bool operator!=(const CompleteUnionType &other) const
Definition: TypeObject.h:1768
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const Encoding & get_typeobject_encoding()
Definition: TypeObject.cpp:27
MinimalEnumeratedHeader(const CommonEnumeratedHeader &a_common)
Definition: TypeObject.h:2619
External< TypeIdentifier > element_identifier
Definition: TypeObject.h:486
void compute_dependencies(const TypeMap &type_map, const TypeIdentifier &type_identifier, OPENDDS_SET(TypeIdentifier)&dependencies)
const EquivalenceKind EK_BOTH
Definition: TypeObject.h:207
MinimalTypeObject(const MinimalBitmaskType &bitmask)
Definition: TypeObject.h:3190
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
bool operator==(const CompleteTypeDetail &other) const
Definition: TypeObject.h:1417
const TypeIdentifierKind TI_STRING8_LARGE
Definition: TypeObject.h:256
StronglyConnectedComponentId(const TypeObjectHashId &a_sc_component_id, const ACE_CDR::Long &a_scc_length, const ACE_CDR::Long &a_scc_index)
Definition: TypeObject.h:624
bool operator!=(const CompleteEnumeratedLiteral &other) const
Definition: TypeObject.h:2530
bool operator==(const CompleteStructHeader &other) const
Definition: TypeObject.h:1440
bool operator==(const CompleteArrayType &other) const
Definition: TypeObject.h:2393
Optional< AppliedBuiltinTypeAnnotations > ann_builtin
Definition: TypeObject.h:1658
int hash(const std::vector< const DDS::OctetSeq *> &src, DDS::OctetSeq &dst)
AppliedAnnotation(const TypeIdentifier &ann_typeid, const Optional< AppliedAnnotationParameterSeq > &a_param_seq)
Definition: TypeObject.h:1143
MinimalTypeObject(const MinimalStructType &struct_)
Definition: TypeObject.h:3155
bool operator==(const MinimalArrayType &other) const
Definition: TypeObject.h:2423
bool operator==(const CompleteStructType &other) const
Definition: TypeObject.h:1491
const TypeKind TK_BYTE
Definition: TypeObject.h:215
CompleteArrayType(CollectionTypeFlag a_collection_flag, const CompleteArrayHeader &a_header, const CompleteCollectionElement &an_element)
Definition: TypeObject.h:2385
const TypeFlag IS_MUTABLE
Definition: TypeObject.h:402
bool operator==(const CommonBitflag &other) const
Definition: TypeObject.h:2703
CommonAliasBody(const AliasMemberFlag &a_related_flags, const TypeIdentifier &a_related_type)
Definition: TypeObject.h:1944
Value value_
Optional< AppliedAnnotationSeq > ann_custom
Definition: TypeObject.h:1404
EquivalenceHashWrapper(ACE_CDR::Octet a, ACE_CDR::Octet b, ACE_CDR::Octet c, ACE_CDR::Octet d, ACE_CDR::Octet e, ACE_CDR::Octet f, ACE_CDR::Octet g, ACE_CDR::Octet h, ACE_CDR::Octet i, ACE_CDR::Octet j, ACE_CDR::Octet k, ACE_CDR::Octet l, ACE_CDR::Octet m, ACE_CDR::Octet n)
Definition: TypeObject.h:322
TypeMapBuilder & insert(const TypeIdentifier &ti, const TypeObject &to)
Definition: TypeObject.h:3429
const TypeKind TK_UNION
Definition: TypeObject.h:244
bool operator<(const PlainArraySElemDefn &other) const
Definition: TypeObject.h:855
bool skip(size_t n, int size=1)
Definition: Serializer.inl:443
bool operator!=(const MinimalSequenceType &other) const
Definition: TypeObject.h:2305
bool operator==(const MinimalAliasBody &other) const
Definition: TypeObject.h:1996
bool operator==(const CompleteCollectionElement &other) const
Definition: TypeObject.h:2158
bool operator==(const MinimalAnnotationType &other) const
Definition: TypeObject.h:1924
AppliedAnnotationParameter(ACE_CDR::Octet a, ACE_CDR::Octet b, ACE_CDR::Octet c, ACE_CDR::Octet d, const AnnotationParameterValue &a_value)
Definition: TypeObject.h:1103
bool operator!=(const CompleteUnionMember &other) const
Definition: TypeObject.h:1591
bool operator!=(const CompleteAnnotationHeader &other) const
Definition: TypeObject.h:1875
PlainMapSTypeDefn(const PlainCollectionHeader &a_header, const SBound &a_bound, const TypeIdentifier &a_element_identifier, const CollectionElementFlag &a_key_flags, const TypeIdentifier &a_key_identifier)
Definition: TypeObject.h:571
#define OpenDDS_Dcps_Export
Definition: dcps_export.h:24
bool operator!=(const MinimalTypeObject &other) const
Definition: TypeObject.h:3227
bool operator==(const CompleteBitfield &other) const
Definition: TypeObject.h:2826
CompleteExtendedType extended_type
Definition: TypeObject.h:2989
bool operator!=(const CompleteBitsetType &other) const
Definition: TypeObject.h:2903
CompleteUnionMemberSeq member_seq
Definition: TypeObject.h:1747
bool operator<(const CompleteEnumeratedLiteral &other) const
Definition: TypeObject.h:2520
const TypeKind TK_INT16
Definition: TypeObject.h:216
CompleteTypeObject(const CompleteBitmaskType &bitmask)
Definition: TypeObject.h:3040
TypeFlag AnnotationTypeFlag
Definition: TypeObject.h:410
bool operator==(const Sequence &other) const
Definition: TypeObject.h:188
bool operator<(const StringLTypeDefn &other) const
Definition: TypeObject.h:452
const TypeIdentifierKind TI_PLAIN_SEQUENCE_LARGE
Definition: TypeObject.h:261
MemberFlag BitsetMemberFlag
Definition: TypeObject.h:386
CompleteEnumeratedHeader(const CommonEnumeratedHeader &a_common, const CompleteTypeDetail &a_detail)
Definition: TypeObject.h:2597
OpenDDS_Dcps_Export void serialized_size_delimiter(const Encoding &encoding, size_t &size)
Add delimiter to the size of a serialized size if the encoding has them.
CompleteTypeObject(const CompleteEnumeratedType &enum_)
Definition: TypeObject.h:3035
Sequence< CompleteBitfield > CompleteBitfieldSeq
Definition: TypeObject.h:2837
bool operator!=(const CompleteArrayType &other) const
Definition: TypeObject.h:2398
TypeObjectSeq StronglyConnectedComponent
Definition: TypeObject.h:3283
CollectionTypeFlag collection_flag
Definition: TypeObject.h:2375
MinimalCollectionElement element
Definition: TypeObject.h:2407
bool operator!=(const MinimalUnionMember &other) const
Definition: TypeObject.h:1622
bool operator==(const CompleteExtendedType &) const
Definition: TypeObject.h:2936
bool operator==(const CompleteMemberDetail &other) const
Definition: TypeObject.h:1264
bool operator==(const CompleteAliasBody &other) const
Definition: TypeObject.h:1976
bool operator==(const CompleteEnumeratedType &other) const
Definition: TypeObject.h:2652
const MemberFlag IS_MUST_UNDERSTAND
Definition: TypeObject.h:374
TypeFlag UnionTypeFlag
Definition: TypeObject.h:408
Sequence< CompleteStructMember > CompleteStructMemberSeq
Definition: TypeObject.h:1336
const ACE_CDR::ULong DISCRIMINATOR_ID
Implementation specific sentinel for a union discriminator used in DynamicData.
Definition: TypeObject.h:913
bool operator!=(const MinimalArrayType &other) const
Definition: TypeObject.h:2428
ACE_CDR::Octet PrimitiveTypeId
Definition: TypeObject.h:283
Optional< AnnotationParameterValue > max
Definition: TypeObject.h:1198
bool operator==(const ExtendedAnnotationParameterValue &) const
Definition: TypeObject.h:919
const TypeKind TK_UINT16
Definition: TypeObject.h:219
ACE_UINT64 ULongLong
ACE_CDR::UShort BitBound
Definition: TypeObject.h:2478
ACE_CDR::Octet kind() const
Definition: TypeObject.h:748
bool name_hash_equal(const NameHash &x, const NameHash &y)
Definition: TypeObject.h:301
bool operator!=(const MinimalBitfield &other) const
Definition: TypeObject.h:2853
Optional< AnnotationParameterValue > min
Definition: TypeObject.h:1197
TypeIdentifierTypeObjectPair(const TypeIdentifier &ti, const TypeObject &to)
Definition: TypeObject.h:3291
MinimalStructType(const StructTypeFlag &a_struct_flags, const MinimalStructHeader &a_header, const MinimalStructMemberSeq &a_member_seq)
Definition: TypeObject.h:1511
bool operator<(const CompleteStructMember &other) const
Definition: TypeObject.h:1320
MinimalArrayHeader(const CommonArrayHeader &a_common)
Definition: TypeObject.h:2359
ACE_CDR::ULong size_type
Definition: TypeObject.h:151
const ACE_CDR::Long MEMBER_NAME_MAX_LENGTH
Definition: TypeObject.h:274
MinimalEnumeratedLiteralSeq literal_seq
Definition: TypeObject.h:2667
bool operator!=(const MinimalBitsetType &other) const
Definition: TypeObject.h:2923
bool operator==(const CommonBitfield &other) const
Definition: TypeObject.h:2811
MinimalExtendedType extended_type
Definition: TypeObject.h:3139
const MemberFlag MemberFlagMinimalMask
Definition: TypeObject.h:394
PlainCollectionHeader header
Definition: TypeObject.h:524
CompleteCollectionElement element
Definition: TypeObject.h:2439
bool operator!=(const AppliedAnnotation &other) const
Definition: TypeObject.h:1159
bool operator!=(const CompleteStructMember &other) const
Definition: TypeObject.h:1330
bool operator==(const MinimalArrayHeader &other) const
Definition: TypeObject.h:2363
CompleteTypeObject(const CompleteUnionType &union_)
Definition: TypeObject.h:3010
bool operator==(const MinimalExtendedType &) const
Definition: TypeObject.h:3086
PlainArrayLElemDefn(const PlainCollectionHeader &a_header, const LBoundSeq &a_array_bound_seq, const TypeIdentifier &a_element_identifier)
Definition: TypeObject.h:548
bool operator!=(const CommonAliasBody &other) const
Definition: TypeObject.h:1955
bool operator==(const CompleteCollectionHeader &other) const
Definition: TypeObject.h:2220
CollectionElementFlag element_flags
Definition: TypeObject.h:460
Optional< AppliedVerbatimAnnotation > verbatim
Definition: TypeObject.h:1370
const TypeIdentifierKind TI_STRING16_LARGE
Definition: TypeObject.h:258
bool operator!=(const CompleteSequenceType &other) const
Definition: TypeObject.h:2275
bool operator<(const CompleteUnionMember &other) const
Definition: TypeObject.h:1581
bool is_fully_descriptive(const TypeIdentifier &ti)
Definition: TypeObject.cpp:408
CompleteAliasHeader(const CompleteTypeDetail &a_detail)
Definition: TypeObject.h:2012
bool operator!=(const MinimalCollectionElement &other) const
Definition: TypeObject.h:2182
Sequence< TypeIdentifierTypeObjectPair > TypeIdentifierTypeObjectPairSeq
Definition: TypeObject.h:3306
bool operator==(const MinimalBitsetHeader &) const
Definition: TypeObject.h:2878
const_iterator end() const
Definition: TypeObject.h:196
TypeFlag BitmaskTypeFlag
Definition: TypeObject.h:413
MinimalTypeObject(const MinimalMapType &map)
Definition: TypeObject.h:3180
bool is_primitive(TypeKind tk)
MinimalAnnotationParameterSeq member_seq
Definition: TypeObject.h:1918
MinimalStructHeader(const TypeIdentifier &a_base_type, const MinimalTypeDetail &a_detail)
Definition: TypeObject.h:1457
bool operator!=(const AppliedBuiltinMemberAnnotations &other) const
Definition: TypeObject.h:1213
MinimalEnumeratedType(const EnumTypeFlag &a_enum_flags, const MinimalEnumeratedHeader &a_header, const MinimalEnumeratedLiteralSeq &a_literal_seq)
Definition: TypeObject.h:2673
bool operator==(const AppliedVerbatimAnnotation &other) const
Definition: TypeObject.h:1183
void serialized_size(const Encoding &encoding, size_t &size, const SequenceNumber &)
bool operator==(const CompleteAnnotationHeader &other) const
Definition: TypeObject.h:1870
const MemberFlag TRY_CONSTRUCT2
Definition: TypeObject.h:370
CompleteAliasType(const AliasTypeFlag &a_alias_flags, const CompleteAliasHeader &a_header, const CompleteAliasBody &a_body)
Definition: TypeObject.h:2050
bool operator==(const CompleteBitsetHeader &other) const
Definition: TypeObject.h:2864
AppliedAnnotationParameter(const NameHash &a_name_hash, const AnnotationParameterValue &a_value)
Definition: TypeObject.h:1112
bool operator!=(const ExtendedAnnotationParameterValue &other) const
Definition: TypeObject.h:924
bool operator!=(const MinimalEnumeratedLiteral &other) const
Definition: TypeObject.h:2561
bool operator==(const MinimalCollectionHeader &other) const
Definition: TypeObject.h:2239
Members::const_iterator const_iterator
Definition: TypeObject.h:194
bool operator==(const CompleteElementDetail &other) const
Definition: TypeObject.h:2110
External< TypeIdentifier > element_identifier
Definition: TypeObject.h:544
Optional< AppliedBuiltinMemberAnnotations > ann_builtin
Definition: TypeObject.h:2099
bool operator!=(const CompleteAnnotationParameter &other) const
Definition: TypeObject.h:1836
const TypeKind TK_INT8
Definition: TypeObject.h:225
bool operator!=(const CompleteTypeObject &other) const
Definition: TypeObject.h:3077
const TypeIdentifierKind TI_STRING8_SMALL
Definition: TypeObject.h:255
CompleteEnumeratedHeader CompleteBitmaskHeader
Definition: TypeObject.h:2753
CompleteEnumeratedLiteralSeq literal_seq
Definition: TypeObject.h:2638
Sequence< MinimalBitflag > MinimalBitflagSeq
Definition: TypeObject.h:2746
MinimalAnnotationHeader header
Definition: TypeObject.h:1917
bool operator!=(const CompleteExtendedType &other) const
Definition: TypeObject.h:2941
MinimalDiscriminatorMember(const CommonDiscriminatorMember &a_common)
Definition: TypeObject.h:1688
AppliedVerbatimAnnotation(const OPENDDS_STRING &a_placement, const OPENDDS_STRING &a_language, const OPENDDS_STRING &a_text)
Definition: TypeObject.h:1175
TypeObject(const MinimalTypeObject &a_minimal)
Definition: TypeObject.h:3255
bool operator<(const PlainSequenceSElemDefn &other) const
Definition: TypeObject.h:833
const TypeFlag TypeFlagMinimalMask
Definition: TypeObject.h:417
bool operator!=(const CompleteAliasHeader &other) const
Definition: TypeObject.h:2021
bool operator==(const CompleteAnnotationType &other) const
Definition: TypeObject.h:1904
bool operator==(const MinimalMapType &other) const
Definition: TypeObject.h:2466
CompleteEnumeratedType(const EnumTypeFlag &a_enum_flags, const CompleteEnumeratedHeader &a_header, const CompleteEnumeratedLiteralSeq &a_literal_seq)
Definition: TypeObject.h:2644
PlainCollectionHeader header
Definition: TypeObject.h:560
bool operator==(const TypeIdentifierTypeObjectPair &other) const
Definition: TypeObject.h:3296
bool operator<(const PlainMapLTypeDefn &other) const
Definition: TypeObject.h:892
CompleteSequenceType sequence_type
Definition: TypeObject.h:2982
CompleteUnionHeader(const CompleteTypeDetail &a_detail)
Definition: TypeObject.h:1708
const EquivalenceKind EK_COMPLETE
Definition: TypeObject.h:206
Sequence< MinimalBitfield > MinimalBitfieldSeq
Definition: TypeObject.h:2859
bool operator!=(const MinimalCollectionHeader &other) const
Definition: TypeObject.h:2244
TypeFlag EnumTypeFlag
Definition: TypeObject.h:412
bool operator!=(const AppliedBuiltinTypeAnnotations &other) const
Definition: TypeObject.h:1383
bool operator==(const CommonCollectionHeader &other) const
Definition: TypeObject.h:2197
#define OPENDDS_STRING
MinimalAnnotationType annotation_type
Definition: TypeObject.h:3128
bool operator!=(const MinimalStructType &other) const
Definition: TypeObject.h:1524
bool operator!=(const CommonBitfield &other) const
Definition: TypeObject.h:2816
PlainCollectionHeader(const EquivalenceKind &a_equiv_kind, const CollectionElementFlag &a_element_flags)
Definition: TypeObject.h:467
Sequence< MinimalStructMember > MinimalStructMemberSeq
Definition: TypeObject.h:1367
bool operator!=(const CompleteEnumeratedType &other) const
Definition: TypeObject.h:2657
bool operator!=(const CommonBitflag &other) const
Definition: TypeObject.h:2708
const TypeIdentifierKind TI_PLAIN_MAP_LARGE
Definition: TypeObject.h:267
bool operator==(const CompleteSequenceType &other) const
Definition: TypeObject.h:2270
bool is_sequence_like(TypeKind tk)
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
CompleteTypeObject(const CompleteArrayType &array)
Definition: TypeObject.h:3025
ACE_CDR::UShort MemberFlag
Definition: TypeObject.h:368
bool operator==(const CommonStructMember &other) const
Definition: TypeObject.h:1237
bool operator==(const MinimalBitsetType &other) const
Definition: TypeObject.h:2918
const TypeFlag IS_AUTOID_HASH
Definition: TypeObject.h:405
Optional & operator=(const Optional &rhs)
Definition: TypeObject.h:93
MinimalAliasType(const AliasTypeFlag &a_alias_flags, const MinimalAliasHeader &a_header, const MinimalAliasBody &a_body)
Definition: TypeObject.h:2078
const TypeFlag IS_NESTED
Definition: TypeObject.h:404
CommonEnumeratedLiteral(ACE_CDR::Long a_value, EnumeratedLiteralFlag a_flags)
Definition: TypeObject.h:2490
bool operator==(const MinimalUnionMember &other) const
Definition: TypeObject.h:1617
const SBound INVALID_SBOUND
Definition: TypeObject.h:319
CommonCollectionElement(CollectionElementFlag a_element_flags, const TypeIdentifier &a_type)
Definition: TypeObject.h:2129
ACE_INT16 Short
const ACE_CDR::ULong ANNOTATION_OCTETSEC_VALUE_MAX_LEN
Definition: TypeObject.h:915
bool operator!=(const MinimalMapType &other) const
Definition: TypeObject.h:2471
bool operator==(const Optional &other) const
Definition: TypeObject.h:111
bool operator!=(const MinimalAliasType &other) const
Definition: TypeObject.h:2091
bool operator!=(const MinimalBitsetHeader &other) const
Definition: TypeObject.h:2883
const MemberFlag IS_KEY
Definition: TypeObject.h:375
MemberFlag UnionDiscriminatorFlag
Definition: TypeObject.h:381
bool operator!=(const Optional &other) const
Definition: TypeObject.h:120
bool operator<(const PlainMapSTypeDefn &other) const
Definition: TypeObject.h:877
bool operator!=(const CommonAnnotationParameter &other) const
Definition: TypeObject.h:1819
bool operator==(const AppliedBuiltinTypeAnnotations &other) const
Definition: TypeObject.h:1378
typedef OPENDDS_VECTOR(MemberPair) MatchedSet
const MemberFlag TryConstructTrimValue
Definition: TypeObject.h:390
bool operator!=(const CompleteStructHeader &other) const
Definition: TypeObject.h:1445
bool operator<(const StringSTypeDefn &other) const
Definition: TypeObject.h:434
MinimalMemberDetail(const NameHash &a_name_hash)
Definition: TypeObject.h:1289
Class to serialize and deserialize data for DDS.
Definition: Serializer.h:369
PlainCollectionHeader header
Definition: TypeObject.h:587
bool operator<(const TypeObjectHashId &other) const
Definition: TypeObject.h:353
Sequence< TypeIdentifier > TypeIdentifierSeq
Definition: TypeObject.h:830
bool operator==(const CompleteUnionMember &other) const
Definition: TypeObject.h:1586
size_t length() const
Number of bytes left to read in message block chain.
Definition: Serializer.inl:437
ACE_CDR::ULong hash_member_name_to_id(const OPENDDS_STRING &name)
Definition: TypeObject.cpp:389
bool operator!=(const MinimalDiscriminatorMember &other) const
Definition: TypeObject.h:1697
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
const char * typekind_to_string(TypeKind tk)
bool operator==(const CompleteBitmaskType &other) const
Definition: TypeObject.h:2766
bool operator==(const MinimalUnionHeader &other) const
Definition: TypeObject.h:1732
MinimalAliasBody(const CommonAliasBody &a_common)
Definition: TypeObject.h:1992
TypeIdentifierWithDependencies complete
Definition: TypeObject.h:3374
PlainSequenceSElemDefn(const PlainCollectionHeader &a_header, const SBound &a_bound, const TypeIdentifier &a_element_identifier)
Definition: TypeObject.h:492
void serialized_size(const Encoding &, size_t &, const XTypes::MinimalTypeDetail &)
Definition: TypeObject.h:3704
Optional< AppliedBuiltinMemberAnnotations > ann_builtin
Definition: TypeObject.h:1963
bool operator<(const MinimalUnionMember &other) const
Definition: TypeObject.h:1612
bool operator==(const CommonCollectionElement &other) const
Definition: TypeObject.h:2135
const TypeIdentifierKind TI_PLAIN_MAP_SMALL
Definition: TypeObject.h:266
MemberFlag CollectionElementFlag
Definition: TypeObject.h:378
const TypeIdentifierKind TI_PLAIN_ARRAY_LARGE
Definition: TypeObject.h:264
bool operator<<(Serializer &ser, XTypes::MinimalAliasType &stru)
bool operator==(const CompleteAliasType &other) const
Definition: TypeObject.h:2058
char Char
const ACE_CDR::ULong ANNOTATION_STR_VALUE_MAX_LEN
Definition: TypeObject.h:914
bool operator!=(const CompleteBitmaskType &other) const
Definition: TypeObject.h:2771
Christopher Diggins *renamed files *fixing compilation errors *adding Visual C project file *removed make Max Lybbert *removed references to missing and unused header
Definition: CHANGELOG.txt:8
Sequence< MinimalAnnotationParameter > MinimalAnnotationParameterSeq
Definition: TypeObject.h:1865
const TypeIdentifierKind TI_PLAIN_ARRAY_SMALL
Definition: TypeObject.h:263
bool operator!=(const MinimalAliasBody &other) const
Definition: TypeObject.h:2001
MinimalTypeObject(const MinimalSequenceType &sequence)
Definition: TypeObject.h:3170
const TypeKind TK_BITMASK
Definition: TypeObject.h:239
ACE_CDR::Octet TypeIdentifierKind
Definition: TypeObject.h:254
bool operator==(const MinimalDiscriminatorMember &other) const
Definition: TypeObject.h:1692
void serialize_type_info(const TypeInformation &type_info, T &seq, const DCPS::Encoding *encoding_option=0)
Definition: TypeObject.h:3382
bool operator==(const CompleteEnumeratedLiteral &other) const
Definition: TypeObject.h:2525
bool operator!=(const MinimalUnionType &other) const
Definition: TypeObject.h:1799
TypeObjectHashId(const EquivalenceKind &a_kind, const EquivalenceHashWrapper &a_hash)
Definition: TypeObject.h:346
ACE_UINT16 UShort
MinimalTypeObject(const MinimalAnnotationType &annotation)
Definition: TypeObject.h:3150
CompleteDiscriminatorMember(const CommonDiscriminatorMember &a_common, const Optional< AppliedBuiltinTypeAnnotations > &an_ann_builtin, const Optional< AppliedAnnotationSeq > &an_ann_custom)
Definition: TypeObject.h:1663
External< TypeIdentifier > element_identifier
Definition: TypeObject.h:526
bool operator!=(const TypeIdentifierTypeObjectPair &other) const
Definition: TypeObject.h:3301
const TypeFlag IS_FINAL
Definition: TypeObject.h:400
bool operator==(const CommonUnionMember &other) const
Definition: TypeObject.h:1557
MinimalDiscriminatorMember discriminator
Definition: TypeObject.h:1777
CompleteTypeObject(const CompleteAliasType &alias)
Definition: TypeObject.h:2995
const MemberFlag TryConstructUseDefaultValue
Definition: TypeObject.h:389
ACE_CDR::Octet NameHash_slice
Definition: TypeObject.h:298
DCPS::String equivalence_hash_to_string(const EquivalenceHash &equivalence_hash)
Definition: TypeObject.cpp:33
CompleteStructMemberSeq member_seq
Definition: TypeObject.h:1477
bool operator==(const CompleteStructMember &other) const
Definition: TypeObject.h:1325
bool operator!=(const CommonStructMember &other) const
Definition: TypeObject.h:1242
bool operator==(const AnnotationParameterValue &other) const
Definition: TypeObject.h:1009
StringLTypeDefn(const LBound a_bound)
Definition: TypeObject.h:448
bool operator!=(const CompleteBitsetHeader &other) const
Definition: TypeObject.h:2869
ACE_CDR::Octet SBound
Definition: TypeObject.h:317
bool operator<(const PlainSequenceLElemDefn &other) const
Definition: TypeObject.h:844
bool operator!=(const CompleteAnnotationType &other) const
Definition: TypeObject.h:1909
bool operator==(const TypeIdentifierWithSize &other) const
Definition: TypeObject.h:3344
Optional< AppliedBuiltinMemberAnnotations > ann_builtin
Definition: TypeObject.h:1251
CommonEnumeratedHeader(BitBound a_bit_bound)
Definition: TypeObject.h:2576
CompleteTypeDetail(const Optional< AppliedBuiltinTypeAnnotations > &an_ann_builtin, const Optional< AppliedAnnotationSeq > &an_ann_custom, const QualifiedTypeName &a_type_name)
Definition: TypeObject.h:1409
ACE_CDR::Octet EquivalenceHash_slice
Definition: TypeObject.h:289
CollectionTypeFlag collection_flag
Definition: TypeObject.h:2436
bool deserialize_type_info(TypeInformation &type_info, const T &seq)
Definition: TypeObject.h:3397
bool operator!=(const MinimalMemberDetail &other) const
Definition: TypeObject.h:1301
CompleteTypeObject(const CompleteSequenceType &sequence)
Definition: TypeObject.h:3020
CompleteTypeObject(const CompleteAnnotationType &annotation)
Definition: TypeObject.h:3000
TypeIdentifierPair(const TypeIdentifier &t1, const TypeIdentifier &t2)
Definition: TypeObject.h:3314
Sequence< CompleteAnnotationParameter > CompleteAnnotationParameterSeq
Definition: TypeObject.h:1842
Sequence< SBound > SBoundSeq
Definition: TypeObject.h:318
bool operator==(const CompleteUnionHeader &other) const
Definition: TypeObject.h:1712
CompleteCollectionHeader header
Definition: TypeObject.h:2253
MinimalUnionMemberSeq member_seq
Definition: TypeObject.h:1778
bool operator>>(Serializer &ser, const XTypes::MinimalAliasType &stru)
MinimalUnionMember(const CommonUnionMember &a_common, const MinimalMemberDetail &a_detail)
Definition: TypeObject.h:1606
bool operator==(const MinimalAliasType &other) const
Definition: TypeObject.h:2086
bool operator==(const MinimalEnumeratedHeader &other) const
Definition: TypeObject.h:2623
MinimalTypeObject(const MinimalAliasType &alias)
Definition: TypeObject.h:3145
TypeFlag CollectionTypeFlag
Definition: TypeObject.h:409
External< TypeIdentifier > element_identifier
Definition: TypeObject.h:589
bool operator==(const AppliedBuiltinMemberAnnotations &other) const
Definition: TypeObject.h:1208
bool operator==(const CommonAnnotationParameter &other) const
Definition: TypeObject.h:1814
Optional(const Optional &rhs)
Definition: TypeObject.h:86
CommonDiscriminatorMember(const UnionDiscriminatorFlag &a_member_flags, const TypeIdentifier &a_type_id)
Definition: TypeObject.h:1638
bool operator==(const MinimalTypeDetail &) const
Definition: TypeObject.h:1391
bool is_plain_collection(const TypeIdentifier &ti)
Definition: TypeObject.cpp:447
bool skip_sequence_dheader() const
Definition: Serializer.inl:100
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
Optional< AppliedAnnotationSeq > ann_custom
Definition: TypeObject.h:1659
const ACE_CDR::ULong MEMBER_ID_INVALID
Definition: TypeObject.h:911
bool operator==(const CommonAliasBody &other) const
Definition: TypeObject.h:1950
bool operator!=(const MinimalArrayHeader &other) const
Definition: TypeObject.h:2368
bool operator==(const MinimalCollectionElement &other) const
Definition: TypeObject.h:2177
Optional< AppliedAnnotationParameterSeq > param_seq
Definition: TypeObject.h:1139
bool operator==(const MinimalBitflag &other) const
Definition: TypeObject.h:2735
CompleteBitmaskType bitmask_type
Definition: TypeObject.h:2986
ACE_UINT32 ULong
bool operator!=(const CompleteMemberDetail &other) const
Definition: TypeObject.h:1269
const XTypes::TypeMap & getCompleteTypeMap()
bool operator!=(const CommonEnumeratedHeader &other) const
Definition: TypeObject.h:2585
bool operator<(const MinimalStructMember &other) const
Definition: TypeObject.h:1351
bool operator!=(const MinimalBitmaskType &other) const
Definition: TypeObject.h:2791
CompleteCollectionElement(const CommonCollectionElement &a_common, const CompleteElementDetail &a_detail)
Definition: TypeObject.h:2152
bool operator==(const MinimalEnumeratedLiteral &other) const
Definition: TypeObject.h:2556
bool operator==(const MinimalStructHeader &other) const
Definition: TypeObject.h:1463
bool operator==(const MinimalStructType &other) const
Definition: TypeObject.h:1519
bool operator!=(const TypeIdentifierWithSize &other) const
Definition: TypeObject.h:3349
CompleteStructType(const StructTypeFlag &a_struct_flags, const CompleteStructHeader &a_header, const CompleteStructMemberSeq &a_member_seq)
Definition: TypeObject.h:1483
CompleteMemberDetail detail
Definition: TypeObject.h:2716
CompleteElementDetail(const Optional< AppliedBuiltinMemberAnnotations > &an_ann_builtin, const Optional< AppliedAnnotationSeq > &an_ann_custom)
Definition: TypeObject.h:2104
bool operator==(const CompleteMapType &other) const
Definition: TypeObject.h:2445
const TypeKind TK_STRUCTURE
Definition: TypeObject.h:243
MinimalArrayType(CollectionTypeFlag a_collection_flag, const MinimalArrayHeader &a_header, const MinimalCollectionElement &a_element)
Definition: TypeObject.h:2415
MinimalTypeObject(const MinimalEnumeratedType &enum_)
Definition: TypeObject.h:3185
bool gen_skip_over(Serializer &, XTypes::Sequence< T > *)
Definition: TypeObject.h:3670
Sequence< CompleteUnionMember > CompleteUnionMemberSeq
Definition: TypeObject.h:1597
TypeObject(const CompleteTypeObject &a_complete)
Definition: TypeObject.h:3250
MinimalCollectionElement element
Definition: TypeObject.h:2460
bool operator!=(const MinimalAnnotationParameter &other) const
Definition: TypeObject.h:1859
bool operator!=(const CompleteCollectionElement &other) const
Definition: TypeObject.h:2163
bool operator==(const MinimalStructMember &other) const
Definition: TypeObject.h:1356
void hash_member_name(NameHash &name_hash, const OPENDDS_STRING &name)
Definition: TypeObject.cpp:400
bool operator!=(const CompleteStructType &other) const
Definition: TypeObject.h:1496
bool operator!=(const MinimalAliasHeader &other) const
Definition: TypeObject.h:2035
typedef OPENDDS_SET(DynamicTypePtrPair) DynamicTypePtrPairSeen
bool operator!=(const CompleteArrayHeader &other) const
Definition: TypeObject.h:2348
const ACE_CDR::Long TYPE_NAME_MAX_LENGTH
Definition: TypeObject.h:279
const char *const name
Definition: debug.cpp:60
MinimalEnumeratedLiteral(const CommonEnumeratedLiteral &a_common, const MinimalMemberDetail &a_detail)
Definition: TypeObject.h:2545
Sequence & append(const T &member)
Definition: TypeObject.h:155
MinimalCollectionElement key
Definition: TypeObject.h:2459
const T * get_buffer() const
Definition: TypeObject.h:192
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
ACE_CDR::ULongLong max_alignment
Definition: TypeObject.h:811
bool operator!=(const CommonEnumeratedLiteral &other) const
Definition: TypeObject.h:2501
bool operator!=(const Sequence &other) const
Definition: TypeObject.h:189
CompleteStructHeader(const TypeIdentifier &a_base_type, const CompleteTypeDetail &a_detail)
Definition: TypeObject.h:1434
bool operator!=(const CompleteUnionHeader &other) const
Definition: TypeObject.h:1717
CompleteUnionMember(const CommonUnionMember &a_common, const CompleteMemberDetail &a_detail)
Definition: TypeObject.h:1575
MinimalSequenceType sequence_type
Definition: TypeObject.h:3132
bool operator!=(const CompleteDiscriminatorMember &other) const
Definition: TypeObject.h:1676
MinimalSequenceType(CollectionTypeFlag a_collection_flag, const MinimalCollectionHeader &a_header, const MinimalCollectionElement &a_element)
Definition: TypeObject.h:2292
Optional< AppliedAnnotationSeq > ann_custom
Definition: TypeObject.h:1252
ACE_TEXT("TCP_Factory")
const TypeKind TK_STRING8
Definition: TypeObject.h:231
bool operator<(const PlainCollectionHeader &other) const
Definition: TypeObject.h:473
ACE_CDR::Octet EquivalenceHash[14]
Definition: TypeObject.h:287
External< TypeIdentifier > key_identifier
Definition: TypeObject.h:591
OPENDDS_STRING QualifiedTypeName
Definition: TypeObject.h:280
TypeIdentifierWithSize(const TypeIdentifier &ti, ACE_CDR::ULong to_size)
Definition: TypeObject.h:3339
bool operator!=(const MinimalEnumeratedHeader &other) const
Definition: TypeObject.h:2628
ACE_INT32 Long
ACE_CDR::Octet EquivalenceKind
Definition: TypeObject.h:204
Fake_TAO_Array_Forany_T< NameHash, NameHash_slice, NameHash_tag > NameHash_forany
Definition: TypeObject.h:299
MinimalMemberDetail detail
Definition: TypeObject.h:2733
External< TypeIdentifier > element_identifier
Definition: TypeObject.h:506
bool operator!=(const CommonDiscriminatorMember &other) const
Definition: TypeObject.h:1649
ACE_CDR::UShort TypeFlag
Definition: TypeObject.h:399
bool operator!=(const AppliedVerbatimAnnotation &other) const
Definition: TypeObject.h:1188
const XTypes::TypeIdentifier & getMinimalTypeIdentifier()
bool operator!=(const CommonCollectionHeader &other) const
Definition: TypeObject.h:2202
CompleteCollectionHeader(const CommonCollectionHeader &a_common, const Optional< CompleteTypeDetail > &a_detail)
Definition: TypeObject.h:2214
bool operator==(const MinimalBitmaskType &other) const
Definition: TypeObject.h:2786
MemberFlag AnnotationParameterFlag
Definition: TypeObject.h:383
CompleteEnumeratedType enumerated_type
Definition: TypeObject.h:2985
OPENDDS_STRING MemberName
Definition: TypeObject.h:275
bool operator==(const CommonEnumeratedLiteral &other) const
Definition: TypeObject.h:2496
bool operator==(const AppliedAnnotationParameter &other) const
Definition: TypeObject.h:1124
const TypeKind TK_UINT64
Definition: TypeObject.h:221
StringSTypeDefn(const SBound a_bound)
Definition: TypeObject.h:430
bool operator==(const MinimalTypeObject &other) const
Definition: TypeObject.h:3195
bool operator==(const MinimalSequenceType &other) const
Definition: TypeObject.h:2300
CompleteCollectionElement key
Definition: TypeObject.h:2438
Sequence< TypeIdentifierWithSize > TypeIdentifierWithSizeSeq
Definition: TypeObject.h:3354
const MemberFlag TRY_CONSTRUCT1
Definition: TypeObject.h:369
bool operator!=(const CompleteAliasBody &other) const
Definition: TypeObject.h:1981
AppliedBuiltinTypeAnnotations(const Optional< AppliedVerbatimAnnotation > &a_verbatim)
Definition: TypeObject.h:1374
const T & operator[](ACE_CDR::ULong i) const
Definition: TypeObject.h:177
bool operator==(const CompleteArrayHeader &other) const
Definition: TypeObject.h:2343
Optional< CompleteTypeDetail > detail
Definition: TypeObject.h:2210
bool operator!=(const AppliedAnnotationParameter &other) const
Definition: TypeObject.h:1129
const MemberFlag TryConstructDiscardValue
Definition: TypeObject.h:388
MinimalStructMemberSeq member_seq
Definition: TypeObject.h:1505
bool operator!=(const MinimalTypeDetail &other) const
Definition: TypeObject.h:1396
bool operator==(const MinimalMemberDetail &other) const
Definition: TypeObject.h:1296
bool is_scalar(TypeKind tk)
const TypeKind TK_INT64
Definition: TypeObject.h:218
bool operator!=(const CompleteBitflag &other) const
Definition: TypeObject.h:2723
MinimalCollectionElement element
Definition: TypeObject.h:2284
MinimalUnionHeader(const MinimalTypeDetail &a_detail)
Definition: TypeObject.h:1728
Sequence< TypeIdentifierWithDependencies > TypeIdentifierWithDependenciesSeq
Definition: TypeObject.h:3367
CompleteEnumeratedLiteral(const CommonEnumeratedLiteral &a_common, const CompleteMemberDetail &a_detail)
Definition: TypeObject.h:2514
bool operator!=(const CommonCollectionElement &other) const
Definition: TypeObject.h:2140
PlainMapLTypeDefn(const PlainCollectionHeader &a_header, const LBound &a_bound, const TypeIdentifier &a_element_identifier, const CollectionElementFlag &a_key_flags, const TypeIdentifier &a_key_identifier)
Definition: TypeObject.h:598
T & operator[](ACE_CDR::ULong i)
Definition: TypeObject.h:182
bool operator==(const CompleteTypeObject &other) const
Definition: TypeObject.h:3045
CompleteMemberDetail(const MemberName &a_name, const Optional< AppliedBuiltinMemberAnnotations > &an_ann_builtin, const Optional< AppliedAnnotationSeq > &an_ann_custom)
Definition: TypeObject.h:1256
bool operator!=(const CompleteElementDetail &other) const
Definition: TypeObject.h:2115
const MemberFlag IS_OPTIONAL
Definition: TypeObject.h:373
const TypeKind TK_UINT32
Definition: TypeObject.h:220
CompleteAnnotationType annotation_type
Definition: TypeObject.h:2978
TypeFlag BitsetTypeFlag
Definition: TypeObject.h:414
CompleteAliasBody(const CommonAliasBody &a_common, const Optional< AppliedBuiltinMemberAnnotations > &an_ann_builtin, const Optional< AppliedAnnotationSeq > &an_ann_custom)
Definition: TypeObject.h:1968
MinimalCollectionHeader header
Definition: TypeObject.h:2458
const TypeKind TK_ALIAS
Definition: TypeObject.h:235
MemberFlag AliasMemberFlag
Definition: TypeObject.h:384
External< TypeIdentifier > key_identifier
Definition: TypeObject.h:564
TypeFlag AliasTypeFlag
Definition: TypeObject.h:411
bool operator!=(const MinimalExtendedType &other) const
Definition: TypeObject.h:3091
bool operator!=(const CompleteAliasType &other) const
Definition: TypeObject.h:2063
const TypeIdentifierKind TI_PLAIN_SEQUENCE_SMALL
Definition: TypeObject.h:260
bool operator<(const MinimalEnumeratedLiteral &other) const
Definition: TypeObject.h:2551
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
const TypeKind TK_ANNOTATION
Definition: TypeObject.h:242
CompleteUnionType(const UnionTypeFlag &a_union_flags, const CompleteUnionHeader &a_header, const CompleteDiscriminatorMember &a_discriminator, const CompleteUnionMemberSeq &a_member_seq)
Definition: TypeObject.h:1753
bool operator==(const TypeIdentifier &other) const
Definition: TypeObject.h:802
CompleteTypeObject(const CompleteMapType &map)
Definition: TypeObject.h:3030
MinimalUnionType(const UnionTypeFlag &a_union_flags, const MinimalUnionHeader &a_header, const MinimalDiscriminatorMember &a_discriminator, const MinimalUnionMemberSeq &a_member_seq)
Definition: TypeObject.h:1784
CompleteCollectionHeader header
Definition: TypeObject.h:2437
const TypeKind TK_ENUM
Definition: TypeObject.h:238
bool operator!=(const MinimalUnionHeader &other) const
Definition: TypeObject.h:1737
Sequence< LBound > LBoundSeq
Definition: TypeObject.h:313
bool operator==(const TypeIdentifierPair &other) const
Definition: TypeObject.h:3319
CollectionTypeFlag collection_flag
Definition: TypeObject.h:2405
CollectionElementFlag key_flags
Definition: TypeObject.h:563
MemberFlag EnumeratedLiteralFlag
Definition: TypeObject.h:382
bool operator==(const MinimalAliasHeader &) const
Definition: TypeObject.h:2030
#define OPENDDS_WSTRING
const TypeFlag IS_APPENDABLE
Definition: TypeObject.h:401
bool operator<(const AppliedAnnotationParameter &other) const
Definition: TypeObject.h:1119
bool operator!=(const CompleteEnumeratedHeader &other) const
Definition: TypeObject.h:2608
Sequence< ACE_CDR::Long > UnionCaseLabelSeq
Definition: TypeObject.h:1534
MinimalCollectionHeader(const CommonCollectionHeader &a_common)
Definition: TypeObject.h:2236
bool operator!=(const CommonUnionMember &other) const
Definition: TypeObject.h:1562
bool to_type_object(const unsigned char *buffer, size_t size, XTypes::TypeObject &to)
const EquivalenceKind EK_MINIMAL
Definition: TypeObject.h:205
const TypeIdentifierKind TI_STRING16_SMALL
Definition: TypeObject.h:257
Sequence< AppliedAnnotation > AppliedAnnotationSeq
Definition: TypeObject.h:1165
typedef OPENDDS_MAP(TypeIdentifier, TypeObject) TypeMap
bool operator==(const CompleteBitflag &other) const
Definition: TypeObject.h:2718
bool operator<(const PlainArrayLElemDefn &other) const
Definition: TypeObject.h:866
const MemberFlag IS_DEFAULT
Definition: TypeObject.h:376
bool name_hash_not_equal(const NameHash &x, const NameHash &y)
Definition: TypeObject.h:306
bool operator==(const MinimalAnnotationParameter &other) const
Definition: TypeObject.h:1854
bool operator!=(const CompleteBitfield &other) const
Definition: TypeObject.h:2831
const TypeIdentifierKind TI_STRONGLY_CONNECTED_COMPONENT
Definition: TypeObject.h:269
CompleteAnnotationHeader header
Definition: TypeObject.h:1897
bool operator!=(const MinimalAnnotationHeader &other) const
Definition: TypeObject.h:1889
bool operator==(const CompleteEnumeratedHeader &other) const
Definition: TypeObject.h:2603
Sequence< TypeObject > TypeObjectSeq
Definition: TypeObject.h:3277
const TypeKind TK_ARRAY
Definition: TypeObject.h:249
MemberFlag BitflagFlag
Definition: TypeObject.h:385
const TypeKind TK_UINT8
Definition: TypeObject.h:226
bool operator==(const CompleteBitsetType &other) const
Definition: TypeObject.h:2898
bool operator!=(const MinimalAnnotationType &other) const
Definition: TypeObject.h:1929
bool operator==(const CompleteAliasHeader &other) const
Definition: TypeObject.h:2016
ACE_WCHAR_T WChar
bool operator==(const CommonEnumeratedHeader &other) const
Definition: TypeObject.h:2580
ACE_CDR::ULong LBound
Definition: TypeObject.h:312
TypeFlag StructTypeFlag
Definition: TypeObject.h:407
void activate(T &obj_ref, PortableServer::POA_ptr poa, PortableServer::ServantBase *servant, TAO_EC_Object_Deactivator &suggested_object_deactivator)
bool operator==(const MinimalEnumeratedType &other) const
Definition: TypeObject.h:2681
Sequence< CompleteEnumeratedLiteral > CompleteEnumeratedLiteralSeq
Definition: TypeObject.h:2536
bool operator!=(const CompleteTypeDetail &other) const
Definition: TypeObject.h:1422
bool operator==(const TypeObject &other) const
Definition: TypeObject.h:3260
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
AnnotationParameterValue default_value
Definition: TypeObject.h:1847
const TypeKind TK_NONE
Definition: TypeObject.h:213
MinimalEnumeratedHeader MinimalBitmaskHeader
Definition: TypeObject.h:2755
CommonStructMember(const MemberId &a_member_id, const StructMemberFlag &a_member_flags, const TypeIdentifier &a_member_type_id)
Definition: TypeObject.h:1229
const TypeKind TK_MAP
Definition: TypeObject.h:250
CompleteCollectionElement element
Definition: TypeObject.h:2377
Optional< AppliedAnnotationSeq > ann_custom
Definition: TypeObject.h:2100
unsigned char_value(CharType value)
Definition: ValueHelper.h:58
bool operator!=(const CommonArrayHeader &other) const
Definition: TypeObject.h:2325
bool Boolean
Sequence< MinimalUnionMember > MinimalUnionMemberSeq
Definition: TypeObject.h:1628
bool operator!=(const MinimalEnumeratedType &other) const
Definition: TypeObject.h:2686
LM_ERROR
PlainCollectionHeader header
Definition: TypeObject.h:542
TypeIdentifier makeTypeIdentifier(const TypeObject &type_object, const DCPS::Encoding *encoding_option)
Definition: TypeObject.cpp:254
The Internal API and Implementation of OpenDDS.
Definition: AddressCache.h:28
CompleteTypeObject complete
Definition: TypeObject.h:3243
MinimalStructMember(const CommonStructMember &a_common, const MinimalMemberDetail &a_detail)
Definition: TypeObject.h:1345
bool operator!=(const MinimalBitflag &other) const
Definition: TypeObject.h:2740
bool operator==(const MinimalAnnotationHeader &) const
Definition: TypeObject.h:1884
CollectionTypeFlag collection_flag
Definition: TypeObject.h:2457
Sequence< MinimalEnumeratedLiteral > MinimalEnumeratedLiteralSeq
Definition: TypeObject.h:2567
#define ACE_UINT32_MAX
TypeIdentifierWithDependencies minimal
Definition: TypeObject.h:3373
CompleteDiscriminatorMember discriminator
Definition: TypeObject.h:1746
CollectionElementFlag key_flags
Definition: TypeObject.h:590
ACE_CDR::ULong length() const
Definition: TypeObject.h:167
MinimalMemberDetail(ACE_CDR::Octet a, ACE_CDR::Octet b, ACE_CDR::Octet c, ACE_CDR::Octet d)
Definition: TypeObject.h:1284
PlainArraySElemDefn(const PlainCollectionHeader &a_header, const SBoundSeq &a_array_bound_seq, const TypeIdentifier &a_element_identifier)
Definition: TypeObject.h:530
const MemberFlag IS_EXTERNAL
Definition: TypeObject.h:371
Sequence< TypeIdentifierPair > TypeIdentifierPairSeq
Definition: TypeObject.h:3329
Fake_TAO_Array_Forany_T< EquivalenceHash, EquivalenceHash_slice, EquivalenceHash_tag > EquivalenceHash_forany
Definition: TypeObject.h:290
CompleteEnumeratedHeader header
Definition: TypeObject.h:2637
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
CompleteTypeObject(const CompleteStructType &struct_)
Definition: TypeObject.h:3005
MinimalTypeObject minimal
Definition: TypeObject.h:3244
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
bool operator<(const Sequence &other) const
Definition: TypeObject.h:187
bool operator<(const GUID_t &lhs, const GUID_t &rhs)
Definition: GuidUtils.h:80
const TypeKind TK_BITSET
Definition: TypeObject.h:245
MinimalEnumeratedHeader header
Definition: TypeObject.h:2666
ACE_CDR::Octet NameHash[4]
Definition: TypeObject.h:296
bool operator==(const CommonDiscriminatorMember &other) const
Definition: TypeObject.h:1644
CommonArrayHeader(const LBoundSeq &a_bound_seq)
Definition: TypeObject.h:2317
bool operator<(const StronglyConnectedComponentId &other) const
Definition: TypeObject.h:632
bool is_basic(TypeKind tk)
Sequence< AppliedAnnotationParameter > AppliedAnnotationParameterSeq
Definition: TypeObject.h:1135
bool operator==(const MinimalBitfield &other) const
Definition: TypeObject.h:2848
bool has_type_object(const TypeIdentifier &ti)
Definition: TypeObject.cpp:461
const_iterator begin() const
Definition: TypeObject.h:195
#define OPENDDS_UNION_MEMBER(T, N)
Definition: TypeObject.h:1067
MinimalCollectionElement(const CommonCollectionElement &a_common)
Definition: TypeObject.h:2174
CompleteTypeObject(const CompleteBitsetType &bitset)
Definition: TypeObject.h:3015
bool operator<(const AppliedAnnotation &other) const
Definition: TypeObject.h:1149