OpenDDS  Snapshot(2023/04/28-20:55)
TypeObject.cpp
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 #include "DCPS/DdsDcps_pch.h" //Only the _pch include should start with DCPS/
7 #include "TypeObject.h"
8 
9 
10 #include "dds/DCPS/debug.h"
11 #include "dds/DCPS/Hash.h"
14 
15 #include <ace/OS_NS_string.h>
16 
17 #include <cstring>
18 
20 
21 namespace OpenDDS {
22 namespace XTypes {
23 
24 using DCPS::Encoding;
26 
28 {
30  return encoding;
31 }
32 
34 {
35  return DCPS::to_dds_string(&equivalence_hash[0], sizeof equivalence_hash);
36 }
37 
39 {
40  unsigned char result[16];
41  DCPS::MD5Hash(result, name.c_str(), name.size());
42 
43  std::memcpy(name_hash, result, sizeof name_hash);
44 }
45 
46 #ifdef min
47 #undef min
48 #endif
49 
50 #ifdef max
51 #undef max
52 #endif
53 
57  const Optional<DCPS::String>& a_hash_id)
58  : unit(a_unit)
59  , min(a_min)
60  , max(a_max)
61  , hash_id(a_hash_id)
62 {}
63 
65  : kind_(kind)
66  , active_(0)
67 {
68  activate();
69 }
70 
72 {
73 #define OPENDDS_BRANCH_ACTIVATE(T, N) \
74  active_ = new(N ## _) T(); \
75  if (other) N() = other->N(); \
76  break
77 
78  switch (kind_) {
79  case TI_STRING8_SMALL:
80  case TI_STRING16_SMALL:
82  case TI_STRING8_LARGE:
83  case TI_STRING16_LARGE:
93  case TI_PLAIN_MAP_SMALL:
95  case TI_PLAIN_MAP_LARGE:
99  case EK_COMPLETE:
100  case EK_MINIMAL:
101  active_ = equivalence_hash_;
102  if (other) {
103  std::memcpy(equivalence_hash(), other->equivalence_hash(), sizeof(EquivalenceHash));
104  }
105  break;
106  case TK_NONE:
107  case TK_BOOLEAN:
108  case TK_BYTE:
109  case TK_INT16:
110  case TK_INT32:
111  case TK_INT64:
112  case TK_UINT16:
113  case TK_UINT32:
114  case TK_UINT64:
115  case TK_FLOAT32:
116  case TK_FLOAT64:
117  case TK_FLOAT128:
118  case TK_INT8:
119  case TK_UINT8:
120  case TK_CHAR8:
121  case TK_CHAR16:
122  break; // no-op, no member selected
123  default:
125  }
126 }
127 
129  : kind_(other.kind_)
130  , active_(0)
131 {
132  activate(&other);
133 }
134 
136 {
137  if (!active_) {
138  return;
139  }
140 #define OPENDDS_BRANCH_RESET(T) static_cast<T*>(active_)->~T(); break
141  switch (kind_) {
142  case TI_STRING8_SMALL:
143  case TI_STRING16_SMALL:
145  case TI_STRING8_LARGE:
146  case TI_STRING16_LARGE:
156  case TI_PLAIN_MAP_SMALL:
158  case TI_PLAIN_MAP_LARGE:
162  case EK_COMPLETE:
163  case EK_MINIMAL:
164  break; // no-op, data is just an array of octets
165  case TK_NONE:
166  case TK_BOOLEAN:
167  case TK_BYTE:
168  case TK_INT16:
169  case TK_INT32:
170  case TK_INT64:
171  case TK_UINT16:
172  case TK_UINT32:
173  case TK_UINT64:
174  case TK_FLOAT32:
175  case TK_FLOAT64:
176  case TK_FLOAT128:
177  case TK_INT8:
178  case TK_UINT8:
179  case TK_CHAR8:
180  case TK_CHAR16:
181  break; // no-op, no member selected
182  default:
184  }
185 }
186 
188 {
189  if (&other == this) {
190  return *this;
191  }
192  reset();
193  kind_ = other.kind_;
194  activate(&other);
195  return *this;
196 }
197 
199  : kind_(k)
200 {
201  activate();
202  string_sdefn() = sdefn;
203 }
204 
206  : kind_(k)
207 {
208  activate();
209  string_ldefn() = ldefn;
210 }
211 
213  : kind_(k)
214 {
215  activate();
216  seq_sdefn() = sdefn;
217 }
218 
220  : kind_(k)
221 {
222  activate();
223  seq_ldefn() = ldefn;
224 }
225 
227  : kind_(k)
228 {
229  activate();
230  array_sdefn() = sdefn;
231 }
232 
234  : kind_(k)
235 {
236  activate();
237  array_ldefn() = ldefn;
238 }
239 
241  : kind_(k)
242 {
243  activate();
244  std::memcpy(equivalence_hash(), eh.eh_, sizeof eh.eh_);
245 }
246 
248  : kind_(k)
249 {
250  activate();
251  sc_component_id() = id;
252 }
253 
254 TypeIdentifier makeTypeIdentifier(const TypeObject& type_object, const DCPS::Encoding* encoding_option)
255 {
256  OPENDDS_ASSERT(type_object.kind == EK_MINIMAL || type_object.kind == EK_COMPLETE);
257 
258  const Encoding& encoding = encoding_option ? *encoding_option : get_typeobject_encoding();
259  size_t size = serialized_size(encoding, type_object);
260  ACE_Message_Block buff(size);
261  DCPS::Serializer ser(&buff, encoding);
262  ser << type_object;
263 
264  unsigned char result[16];
265  DCPS::MD5Hash(result, buff.rd_ptr(), buff.length());
266 
267  // First 14 bytes of MD5 of the serialized TypeObject using XCDR
268  // version 2 with Little Endian encoding
269  TypeIdentifier ti(type_object.kind);
270  std::memcpy(ti.equivalence_hash(), result, sizeof(EquivalenceHash));
271 
272  return ti;
273 }
274 
276  : kind_(kind)
277  , active_(0)
278 {
279  activate();
280 }
281 
283  : kind_(other.kind_)
284  , active_(0)
285 {
286  activate(&other);
287 }
288 
290 {
291  if (&other == this) {
292  return *this;
293  }
294  reset();
295  kind_ = other.kind_;
296  activate(&other);
297  return *this;
298 }
299 
301 {
302 #define OPENDDS_BRANCH_ACTIVATE(T, N) \
303  active_ = new(N ## _) T(); \
304  if (other) N() = other->N(); \
305  break
306 
307  switch (kind_) {
308  case TK_NONE:
309  break; // no-op, no member selected
310  case TK_BOOLEAN:
312  case TK_BYTE:
314  case TK_INT8:
316  case TK_UINT8:
318  case TK_INT16:
320  case TK_UINT16:
322  case TK_INT32:
324  case TK_UINT32:
326  case TK_INT64:
328  case TK_UINT64:
330  case TK_FLOAT32:
331  OPENDDS_BRANCH_ACTIVATE(ACE_CDR::Float, float32_value);
332  case TK_FLOAT64:
334  case TK_FLOAT128:
336  case TK_CHAR8:
338  case TK_CHAR16:
340  case TK_ENUM:
341  OPENDDS_BRANCH_ACTIVATE(ACE_CDR::Long, enumerated_value);
342  case TK_STRING8:
343  OPENDDS_BRANCH_ACTIVATE(OPENDDS_STRING, string8_value);
344  case TK_STRING16:
345  OPENDDS_BRANCH_ACTIVATE(OPENDDS_WSTRING, string16_value);
346  default:
348  }
349 }
350 
352 {
353  using DCPS::String;
354  using DCPS::WString;
355 
356  if (!active_) {
357  return;
358  }
359  #define OPENDDS_BRANCH_RESET(T) static_cast<T*>(active_)->~T(); break
360  switch (kind_) {
361  case TK_NONE:
362  break; // no-op, no member selected
363  case TK_BOOLEAN:
364  case TK_BYTE:
365  case TK_INT8:
366  case TK_UINT8:
367  case TK_INT16:
368  case TK_UINT16:
369  case TK_INT32:
370  case TK_UINT32:
371  case TK_INT64:
372  case TK_UINT64:
373  case TK_FLOAT32:
374  case TK_FLOAT64:
375  case TK_FLOAT128:
376  case TK_CHAR8:
377  case TK_CHAR16:
378  case TK_ENUM:
379  break; // primitive type, no destructor.
380  case TK_STRING8:
382  case TK_STRING16:
384  default:
386  }
387 }
388 
390 {
391  ACE_CDR::ULong name_hash;
392 
393  unsigned char result[16];
394  DCPS::MD5Hash(result, name.c_str(), name.size());
395 
396  std::memcpy(&name_hash, result, sizeof name_hash);
397  return name_hash & DCPS::Serializer::MEMBER_ID_MASK;
398 }
399 
401 {
402  unsigned char result[16];
403  DCPS::MD5Hash(result, name.c_str(), name.size());
404 
405  std::memcpy(&name_hash, result, sizeof name_hash);
406 }
407 
409 {
410  switch (ti.kind()) {
411  case TK_BOOLEAN:
412  case TK_BYTE:
413  case TK_INT16:
414  case TK_INT32:
415  case TK_INT64:
416  case TK_UINT16:
417  case TK_UINT32:
418  case TK_UINT64:
419  case TK_FLOAT32:
420  case TK_FLOAT64:
421  case TK_FLOAT128:
422  case TK_INT8:
423  case TK_UINT8:
424  case TK_CHAR8:
425  case TK_CHAR16:
426  case TI_STRING8_SMALL:
427  case TI_STRING8_LARGE:
428  case TI_STRING16_SMALL:
429  case TI_STRING16_LARGE:
430  return true;
432  return ti.seq_sdefn().header.equiv_kind == EK_BOTH;
434  return ti.seq_ldefn().header.equiv_kind == EK_BOTH;
436  return ti.array_sdefn().header.equiv_kind == EK_BOTH;
438  return ti.array_ldefn().header.equiv_kind == EK_BOTH;
439  case TI_PLAIN_MAP_SMALL:
440  return ti.map_sdefn().header.equiv_kind == EK_BOTH;
441  case TI_PLAIN_MAP_LARGE:
442  return ti.map_ldefn().header.equiv_kind == EK_BOTH;
443  }
444  return false;
445 }
446 
448 {
449  switch (ti.kind()) {
454  case TI_PLAIN_MAP_SMALL:
455  case TI_PLAIN_MAP_LARGE:
456  return true;
457  }
458  return false;
459 }
460 
462 {
463  return !is_fully_descriptive(ti) && !is_plain_collection(ti) &&
464  ti.kind() != TK_NONE;
465 }
466 
467 namespace {
468 template <typename T>
469 void compute_dependencies(const TypeMap& type_map,
470  const Sequence<T>& type,
471  OPENDDS_SET(TypeIdentifier)& dependencies);
472 
473 void compute_dependencies(const TypeMap& type_map,
474  const CommonAliasBody& type,
475  OPENDDS_SET(TypeIdentifier)& dependencies)
476 {
477  compute_dependencies(type_map, type.related_type, dependencies);
478 }
479 
480 void compute_dependencies(const TypeMap& type_map,
481  const MinimalAliasBody& type,
482  OPENDDS_SET(TypeIdentifier)& dependencies)
483 {
484  compute_dependencies(type_map, type.common, dependencies);
485 }
486 
487 void compute_dependencies(const TypeMap& type_map,
488  const MinimalAliasType& type,
489  OPENDDS_SET(TypeIdentifier)& dependencies)
490 {
491  compute_dependencies(type_map, type.body, dependencies);
492 }
493 
494 void compute_dependencies(const TypeMap& type_map,
495  const AppliedAnnotation& ann,
496  OPENDDS_SET(TypeIdentifier)& dependencies)
497 {
498  compute_dependencies(type_map, ann.annotation_typeid, dependencies);
499 }
500 
501 void compute_dependencies(const TypeMap& type_map,
502  const Optional<AppliedAnnotationSeq>& ann_seq,
503  OPENDDS_SET(TypeIdentifier)& dependencies)
504 {
505  if (ann_seq) {
506  compute_dependencies(type_map, ann_seq.value(), dependencies);
507  }
508 }
509 
510 void compute_dependencies(const TypeMap& type_map,
511  const CompleteTypeDetail& type_detail,
512  OPENDDS_SET(TypeIdentifier)& dependencies)
513 {
514  compute_dependencies(type_map, type_detail.ann_custom, dependencies);
515 }
516 
517 void compute_dependencies(const TypeMap& type_map,
519  OPENDDS_SET(TypeIdentifier)& dependencies)
520 {
521  compute_dependencies(type_map, header.detail, dependencies);
522 }
523 
524 void compute_dependencies(const TypeMap& type_map,
525  const CompleteAliasBody& body,
526  OPENDDS_SET(TypeIdentifier)& dependencies)
527 {
528  compute_dependencies(type_map, body.common, dependencies);
529  compute_dependencies(type_map, body.ann_custom, dependencies);
530 }
531 
532 void compute_dependencies(const TypeMap& type_map,
533  const CompleteAliasType& type,
534  OPENDDS_SET(TypeIdentifier)& dependencies)
535 {
536  compute_dependencies(type_map, type.header, dependencies);
537  compute_dependencies(type_map, type.body, dependencies);
538 }
539 
540 void compute_dependencies(const TypeMap& type_map,
541  const CommonAnnotationParameter& type,
542  OPENDDS_SET(TypeIdentifier)& dependencies)
543 {
544  compute_dependencies(type_map, type.member_type_id, dependencies);
545 }
546 
547 void compute_dependencies(const TypeMap& type_map,
548  const MinimalAnnotationParameter& type,
549  OPENDDS_SET(TypeIdentifier)& dependencies)
550 {
551  compute_dependencies(type_map, type.common, dependencies);
552 }
553 
554 void compute_dependencies(const TypeMap& type_map,
555  const MinimalAnnotationType& type,
556  OPENDDS_SET(TypeIdentifier)& dependencies)
557 {
558  compute_dependencies(type_map, type.member_seq, dependencies);
559 }
560 
561 void compute_dependencies(const TypeMap& type_map,
562  const CompleteAnnotationParameter& type,
563  OPENDDS_SET(TypeIdentifier)& dependencies)
564 {
565  compute_dependencies(type_map, type.common, dependencies);
566 }
567 
568 void compute_dependencies(const TypeMap& type_map,
569  const CompleteAnnotationType& type,
570  OPENDDS_SET(TypeIdentifier)& dependencies)
571 {
572  compute_dependencies(type_map, type.member_seq, dependencies);
573 }
574 
575 void compute_dependencies(const TypeMap& type_map,
576  const MinimalStructHeader& type,
577  OPENDDS_SET(TypeIdentifier)& dependencies)
578 {
579  compute_dependencies(type_map, type.base_type, dependencies);
580 }
581 
582 void compute_dependencies(const TypeMap& type_map,
583  const CommonStructMember& type,
584  OPENDDS_SET(TypeIdentifier)& dependencies)
585 {
586  compute_dependencies(type_map, type.member_type_id, dependencies);
587 }
588 
589 void compute_dependencies(const TypeMap& type_map,
590  const MinimalStructMember& type,
591  OPENDDS_SET(TypeIdentifier)& dependencies)
592 {
593  compute_dependencies(type_map, type.common, dependencies);
594 }
595 
596 void compute_dependencies(const TypeMap& type_map,
597  const MinimalStructType& type,
598  OPENDDS_SET(TypeIdentifier)& dependencies)
599 {
600  compute_dependencies(type_map, type.header, dependencies);
601  compute_dependencies(type_map, type.member_seq, dependencies);
602 }
603 
604 void compute_dependencies(const TypeMap& type_map,
605  const CompleteStructHeader& header,
606  OPENDDS_SET(TypeIdentifier)& dependencies)
607 {
608  compute_dependencies(type_map, header.base_type, dependencies);
609  compute_dependencies(type_map, header.detail, dependencies);
610 }
611 
612 void compute_dependencies(const TypeMap& type_map,
613  const CompleteMemberDetail& detail,
614  OPENDDS_SET(TypeIdentifier)& dependencies)
615 {
616  compute_dependencies(type_map, detail.ann_custom, dependencies);
617 }
618 
619 void compute_dependencies(const TypeMap& type_map,
620  const CompleteStructMember& member,
621  OPENDDS_SET(TypeIdentifier)& dependencies)
622 {
623  compute_dependencies(type_map, member.common, dependencies);
624  compute_dependencies(type_map, member.detail, dependencies);
625 }
626 
627 void compute_dependencies(const TypeMap& type_map,
628  const CompleteStructType& type,
629  OPENDDS_SET(TypeIdentifier)& dependencies)
630 {
631  compute_dependencies(type_map, type.header, dependencies);
632  compute_dependencies(type_map, type.member_seq, dependencies);
633 }
634 
635 void compute_dependencies(const TypeMap& type_map,
636  const CommonDiscriminatorMember& type,
637  OPENDDS_SET(TypeIdentifier)& dependencies)
638 {
639  compute_dependencies(type_map, type.type_id, dependencies);
640 }
641 
642 void compute_dependencies(const TypeMap& type_map,
643  const MinimalDiscriminatorMember& type,
644  OPENDDS_SET(TypeIdentifier)& dependencies)
645 {
646  compute_dependencies(type_map, type.common, dependencies);
647 }
648 
649 void compute_dependencies(const TypeMap& type_map,
650  const CommonUnionMember& type,
651  OPENDDS_SET(TypeIdentifier)& dependencies)
652 {
653  compute_dependencies(type_map, type.type_id, dependencies);
654 }
655 
656 void compute_dependencies(const TypeMap& type_map,
657  const MinimalUnionMember& type,
658  OPENDDS_SET(TypeIdentifier)& dependencies)
659 {
660  compute_dependencies(type_map, type.common, dependencies);
661 }
662 
663 void compute_dependencies(const TypeMap& type_map,
664  const MinimalUnionType& type,
665  OPENDDS_SET(TypeIdentifier)& dependencies)
666 {
667  compute_dependencies(type_map, type.discriminator, dependencies);
668  compute_dependencies(type_map, type.member_seq, dependencies);
669 }
670 
671 void compute_dependencies(const TypeMap& type_map,
672  const CompleteUnionHeader& header,
673  OPENDDS_SET(TypeIdentifier)& dependencies)
674 {
675  compute_dependencies(type_map, header.detail, dependencies);
676 }
677 
678 void compute_dependencies(const TypeMap& type_map,
679  const CompleteDiscriminatorMember& type,
680  OPENDDS_SET(TypeIdentifier)& dependencies)
681 {
682  compute_dependencies(type_map, type.common, dependencies);
683  compute_dependencies(type_map, type.ann_custom, dependencies);
684 }
685 
686 void compute_dependencies(const TypeMap& type_map,
687  const CompleteUnionMember& type,
688  OPENDDS_SET(TypeIdentifier)& dependencies)
689 {
690  compute_dependencies(type_map, type.common, dependencies);
691  compute_dependencies(type_map, type.detail, dependencies);
692 }
693 
694 void compute_dependencies(const TypeMap& type_map,
695  const CompleteUnionType& type,
696  OPENDDS_SET(TypeIdentifier)& dependencies)
697 {
698  compute_dependencies(type_map, type.header, dependencies);
699  compute_dependencies(type_map, type.discriminator, dependencies);
700  compute_dependencies(type_map, type.member_seq, dependencies);
701 }
702 
703 void compute_dependencies(const TypeMap&,
704  const MinimalBitsetType&,
706 {
707  // Doesn't have any dependencies.
708 }
709 
710 void compute_dependencies(const TypeMap& type_map,
711  const CompleteBitsetHeader& header,
712  OPENDDS_SET(TypeIdentifier)& dependencies)
713 {
714  compute_dependencies(type_map, header.detail, dependencies);
715 }
716 
717 void compute_dependencies(const TypeMap& type_map,
718  const CompleteBitfield& field,
719  OPENDDS_SET(TypeIdentifier)& dependencies)
720 {
721  compute_dependencies(type_map, field.detail, dependencies);
722 }
723 
724 void compute_dependencies(const TypeMap& type_map,
725  const CompleteBitsetType& type,
726  OPENDDS_SET(TypeIdentifier)& dependencies)
727 {
728  compute_dependencies(type_map, type.header, dependencies);
729  compute_dependencies(type_map, type.field_seq, dependencies);
730 }
731 
732 void compute_dependencies(const TypeMap& type_map,
733  const CommonCollectionElement& type,
734  OPENDDS_SET(TypeIdentifier)& dependencies)
735 {
736  compute_dependencies(type_map, type.type, dependencies);
737 }
738 
739 void compute_dependencies(const TypeMap& type_map,
740  const MinimalCollectionElement& type,
741  OPENDDS_SET(TypeIdentifier)& dependencies)
742 {
743  compute_dependencies(type_map, type.common, dependencies);
744 }
745 
746 void compute_dependencies(const TypeMap& type_map,
747  const MinimalSequenceType& type,
748  OPENDDS_SET(TypeIdentifier)& dependencies)
749 {
750  compute_dependencies(type_map, type.element, dependencies);
751 }
752 
753 void compute_dependencies(const TypeMap& type_map,
754  const CompleteCollectionHeader& header,
755  OPENDDS_SET(TypeIdentifier)& dependencies)
756 {
757  if (header.detail) {
758  compute_dependencies(type_map, header.detail.value(), dependencies);
759  }
760 }
761 
762 void compute_dependencies(const TypeMap& type_map,
763  const CompleteElementDetail& detail,
764  OPENDDS_SET(TypeIdentifier)& dependencies)
765 {
766  compute_dependencies(type_map, detail.ann_custom, dependencies);
767 }
768 
769 void compute_dependencies(const TypeMap& type_map,
770  const CompleteCollectionElement& element,
771  OPENDDS_SET(TypeIdentifier)& dependencies)
772 {
773  compute_dependencies(type_map, element.common, dependencies);
774  compute_dependencies(type_map, element.detail, dependencies);
775 }
776 
777 void compute_dependencies(const TypeMap& type_map,
778  const CompleteSequenceType& type,
779  OPENDDS_SET(TypeIdentifier)& dependencies)
780 {
781  compute_dependencies(type_map, type.header, dependencies);
782  compute_dependencies(type_map, type.element, dependencies);
783 }
784 
785 void compute_dependencies(const TypeMap& type_map,
786  const MinimalArrayType& type,
787  OPENDDS_SET(TypeIdentifier)& dependencies)
788 {
789  compute_dependencies(type_map, type.element, dependencies);
790 }
791 
792 void compute_dependencies(const TypeMap& type_map,
793  const CompleteArrayHeader& header,
794  OPENDDS_SET(TypeIdentifier)& dependencies)
795 {
796  compute_dependencies(type_map, header.detail, dependencies);
797 }
798 
799 void compute_dependencies(const TypeMap& type_map,
800  const CompleteArrayType& type,
801  OPENDDS_SET(TypeIdentifier)& dependencies)
802 {
803  compute_dependencies(type_map, type.header, dependencies);
804  compute_dependencies(type_map, type.element, dependencies);
805 }
806 
807 void compute_dependencies(const TypeMap& type_map,
808  const MinimalMapType& type,
809  OPENDDS_SET(TypeIdentifier)& dependencies)
810 {
811  compute_dependencies(type_map, type.key, dependencies);
812  compute_dependencies(type_map, type.element, dependencies);
813 }
814 
815 void compute_dependencies(const TypeMap& type_map,
816  const CompleteMapType& type,
817  OPENDDS_SET(TypeIdentifier)& dependencies)
818 {
819  compute_dependencies(type_map, type.header, dependencies);
820  compute_dependencies(type_map, type.key, dependencies);
821  compute_dependencies(type_map, type.element, dependencies);
822 }
823 
824 void compute_dependencies(const TypeMap&,
825  const MinimalEnumeratedType&,
827 {
828  // Doesn't have any dependencies.
829 }
830 
831 void compute_dependencies(const TypeMap& type_map,
832  const CompleteEnumeratedHeader& header,
833  OPENDDS_SET(TypeIdentifier)& dependencies)
834 {
835  compute_dependencies(type_map, header.detail, dependencies);
836 }
837 
838 void compute_dependencies(const TypeMap& type_map,
839  const CompleteEnumeratedLiteral& literal,
840  OPENDDS_SET(TypeIdentifier)& dependencies)
841 {
842  compute_dependencies(type_map, literal.detail, dependencies);
843 }
844 
845 void compute_dependencies(const TypeMap& type_map,
846  const CompleteEnumeratedType& type,
847  OPENDDS_SET(TypeIdentifier)& dependencies)
848 {
849  compute_dependencies(type_map, type.header, dependencies);
850  compute_dependencies(type_map, type.literal_seq, dependencies);
851 }
852 
853 void compute_dependencies(const TypeMap&,
854  const MinimalBitmaskType&,
856 {
857  // Doesn't have any dependencies.
858 }
859 
860 void compute_dependencies(const TypeMap& type_map,
861  const CompleteBitflag& bitflag,
862  OPENDDS_SET(TypeIdentifier)& dependencies)
863 {
864  compute_dependencies(type_map, bitflag.detail, dependencies);
865 }
866 
867 void compute_dependencies(const TypeMap& type_map,
868  const CompleteBitmaskType& type,
869  OPENDDS_SET(TypeIdentifier)& dependencies)
870 {
871  compute_dependencies(type_map, type.header, dependencies);
872  compute_dependencies(type_map, type.flag_seq, dependencies);
873 }
874 
875 void compute_dependencies(const TypeMap& type_map,
876  const MinimalTypeObject& type_object,
877  OPENDDS_SET(TypeIdentifier)& dependencies)
878 {
879  switch (type_object.kind) {
880  case TK_ALIAS:
881  compute_dependencies(type_map, type_object.alias_type, dependencies);
882  break;
883  case TK_ANNOTATION:
884  compute_dependencies(type_map, type_object.annotation_type, dependencies);
885  break;
886  case TK_STRUCTURE:
887  compute_dependencies(type_map, type_object.struct_type, dependencies);
888  break;
889  case TK_UNION:
890  compute_dependencies(type_map, type_object.union_type, dependencies);
891  break;
892  case TK_BITSET:
893  compute_dependencies(type_map, type_object.bitset_type, dependencies);
894  break;
895  case TK_SEQUENCE:
896  compute_dependencies(type_map, type_object.sequence_type, dependencies);
897  break;
898  case TK_ARRAY:
899  compute_dependencies(type_map, type_object.array_type, dependencies);
900  break;
901  case TK_MAP:
902  compute_dependencies(type_map, type_object.map_type, dependencies);
903  break;
904  case TK_ENUM:
905  compute_dependencies(type_map, type_object.enumerated_type, dependencies);
906  break;
907  case TK_BITMASK:
908  compute_dependencies(type_map, type_object.bitmask_type, dependencies);
909  break;
910  }
911 }
912 
913 void compute_dependencies(const TypeMap& type_map,
914  const CompleteTypeObject& type_object,
915  OPENDDS_SET(TypeIdentifier)& dependencies)
916 {
917  switch (type_object.kind) {
918  case TK_ALIAS:
919  compute_dependencies(type_map, type_object.alias_type, dependencies);
920  break;
921  case TK_ANNOTATION:
922  compute_dependencies(type_map, type_object.annotation_type, dependencies);
923  break;
924  case TK_STRUCTURE:
925  compute_dependencies(type_map, type_object.struct_type, dependencies);
926  break;
927  case TK_UNION:
928  compute_dependencies(type_map, type_object.union_type, dependencies);
929  break;
930  case TK_BITSET:
931  compute_dependencies(type_map, type_object.bitset_type, dependencies);
932  break;
933  case TK_SEQUENCE:
934  compute_dependencies(type_map, type_object.sequence_type, dependencies);
935  break;
936  case TK_ARRAY:
937  compute_dependencies(type_map, type_object.array_type, dependencies);
938  break;
939  case TK_MAP:
940  compute_dependencies(type_map, type_object.map_type, dependencies);
941  break;
942  case TK_ENUM:
943  compute_dependencies(type_map, type_object.enumerated_type, dependencies);
944  break;
945  case TK_BITMASK:
946  compute_dependencies(type_map, type_object.bitmask_type, dependencies);
947  break;
948  }
949 }
950 
951 void compute_dependencies(const TypeMap& type_map,
952  const TypeObject& type_object,
953  OPENDDS_SET(TypeIdentifier)& dependencies)
954 {
955  switch (type_object.kind) {
956  case EK_COMPLETE:
957  compute_dependencies(type_map, type_object.complete, dependencies);
958  break;
959  case EK_MINIMAL:
960  compute_dependencies(type_map, type_object.minimal, dependencies);
961  break;
962  }
963 }
964 
965 void compute_dependencies(const TypeMap&,
966  const StringSTypeDefn&,
968 {
969  // Do nothing.
970 }
971 
972 void compute_dependencies(const TypeMap&,
973  const StringLTypeDefn&,
975 {
976  // Do nothing.
977 }
978 
979 void compute_dependencies(const TypeMap&,
980  const PlainCollectionHeader&,
982 {
983  // Do nothing.
984 }
985 
986 void compute_dependencies(const TypeMap& type_map,
987  const PlainSequenceSElemDefn& type,
988  OPENDDS_SET(TypeIdentifier)& dependencies)
989 {
990  compute_dependencies(type_map, type.header, dependencies);
991  compute_dependencies(type_map, *type.element_identifier, dependencies);
992 }
993 
994 void compute_dependencies(const TypeMap& type_map,
995  const PlainSequenceLElemDefn& type,
996  OPENDDS_SET(TypeIdentifier)& dependencies)
997 {
998  compute_dependencies(type_map, type.header, dependencies);
999  compute_dependencies(type_map, *type.element_identifier, dependencies);
1000 }
1001 
1002 void compute_dependencies(const TypeMap& type_map,
1003  const PlainArraySElemDefn& type,
1004  OPENDDS_SET(TypeIdentifier)& dependencies)
1005 {
1006  compute_dependencies(type_map, type.header, dependencies);
1007  compute_dependencies(type_map, *type.element_identifier, dependencies);
1008 }
1009 
1010 void compute_dependencies(const TypeMap& type_map,
1011  const PlainArrayLElemDefn& type,
1012  OPENDDS_SET(TypeIdentifier)& dependencies)
1013 {
1014  compute_dependencies(type_map, type.header, dependencies);
1015  compute_dependencies(type_map, *type.element_identifier, dependencies);
1016 }
1017 
1018 void compute_dependencies(const TypeMap& type_map,
1019  const PlainMapSTypeDefn& type,
1020  OPENDDS_SET(TypeIdentifier)& dependencies)
1021 {
1022  compute_dependencies(type_map, type.header, dependencies);
1023  compute_dependencies(type_map, *type.element_identifier, dependencies);
1024  compute_dependencies(type_map, *type.key_identifier, dependencies);
1025 }
1026 
1027 void compute_dependencies(const TypeMap& type_map,
1028  const PlainMapLTypeDefn& type,
1029  OPENDDS_SET(TypeIdentifier)& dependencies)
1030 {
1031  compute_dependencies(type_map, type.header, dependencies);
1032  compute_dependencies(type_map, *type.element_identifier, dependencies);
1033  compute_dependencies(type_map, *type.key_identifier, dependencies);
1034 }
1035 
1036 void compute_dependencies(const TypeMap&,
1039 {
1040  // Do nothing.
1041 }
1042 
1043 template <typename T>
1044 void compute_dependencies(const TypeMap& type_map,
1045  const Sequence<T>& type,
1046  OPENDDS_SET(TypeIdentifier)& dependencies)
1047 {
1048  for (typename Sequence<T>::const_iterator pos = type.begin(), limit = type.end(); pos != limit; ++pos) {
1049  compute_dependencies(type_map, *pos, dependencies);
1050  }
1051 }
1052 
1053 }
1054 
1055 void compute_dependencies(const TypeMap& type_map,
1056  const TypeIdentifier& type_identifier,
1057  OPENDDS_SET(TypeIdentifier)& dependencies)
1058 {
1059  if (dependencies.count(type_identifier) != 0) {
1060  return;
1061  }
1062 
1063  dependencies.insert(type_identifier);
1064 
1065  switch (type_identifier.kind()) {
1066  case TI_STRING8_SMALL:
1067  case TI_STRING16_SMALL:
1068  compute_dependencies(type_map, type_identifier.string_sdefn(), dependencies);
1069  break;
1070  case TI_STRING8_LARGE:
1071  case TI_STRING16_LARGE:
1072  compute_dependencies(type_map, type_identifier.string_ldefn(), dependencies);
1073  break;
1075  compute_dependencies(type_map, type_identifier.seq_sdefn(), dependencies);
1076  break;
1078  compute_dependencies(type_map, type_identifier.seq_ldefn(), dependencies);
1079  break;
1080  case TI_PLAIN_ARRAY_SMALL:
1081  compute_dependencies(type_map, type_identifier.array_sdefn(), dependencies);
1082  break;
1083  case TI_PLAIN_ARRAY_LARGE:
1084  compute_dependencies(type_map, type_identifier.array_ldefn(), dependencies);
1085  break;
1086  case TI_PLAIN_MAP_SMALL:
1087  compute_dependencies(type_map, type_identifier.map_sdefn(), dependencies);
1088  break;
1089  case TI_PLAIN_MAP_LARGE:
1090  compute_dependencies(type_map, type_identifier.map_ldefn(), dependencies);
1091  break;
1093  compute_dependencies(type_map, type_identifier.sc_component_id(), dependencies);
1094  break;
1095  case EK_COMPLETE:
1096  case EK_MINIMAL:
1097  {
1098  TypeMap::const_iterator pos = type_map.find(type_identifier);
1099  if (pos != type_map.end()) {
1100  compute_dependencies(type_map, pos->second, dependencies);
1101  }
1102  break;
1103  }
1104  }
1105 }
1106 
1108 {
1109  size_t size = 0;
1110  serialized_size_delimiter(strm.encoding(), size);
1111  return strm.write_delimiter(size);
1112 }
1113 
1115 {
1116  size_t total_size = 0;
1117  if (!strm.read_delimiter(total_size)) {
1118  return false;
1119  }
1120  return strm.skip(total_size);
1121 }
1122 
1124 {
1125  switch (tk) {
1126  case TK_NONE:
1127  return "none";
1128  case TK_BOOLEAN:
1129  return "boolean";
1130  case TK_BYTE:
1131  return "byte";
1132  case TK_INT16:
1133  return "int16";
1134  case TK_INT32:
1135  return "int32";
1136  case TK_INT64:
1137  return "int64";
1138  case TK_UINT16:
1139  return "uint16";
1140  case TK_UINT32:
1141  return "uint32";
1142  case TK_UINT64:
1143  return "uint64";
1144  case TK_FLOAT32:
1145  return "float32";
1146  case TK_FLOAT64:
1147  return "float64";
1148  case TK_FLOAT128:
1149  return "float128";
1150  case TK_INT8:
1151  return "int8";
1152  case TK_UINT8:
1153  return "uint8";
1154  case TK_CHAR8:
1155  return "char8";
1156  case TK_CHAR16:
1157  return "char16";
1158  case TK_STRING8:
1159  return "string";
1160  case TK_STRING16:
1161  return "wstring";
1162  case TK_ALIAS:
1163  return "alias";
1164  case TK_ENUM:
1165  return "enum";
1166  case TK_BITMASK:
1167  return "bitmask";
1168  case TK_ANNOTATION:
1169  return "annotation";
1170  case TK_STRUCTURE:
1171  return "structure";
1172  case TK_UNION:
1173  return "union";
1174  case TK_BITSET:
1175  return "bitset";
1176  case TK_SEQUENCE:
1177  return "sequence";
1178  case TK_ARRAY:
1179  return "array";
1180  case TK_MAP:
1181  return "map";
1182  default:
1184  ACE_ERROR((LM_WARNING, "(%P|%t) WARNING: typekind_to_string: "
1185  "passed unknown TypeKind %u\n", tk));
1186  }
1187  return "unknown";
1188  }
1189 }
1190 
1192 {
1193  switch (tk) {
1194  case TK_BOOLEAN:
1195  case TK_BYTE:
1196  case TK_INT8:
1197  case TK_UINT8:
1198  case TK_INT16:
1199  case TK_UINT16:
1200  case TK_INT32:
1201  case TK_UINT32:
1202  case TK_INT64:
1203  case TK_UINT64:
1204  case TK_FLOAT32:
1205  case TK_FLOAT64:
1206  case TK_FLOAT128:
1207  case TK_CHAR8:
1208  case TK_CHAR16:
1209  return true;
1210  default:
1211  return false;
1212  }
1213 }
1214 
1216 {
1217  return is_primitive(tk) || tk == TK_ENUM;
1218 }
1219 
1221 {
1222  return is_primitive(tk) || tk == TK_STRING8 || tk == TK_STRING16;
1223 }
1224 
1226 {
1227  switch (tk) {
1228  case TK_ARRAY:
1229  case TK_SEQUENCE:
1230  case TK_MAP:
1231  case TK_STRUCTURE:
1232  case TK_UNION:
1233  case TK_BITSET:
1234  return true;
1235  default:
1236  return false;
1237  }
1238 }
1239 
1241 {
1242  switch (tk) {
1243  case TK_SEQUENCE:
1244  case TK_ARRAY:
1245  case TK_STRING8:
1246  case TK_STRING16:
1247  return true;
1248  default:
1249  return false;
1250  }
1251 }
1252 
1253 } // namespace XTypes
1254 
1255 namespace DCPS {
1256 
1257 // Serialization support for TypeObject and its components
1258 
1261 
1262 void serialized_size(const Encoding& encoding, size_t& size,
1263  const XTypes::TypeIdentifier& uni)
1264 {
1265  primitive_serialized_size_octet(encoding, size);
1266 
1267  switch (uni.kind()) {
1270  serialized_size(encoding, size, uni.string_sdefn());
1271  break;
1274  serialized_size(encoding, size, uni.string_ldefn());
1275  break;
1277  serialized_size(encoding, size, uni.seq_sdefn());
1278  break;
1280  serialized_size(encoding, size, uni.seq_ldefn());
1281  break;
1283  serialized_size(encoding, size, uni.array_sdefn());
1284  break;
1286  serialized_size(encoding, size, uni.array_ldefn());
1287  break;
1289  serialized_size(encoding, size, uni.map_sdefn());
1290  break;
1292  serialized_size(encoding, size, uni.map_ldefn());
1293  break;
1295  serialized_size(encoding, size, uni.sc_component_id());
1296  break;
1297  case XTypes::EK_COMPLETE:
1298  case XTypes::EK_MINIMAL:
1299  {
1300  XTypes::EquivalenceHash_forany uni_equivalence_hash(const_cast<XTypes::EquivalenceHash_slice*>(uni.equivalence_hash()));
1301  serialized_size(encoding, size, uni_equivalence_hash);
1302  break;
1303  }
1304  case XTypes::TK_NONE:
1305  case XTypes::TK_BOOLEAN:
1306  case XTypes::TK_BYTE:
1307  case XTypes::TK_INT16:
1308  case XTypes::TK_INT32:
1309  case XTypes::TK_INT64:
1310  case XTypes::TK_UINT16:
1311  case XTypes::TK_UINT32:
1312  case XTypes::TK_UINT64:
1313  case XTypes::TK_FLOAT32:
1314  case XTypes::TK_FLOAT64:
1315  case XTypes::TK_FLOAT128:
1316  case XTypes::TK_INT8:
1317  case XTypes::TK_UINT8:
1318  case XTypes::TK_CHAR8:
1319  case XTypes::TK_CHAR16:
1320  break; // no-op, no member selected
1321  default:
1322  serialized_size(encoding, size, uni.extended_defn());
1323  }
1324 }
1325 
1326 void serialized_size(const Encoding& encoding, size_t& size,
1328 {
1329  serialized_size(encoding, size, uni.value);
1330 }
1331 
1333 {
1334  if (!(strm << ACE_OutputCDR::from_octet(uni.kind()))) {
1335  return false;
1336  }
1337 
1338  switch (uni.kind()) {
1341  return (strm << uni.string_sdefn());
1344  return (strm << uni.string_ldefn());
1346  return (strm << uni.seq_sdefn());
1348  return (strm << uni.seq_ldefn());
1350  return (strm << uni.array_sdefn());
1352  return (strm << uni.array_ldefn());
1354  return (strm << uni.map_sdefn());
1356  return (strm << uni.map_ldefn());
1358  return (strm << uni.sc_component_id());
1359  case XTypes::EK_COMPLETE:
1360  case XTypes::EK_MINIMAL:
1361  {
1362  XTypes::EquivalenceHash_forany uni_equivalence_hash(const_cast<XTypes::EquivalenceHash_slice*>(uni.equivalence_hash()));
1363  return (strm << uni_equivalence_hash);
1364  }
1365  case XTypes::TK_NONE:
1366  case XTypes::TK_BOOLEAN:
1367  case XTypes::TK_BYTE:
1368  case XTypes::TK_INT16:
1369  case XTypes::TK_INT32:
1370  case XTypes::TK_INT64:
1371  case XTypes::TK_UINT16:
1372  case XTypes::TK_UINT32:
1373  case XTypes::TK_UINT64:
1374  case XTypes::TK_FLOAT32:
1375  case XTypes::TK_FLOAT64:
1376  case XTypes::TK_FLOAT128:
1377  case XTypes::TK_INT8:
1378  case XTypes::TK_UINT8:
1379  case XTypes::TK_CHAR8:
1380  case XTypes::TK_CHAR16:
1381  return true; // no-op, no member selected
1382  default:
1383  return (strm << uni.extended_defn());
1384  }
1385 }
1386 
1387 bool operator<<(Serializer& strm, const NestedKeyOnly<const XTypes::TypeIdentifier>& uni)
1388 {
1389  return (strm << uni.value);
1390 }
1391 
1393 {
1394  ACE_CDR::Octet k;
1395  if (!(strm >> ACE_InputCDR::to_octet(k))) {
1396  return false;
1397  }
1398  uni = XTypes::TypeIdentifier(k);
1399 
1400  switch (k) {
1403  return (strm >> uni.string_sdefn());
1406  return (strm >> uni.string_ldefn());
1408  return (strm >> uni.seq_sdefn());
1410  return (strm >> uni.seq_ldefn());
1412  return (strm >> uni.array_sdefn());
1414  return (strm >> uni.array_ldefn());
1416  return (strm >> uni.map_sdefn());
1418  return (strm >> uni.map_ldefn());
1420  return (strm >> uni.sc_component_id());
1421  case XTypes::EK_COMPLETE:
1422  case XTypes::EK_MINIMAL:
1423  {
1424  XTypes::EquivalenceHash_forany uni_equivalence_hash(uni.equivalence_hash());
1425  return (strm >> uni_equivalence_hash);
1426  }
1427  case XTypes::TK_NONE:
1428  case XTypes::TK_BOOLEAN:
1429  case XTypes::TK_BYTE:
1430  case XTypes::TK_INT16:
1431  case XTypes::TK_INT32:
1432  case XTypes::TK_INT64:
1433  case XTypes::TK_UINT16:
1434  case XTypes::TK_UINT32:
1435  case XTypes::TK_UINT64:
1436  case XTypes::TK_FLOAT32:
1437  case XTypes::TK_FLOAT64:
1438  case XTypes::TK_FLOAT128:
1439  case XTypes::TK_INT8:
1440  case XTypes::TK_UINT8:
1441  case XTypes::TK_CHAR8:
1442  case XTypes::TK_CHAR16:
1443  return true; // no-op, no member selected
1444  default:
1445  return (strm >> uni.extended_defn());
1446  }
1447 }
1448 
1450 {
1451  return (strm >> uni.value);
1452 }
1453 
1454 void serialized_size(const Encoding& encoding, size_t& size,
1455  const XTypes::LBoundSeq& seq)
1456 {
1457  DCPS::primitive_serialized_size_ulong(encoding, size);
1458  if (seq.length() == 0) {
1459  return;
1460  }
1461  primitive_serialized_size(encoding, size, ACE_CDR::ULong(), seq.length());
1462 }
1463 
1464 bool operator<<(Serializer& strm, const XTypes::LBoundSeq& seq)
1465 {
1466  const ACE_CDR::ULong length = seq.length();
1467  if (!(strm << length)) {
1468  return false;
1469  }
1470  if (length == 0) {
1471  return true;
1472  }
1473  return strm.write_ulong_array(seq.get_buffer(), length);
1474 }
1475 
1477 {
1478  ACE_CDR::ULong length;
1479  if (!(strm >> length)) {
1480  return false;
1481  }
1482  seq.length(length);
1483  if (length == 0) {
1484  return true;
1485  }
1486  return strm.read_ulong_array(seq.get_buffer(), length);
1487 }
1488 
1489 
1490 void serialized_size(const Encoding& encoding, size_t& size,
1491  const XTypes::SBoundSeq& seq)
1492 {
1493  DCPS::primitive_serialized_size_ulong(encoding, size);
1494  if (seq.length() == 0) {
1495  return;
1496  }
1497  primitive_serialized_size_octet(encoding, size, seq.length());
1498 }
1499 
1500 bool operator<<(Serializer& strm, const XTypes::SBoundSeq& seq)
1501 {
1502  const ACE_CDR::ULong length = seq.length();
1503  if (!(strm << length)) {
1504  return false;
1505  }
1506  if (length == 0) {
1507  return true;
1508  }
1509  return strm.write_octet_array(seq.get_buffer(), length);
1510 }
1511 
1513 {
1514  ACE_CDR::ULong length;
1515  if (!(strm >> length)) {
1516  return false;
1517  }
1518  seq.length(length);
1519  if (length == 0) {
1520  return true;
1521  }
1522  return strm.read_octet_array(seq.get_buffer(), length);
1523 }
1524 
1525 
1526 void serialized_size(const Encoding& encoding, size_t& size,
1527  const XTypes::UnionCaseLabelSeq& seq)
1528 {
1529  DCPS::primitive_serialized_size_ulong(encoding, size);
1530  if (seq.length() == 0) {
1531  return;
1532  }
1533  primitive_serialized_size(encoding, size, ACE_CDR::Long(), seq.length());
1534 }
1535 
1537 {
1538  const ACE_CDR::ULong length = seq.length();
1539  if (!(strm << length)) {
1540  return false;
1541  }
1542  if (length == 0) {
1543  return true;
1544  }
1545  return strm.write_long_array(seq.get_buffer(), length);
1546 }
1547 
1549 {
1550  ACE_CDR::ULong length;
1551  if (!(strm >> length)) {
1552  return false;
1553  }
1554  seq.length(length);
1555  if (length == 0) {
1556  return true;
1557  }
1558  return strm.read_long_array(seq.get_buffer(), length);
1559 }
1560 
1561 
1562 void serialized_size(const Encoding& encoding, size_t& size,
1564 {
1565  serialized_size_delimiter(encoding, size);
1566 }
1567 
1569 {
1571 }
1572 
1574 {
1575  return XTypes::read_empty_xcdr2_nonfinal(strm);
1576 }
1577 
1578 
1579 void serialized_size(const Encoding& encoding, size_t& size,
1580  const XTypes::NameHash_forany&)
1581 {
1582  primitive_serialized_size_octet(encoding, size, 4);
1583 }
1584 
1586 {
1587  return strm.write_octet_array(arr.in(), 4);
1588 }
1589 
1591 {
1592  return strm.read_octet_array(arr.out(), 4);
1593 }
1594 
1595 
1596 void serialized_size(const Encoding& encoding, size_t& size,
1598 {
1599  primitive_serialized_size_octet(encoding, size, 14);
1600 }
1601 
1603 {
1604  return strm.write_octet_array(arr.in(), 14);
1605 }
1606 
1608 {
1609  return strm.read_octet_array(arr.out(), 14);
1610 }
1611 
1612 
1613 void serialized_size(const Encoding& encoding, size_t& size,
1614  const XTypes::CompleteTypeDetail& stru)
1615 {
1616  serialized_size(encoding, size, stru.ann_builtin);
1617  serialized_size(encoding, size, stru.ann_custom);
1618  DCPS::primitive_serialized_size_ulong(encoding, size);
1619  size += stru.type_name.size() + 1;
1620 }
1621 
1623 {
1624  return (strm << stru.ann_builtin)
1625  && (strm << stru.ann_custom)
1627 }
1628 
1630 {
1631  return (strm >> stru.ann_builtin)
1632  && (strm >> stru.ann_custom)
1634 }
1635 
1636 
1637 void serialized_size(const Encoding& encoding, size_t& size,
1638  const XTypes::CompleteStructHeader& stru)
1639 {
1640  serialized_size_delimiter(encoding, size);
1641  serialized_size(encoding, size, stru.base_type);
1642  serialized_size(encoding, size, stru.detail);
1643 }
1644 
1646 {
1647  size_t total_size = 0;
1648  serialized_size(strm.encoding(), total_size, stru);
1649  if (!strm.write_delimiter(total_size)) {
1650  return false;
1651  }
1652 
1653  return (strm << stru.base_type)
1654  && (strm << stru.detail);
1655 }
1656 
1658 {
1659  size_t total_size = 0;
1660  if (!strm.read_delimiter(total_size)) {
1661  return false;
1662  }
1663 
1664  const size_t start_pos = strm.rpos();
1665 
1666  const bool ret = (strm >> stru.base_type)
1667  && (strm >> stru.detail);
1668 
1669  if (ret && strm.rpos() - start_pos < total_size) {
1670  strm.skip(total_size - strm.rpos() + start_pos);
1671  }
1672  return ret;
1673 }
1674 
1675 
1676 void serialized_size(const Encoding& encoding, size_t& size,
1677  const XTypes::MinimalStructHeader& stru)
1678 {
1679  serialized_size_delimiter(encoding, size);
1680  serialized_size(encoding, size, stru.base_type);
1681  serialized_size(encoding, size, stru.detail);
1682 }
1683 
1685 {
1686  size_t total_size = 0;
1687  serialized_size(strm.encoding(), total_size, stru);
1688  if (!strm.write_delimiter(total_size)) {
1689  return false;
1690  }
1691 
1692  return (strm << stru.base_type)
1693  && (strm << stru.detail);
1694 }
1695 
1697 {
1698  size_t total_size = 0;
1699  if (!strm.read_delimiter(total_size)) {
1700  return false;
1701  }
1702 
1703  const size_t start_pos = strm.rpos();
1704 
1705  const bool ret = (strm >> stru.base_type)
1706  && (strm >> stru.detail);
1707 
1708  if (ret && strm.rpos() - start_pos < total_size) {
1709  strm.skip(total_size - strm.rpos() + start_pos);
1710  }
1711  return ret;
1712 }
1713 
1714 void serialized_size(const Encoding& encoding, size_t& size,
1715  const XTypes::CompleteStructType& stru)
1716 {
1717  primitive_serialized_size(encoding, size, stru.struct_flags);
1718  serialized_size(encoding, size, stru.header);
1719  serialized_size(encoding, size, stru.member_seq);
1720 }
1721 
1723 {
1724  return (strm << stru.struct_flags)
1725  && (strm << stru.header)
1726  && (strm << stru.member_seq);
1727 }
1728 
1730 {
1731  return (strm >> stru.struct_flags)
1732  && (strm >> stru.header)
1733  && (strm >> stru.member_seq);
1734 }
1735 
1736 
1737 void serialized_size(const Encoding& encoding, size_t& size,
1738  const XTypes::MinimalStructType& stru)
1739 {
1740  primitive_serialized_size(encoding, size, stru.struct_flags);
1741  serialized_size(encoding, size, stru.header);
1742  serialized_size(encoding, size, stru.member_seq);
1743 }
1744 
1746 {
1747  return (strm << stru.struct_flags)
1748  && (strm << stru.header)
1749  && (strm << stru.member_seq);
1750 }
1751 
1753 {
1754  return (strm >> stru.struct_flags)
1755  && (strm >> stru.header)
1756  && (strm >> stru.member_seq);
1757 }
1758 
1759 
1760 void serialized_size(const Encoding& encoding, size_t& size,
1761  const XTypes::CompleteUnionType& stru)
1762 {
1763  primitive_serialized_size(encoding, size, stru.union_flags);
1764  serialized_size(encoding, size, stru.header);
1765  serialized_size(encoding, size, stru.discriminator);
1766  serialized_size(encoding, size, stru.member_seq);
1767 }
1768 
1770 {
1771  return (strm << stru.union_flags)
1772  && (strm << stru.header)
1773  && (strm << stru.discriminator)
1774  && (strm << stru.member_seq);
1775 }
1776 
1778 {
1779  return (strm >> stru.union_flags)
1780  && (strm >> stru.header)
1781  && (strm >> stru.discriminator)
1782  && (strm >> stru.member_seq);
1783 }
1784 
1785 
1786 void serialized_size(const Encoding& encoding, size_t& size,
1787  const XTypes::MinimalUnionType& stru)
1788 {
1789  primitive_serialized_size(encoding, size, stru.union_flags);
1790  serialized_size(encoding, size, stru.header);
1791  serialized_size(encoding, size, stru.discriminator);
1792  serialized_size(encoding, size, stru.member_seq);
1793 }
1794 
1796 {
1797  return (strm << stru.union_flags)
1798  && (strm << stru.header)
1799  && (strm << stru.discriminator)
1800  && (strm << stru.member_seq);
1801 }
1802 
1804 {
1805  return (strm >> stru.union_flags)
1806  && (strm >> stru.header)
1807  && (strm >> stru.discriminator)
1808  && (strm >> stru.member_seq);
1809 }
1810 
1811 
1812 void serialized_size(const Encoding& encoding, size_t& size,
1813  const XTypes::CompleteAnnotationType& stru)
1814 {
1815  primitive_serialized_size(encoding, size, stru.annotation_flag);
1816  serialized_size(encoding, size, stru.header);
1817  serialized_size(encoding, size, stru.member_seq);
1818 }
1819 
1821 {
1822  return (strm << stru.annotation_flag)
1823  && (strm << stru.header)
1824  && (strm << stru.member_seq);
1825 }
1826 
1828 {
1829  return (strm >> stru.annotation_flag)
1830  && (strm >> stru.header)
1831  && (strm >> stru.member_seq);
1832 }
1833 
1834 
1835 void serialized_size(const Encoding& encoding, size_t& size,
1836  const XTypes::MinimalAnnotationType& stru)
1837 {
1838  primitive_serialized_size(encoding, size, stru.annotation_flag);
1839  serialized_size(encoding, size, stru.header);
1840  serialized_size(encoding, size, stru.member_seq);
1841 }
1842 
1844 {
1845  return (strm << stru.annotation_flag)
1846  && (strm << stru.header)
1847  && (strm << stru.member_seq);
1848 }
1849 
1851 {
1852  return (strm >> stru.annotation_flag)
1853  && (strm >> stru.header)
1854  && (strm >> stru.member_seq);
1855 }
1856 
1857 
1858 void serialized_size(const Encoding& encoding, size_t& size,
1859  const XTypes::CompleteAliasType& stru)
1860 {
1861  primitive_serialized_size(encoding, size, stru.alias_flags);
1862  serialized_size(encoding, size, stru.header);
1863  serialized_size(encoding, size, stru.body);
1864 }
1865 
1867 {
1868  return (strm << stru.alias_flags)
1869  && (strm << stru.header)
1870  && (strm << stru.body);
1871 }
1872 
1874 {
1875  return (strm >> stru.alias_flags)
1876  && (strm >> stru.header)
1877  && (strm >> stru.body);
1878 }
1879 
1880 
1881 void serialized_size(const Encoding& encoding, size_t& size,
1882  const XTypes::MinimalAliasType& stru)
1883 {
1884  primitive_serialized_size(encoding, size, stru.alias_flags);
1885  serialized_size(encoding, size, stru.header);
1886  serialized_size(encoding, size, stru.body);
1887 }
1888 
1890 {
1891  return (strm << stru.alias_flags)
1892  && (strm << stru.header)
1893  && (strm << stru.body);
1894 }
1895 
1897 {
1898  return (strm >> stru.alias_flags)
1899  && (strm >> stru.header)
1900  && (strm >> stru.body);
1901 }
1902 
1903 
1904 void serialized_size(const Encoding& encoding, size_t& size,
1905  const XTypes::CompleteSequenceType& stru)
1906 {
1907  primitive_serialized_size(encoding, size, stru.collection_flag);
1908  serialized_size(encoding, size, stru.header);
1909  serialized_size(encoding, size, stru.element);
1910 }
1911 
1913 {
1914  return (strm << stru.collection_flag)
1915  && (strm << stru.header)
1916  && (strm << stru.element);
1917 }
1918 
1920 {
1921  return (strm >> stru.collection_flag)
1922  && (strm >> stru.header)
1923  && (strm >> stru.element);
1924 }
1925 
1926 
1927 void serialized_size(const Encoding& encoding, size_t& size,
1928  const XTypes::MinimalSequenceType& stru)
1929 {
1930  primitive_serialized_size(encoding, size, stru.collection_flag);
1931  serialized_size(encoding, size, stru.header);
1932  serialized_size(encoding, size, stru.element);
1933 }
1934 
1936 {
1937  return (strm << stru.collection_flag)
1938  && (strm << stru.header)
1939  && (strm << stru.element);
1940 }
1941 
1943 {
1944  return (strm >> stru.collection_flag)
1945  && (strm >> stru.header)
1946  && (strm >> stru.element);
1947 }
1948 
1949 
1950 void serialized_size(const Encoding& encoding, size_t& size,
1951  const XTypes::CompleteArrayType& stru)
1952 {
1953  serialized_size_delimiter(encoding, size);
1954  primitive_serialized_size(encoding, size, stru.collection_flag);
1955  serialized_size(encoding, size, stru.header);
1956  serialized_size(encoding, size, stru.element);
1957 }
1958 
1960 {
1961  size_t total_size = 0;
1962  serialized_size(strm.encoding(), total_size, stru);
1963  if (!strm.write_delimiter(total_size)) {
1964  return false;
1965  }
1966 
1967  return (strm << stru.collection_flag)
1968  && (strm << stru.header)
1969  && (strm << stru.element);
1970 }
1971 
1973 {
1974  size_t total_size = 0;
1975  if (!strm.read_delimiter(total_size)) {
1976  return false;
1977  }
1978 
1979  const size_t start_pos = strm.rpos();
1980 
1981  const bool ret = (strm >> stru.collection_flag)
1982  && (strm >> stru.header)
1983  && (strm >> stru.element);
1984 
1985  if (ret && strm.rpos() - start_pos < total_size) {
1986  strm.skip(total_size - strm.rpos() + start_pos);
1987  }
1988  return ret;
1989 }
1990 
1991 
1992 void serialized_size(const Encoding& encoding, size_t& size,
1993  const XTypes::MinimalArrayType& stru)
1994 {
1995  primitive_serialized_size(encoding, size, stru.collection_flag);
1996  serialized_size(encoding, size, stru.header);
1997  serialized_size(encoding, size, stru.element);
1998 }
1999 
2001 {
2002  return (strm << stru.collection_flag)
2003  && (strm << stru.header)
2004  && (strm << stru.element);
2005 }
2006 
2008 {
2009  return (strm >> stru.collection_flag)
2010  && (strm >> stru.header)
2011  && (strm >> stru.element);
2012 }
2013 
2014 
2015 void serialized_size(const Encoding& encoding, size_t& size,
2016  const XTypes::CompleteMapType& stru)
2017 {
2018  primitive_serialized_size(encoding, size, stru.collection_flag);
2019  serialized_size(encoding, size, stru.header);
2020  serialized_size(encoding, size, stru.key);
2021  serialized_size(encoding, size, stru.element);
2022 }
2023 
2025 {
2026  return (strm << stru.collection_flag)
2027  && (strm << stru.header)
2028  && (strm << stru.key)
2029  && (strm << stru.element);
2030 }
2031 
2033 {
2034  return (strm >> stru.collection_flag)
2035  && (strm >> stru.header)
2036  && (strm >> stru.key)
2037  && (strm >> stru.element);
2038 }
2039 
2040 
2041 void serialized_size(const Encoding& encoding, size_t& size,
2042  const XTypes::MinimalMapType& stru)
2043 {
2044  primitive_serialized_size(encoding, size, stru.collection_flag);
2045  serialized_size(encoding, size, stru.header);
2046  serialized_size(encoding, size, stru.key);
2047  serialized_size(encoding, size, stru.element);
2048 }
2049 
2051 {
2052  return (strm << stru.collection_flag)
2053  && (strm << stru.header)
2054  && (strm << stru.key)
2055  && (strm << stru.element);
2056 }
2057 
2059 {
2060  return (strm >> stru.collection_flag)
2061  && (strm >> stru.header)
2062  && (strm >> stru.key)
2063  && (strm >> stru.element);
2064 }
2065 
2066 
2067 void serialized_size(const Encoding& encoding, size_t& size,
2069 {
2070  serialized_size_delimiter(encoding, size);
2071  serialized_size(encoding, size, stru.common);
2072  serialized_size(encoding, size, stru.detail);
2073 }
2074 
2076 {
2077  size_t total_size = 0;
2078  serialized_size(strm.encoding(), total_size, stru);
2079  if (!strm.write_delimiter(total_size)) {
2080  return false;
2081  }
2082 
2083  return (strm << stru.common)
2084  && (strm << stru.detail);
2085 }
2086 
2088 {
2089  size_t total_size = 0;
2090  if (!strm.read_delimiter(total_size)) {
2091  return false;
2092  }
2093 
2094  const size_t start_pos = strm.rpos();
2095 
2096  const bool ret = (strm >> stru.common)
2097  && (strm >> stru.detail);
2098 
2099  if (ret && strm.rpos() - start_pos < total_size) {
2100  strm.skip(total_size - strm.rpos() + start_pos);
2101  }
2102  return ret;
2103 }
2104 
2105 void serialized_size(const Encoding& encoding, size_t& size,
2106  const XTypes::MinimalEnumeratedHeader& stru)
2107 {
2108  serialized_size_delimiter(encoding, size);
2109  serialized_size(encoding, size, stru.common);
2110 }
2111 
2113 {
2114  size_t total_size = 0;
2115  serialized_size(strm.encoding(), total_size, stru);
2116  if (!strm.write_delimiter(total_size)) {
2117  return false;
2118  }
2119 
2120  return (strm << stru.common);
2121 }
2122 
2124 {
2125  size_t total_size = 0;
2126  if (!strm.read_delimiter(total_size)) {
2127  return false;
2128  }
2129 
2130  const size_t start_pos = strm.rpos();
2131 
2132  const bool ret = (strm >> stru.common);
2133 
2134  if (ret && strm.rpos() - start_pos < total_size) {
2135  strm.skip(total_size - strm.rpos() + start_pos);
2136  }
2137  return ret;
2138 }
2139 
2140 
2141 void serialized_size(const Encoding& encoding, size_t& size,
2142  const XTypes::CompleteEnumeratedType& stru)
2143 {
2144  primitive_serialized_size(encoding, size, stru.enum_flags);
2145  serialized_size(encoding, size, stru.header);
2146  serialized_size(encoding, size, stru.literal_seq);
2147 }
2148 
2150 {
2151  return (strm << stru.enum_flags)
2152  && (strm << stru.header)
2153  && (strm << stru.literal_seq);
2154 }
2155 
2157 {
2158  return (strm >> stru.enum_flags)
2159  && (strm >> stru.header)
2160  && (strm >> stru.literal_seq);
2161 }
2162 
2163 
2164 void serialized_size(const Encoding& encoding, size_t& size,
2165  const XTypes::MinimalEnumeratedType& stru)
2166 {
2167  primitive_serialized_size(encoding, size, stru.enum_flags);
2168  serialized_size(encoding, size, stru.header);
2169  serialized_size(encoding, size, stru.literal_seq);
2170 }
2171 
2173 {
2174  return (strm << stru.enum_flags)
2175  && (strm << stru.header)
2176  && (strm << stru.literal_seq);
2177 }
2178 
2180 {
2181  return (strm >> stru.enum_flags)
2182  && (strm >> stru.header)
2183  && (strm >> stru.literal_seq);
2184 }
2185 
2186 
2187 void serialized_size(const Encoding& encoding, size_t& size,
2188  const XTypes::CompleteBitmaskType& stru)
2189 {
2190  serialized_size_delimiter(encoding, size);
2191  primitive_serialized_size(encoding, size, stru.bitmask_flags);
2192  serialized_size(encoding, size, stru.header);
2193  serialized_size(encoding, size, stru.flag_seq);
2194 }
2195 
2197 {
2198  size_t total_size = 0;
2199  serialized_size(strm.encoding(), total_size, stru);
2200  if (!strm.write_delimiter(total_size)) {
2201  return false;
2202  }
2203 
2204  return (strm << stru.bitmask_flags)
2205  && (strm << stru.header)
2206  && (strm << stru.flag_seq);
2207 }
2208 
2210 {
2211  size_t total_size = 0;
2212  if (!strm.read_delimiter(total_size)) {
2213  return false;
2214  }
2215 
2216  const size_t start_pos = strm.rpos();
2217 
2218  const bool ret = (strm >> stru.bitmask_flags)
2219  && (strm >> stru.header)
2220  && (strm >> stru.flag_seq);
2221 
2222  if (ret && strm.rpos() - start_pos < total_size) {
2223  strm.skip(total_size - strm.rpos() + start_pos);
2224  }
2225  return ret;
2226 }
2227 
2228 
2229 void serialized_size(const Encoding& encoding, size_t& size,
2230  const XTypes::MinimalBitmaskType& stru)
2231 {
2232  serialized_size_delimiter(encoding, size);
2233  primitive_serialized_size(encoding, size, stru.bitmask_flags);
2234  serialized_size(encoding, size, stru.header);
2235  serialized_size(encoding, size, stru.flag_seq);
2236 }
2237 
2239 {
2240  size_t total_size = 0;
2241  serialized_size(strm.encoding(), total_size, stru);
2242  if (!strm.write_delimiter(total_size)) {
2243  return false;
2244  }
2245 
2246  return (strm << stru.bitmask_flags)
2247  && (strm << stru.header)
2248  && (strm << stru.flag_seq);
2249 }
2250 
2252 {
2253  size_t total_size = 0;
2254  if (!strm.read_delimiter(total_size)) {
2255  return false;
2256  }
2257 
2258  const size_t start_pos = strm.rpos();
2259 
2260  const bool ret = (strm >> stru.bitmask_flags)
2261  && (strm >> stru.header)
2262  && (strm >> stru.flag_seq);
2263 
2264  if (ret && strm.rpos() - start_pos < total_size) {
2265  strm.skip(total_size - strm.rpos() + start_pos);
2266  }
2267  return ret;
2268 }
2269 
2270 
2271 void serialized_size(const Encoding& encoding, size_t& size,
2272  const XTypes::CompleteBitsetType& stru)
2273 {
2274  serialized_size_delimiter(encoding, size);
2275  primitive_serialized_size(encoding, size, stru.bitset_flags);
2276  serialized_size(encoding, size, stru.header);
2277  serialized_size(encoding, size, stru.field_seq);
2278 }
2279 
2281 {
2282  size_t total_size = 0;
2283  serialized_size(strm.encoding(), total_size, stru);
2284  if (!strm.write_delimiter(total_size)) {
2285  return false;
2286  }
2287 
2288  return (strm << stru.bitset_flags)
2289  && (strm << stru.header)
2290  && (strm << stru.field_seq);
2291 }
2292 
2294 {
2295  size_t total_size = 0;
2296  if (!strm.read_delimiter(total_size)) {
2297  return false;
2298  }
2299 
2300  const size_t start_pos = strm.rpos();
2301 
2302  const bool ret = (strm >> stru.bitset_flags)
2303  && (strm >> stru.header)
2304  && (strm >> stru.field_seq);
2305 
2306  if (ret && strm.rpos() - start_pos < total_size) {
2307  strm.skip(total_size - strm.rpos() + start_pos);
2308  }
2309  return ret;
2310 }
2311 
2312 
2313 void serialized_size(const Encoding& encoding, size_t& size,
2314  const XTypes::MinimalBitsetType& stru)
2315 {
2316  serialized_size_delimiter(encoding, size);
2317  primitive_serialized_size(encoding, size, stru.bitset_flags);
2318  serialized_size(encoding, size, stru.header);
2319  serialized_size(encoding, size, stru.field_seq);
2320 }
2321 
2323 {
2324  size_t total_size = 0;
2325  serialized_size(strm.encoding(), total_size, stru);
2326  if (!strm.write_delimiter(total_size)) {
2327  return false;
2328  }
2329 
2330  return (strm << stru.bitset_flags)
2331  && (strm << stru.header)
2332  && (strm << stru.field_seq);
2333 }
2334 
2336 {
2337  size_t total_size = 0;
2338  if (!strm.read_delimiter(total_size)) {
2339  return false;
2340  }
2341 
2342  const size_t start_pos = strm.rpos();
2343 
2344  const bool ret = (strm >> stru.bitset_flags)
2345  && (strm >> stru.header)
2346  && (strm >> stru.field_seq);
2347 
2348  if (ret && strm.rpos() - start_pos < total_size) {
2349  strm.skip(total_size - strm.rpos() + start_pos);
2350  }
2351  return ret;
2352 }
2353 
2354 
2355 void serialized_size(const Encoding& encoding, size_t& size,
2357 {
2358  serialized_size_delimiter(encoding, size);
2359 }
2360 
2362 {
2364 }
2365 
2367 {
2368  return XTypes::read_empty_xcdr2_nonfinal(strm);
2369 }
2370 
2371 
2372 void serialized_size(const Encoding& encoding, size_t& size,
2373  const XTypes::TypeIdentifierWithSize& stru)
2374 {
2375  serialized_size_delimiter(encoding, size);
2376  serialized_size(encoding, size, stru.type_id);
2378 }
2379 
2380 void serialized_size(const Encoding& encoding, size_t& size,
2382 {
2383  serialized_size(encoding, size, stru.value);
2384 }
2385 
2387 {
2388  size_t total_size = 0;
2389  serialized_size(strm.encoding(), total_size, stru);
2390  if (!strm.write_delimiter(total_size)) {
2391  return false;
2392  }
2393 
2394  return (strm << stru.type_id)
2395  && (strm << stru.typeobject_serialized_size);
2396 }
2397 
2398 bool operator<<(Serializer& strm, const NestedKeyOnly<const XTypes::TypeIdentifierWithSize>& stru)
2399 {
2400  return (strm << stru.value);
2401 }
2402 
2404 {
2405  size_t total_size = 0;
2406  if (!strm.read_delimiter(total_size)) {
2407  return false;
2408  }
2409 
2410  const size_t start_pos = strm.rpos();
2411 
2412  const bool ret = (strm >> stru.type_id)
2413  && (strm >> stru.typeobject_serialized_size);
2414 
2415  if (ret && strm.rpos() - start_pos < total_size) {
2416  strm.skip(total_size - strm.rpos() + start_pos);
2417  }
2418  return ret;
2419 }
2420 
2422 {
2423  return (strm >> stru.value);
2424 }
2425 
2426 void serialized_size(const Encoding& encoding, size_t& size,
2428 {
2429  serialized_size_delimiter(encoding, size);
2430  serialized_size(encoding, size, stru.typeid_with_size);
2431  primitive_serialized_size(encoding, size, stru.dependent_typeid_count);
2432  serialized_size(encoding, size, stru.dependent_typeids);
2433 }
2434 
2436 {
2437  size_t total_size = 0;
2438  serialized_size(strm.encoding(), total_size, stru);
2439  if (!strm.write_delimiter(total_size)) {
2440  return false;
2441  }
2442 
2443  return (strm << stru.typeid_with_size)
2444  && (strm << stru.dependent_typeid_count)
2445  && (strm << stru.dependent_typeids);
2446 }
2447 
2449 {
2450  size_t total_size = 0;
2451  if (!strm.read_delimiter(total_size)) {
2452  return false;
2453  }
2454 
2455  const size_t start_pos = strm.rpos();
2456 
2457  const bool ret = (strm >> stru.typeid_with_size)
2458  && (strm >> stru.dependent_typeid_count)
2459  && (strm >> stru.dependent_typeids);
2460 
2461  if (ret && strm.rpos() - start_pos < total_size) {
2462  strm.skip(total_size - strm.rpos() + start_pos);
2463  }
2464  return ret;
2465 }
2466 
2467 
2468 void serialized_size(const Encoding& encoding, size_t& size,
2469  const XTypes::AppliedAnnotation& stru)
2470 {
2471  serialized_size_delimiter(encoding, size);
2472  serialized_size(encoding, size, stru.annotation_typeid);
2473  serialized_size(encoding, size, stru.param_seq);
2474 }
2475 
2477 {
2478  size_t total_size = 0;
2479  serialized_size(strm.encoding(), total_size, stru);
2480  if (!strm.write_delimiter(total_size)) {
2481  return false;
2482  }
2483 
2484  return (strm << stru.annotation_typeid)
2485  && (strm << stru.param_seq);
2486 }
2487 
2489 {
2490  size_t total_size = 0;
2491  if (!strm.read_delimiter(total_size)) {
2492  return false;
2493  }
2494 
2495  const size_t start_pos = strm.rpos();
2496  const bool ret = (strm >> stru.annotation_typeid)
2497  && (strm >> stru.param_seq);
2498 
2499  if (ret && strm.rpos() - start_pos < total_size) {
2500  strm.skip(total_size - strm.rpos() + start_pos);
2501  }
2502  return ret;
2503 }
2504 
2505 
2506 void serialized_size(const Encoding& encoding, size_t& size,
2508 {
2509  serialized_size_delimiter(encoding, size);
2510  serialized_size(encoding, size, stru.verbatim);
2511 }
2512 
2514 {
2515  size_t total_size = 0;
2516  serialized_size(strm.encoding(), total_size, stru);
2517  if (!strm.write_delimiter(total_size)) {
2518  return false;
2519  }
2520 
2521  return (strm << stru.verbatim);
2522 }
2523 
2525 {
2526  size_t total_size = 0;
2527  if (!strm.read_delimiter(total_size)) {
2528  return false;
2529  }
2530 
2531  const size_t start_pos = strm.rpos();
2532 
2533  const bool ret = (strm >> stru.verbatim);
2534 
2535  if (ret && strm.rpos() - start_pos < total_size) {
2536  strm.skip(total_size - strm.rpos() + start_pos);
2537  }
2538  return ret;
2539 }
2540 
2541 
2542 void serialized_size(const Encoding& encoding, size_t& size,
2543  const XTypes::CompleteAliasBody& stru)
2544 {
2545  serialized_size_delimiter(encoding, size);
2546  serialized_size(encoding, size, stru.common);
2547  serialized_size(encoding, size, stru.ann_builtin);
2548  serialized_size(encoding, size, stru.ann_custom);
2549 }
2550 
2552 {
2553  size_t total_size = 0;
2554  serialized_size(strm.encoding(), total_size, stru);
2555  if (!strm.write_delimiter(total_size)) {
2556  return false;
2557  }
2558 
2559  return (strm << stru.common)
2560  && (strm << stru.ann_builtin)
2561  && (strm << stru.ann_custom);
2562 }
2563 
2565 {
2566  size_t total_size = 0;
2567  if (!strm.read_delimiter(total_size)) {
2568  return false;
2569  }
2570 
2571  const size_t start_pos = strm.rpos();
2572 
2573  const bool ret = (strm >> stru.common)
2574  && (strm >> stru.ann_builtin)
2575  && (strm >> stru.ann_custom);
2576 
2577  if (ret && strm.rpos() - start_pos < total_size) {
2578  strm.skip(total_size - strm.rpos() + start_pos);
2579  }
2580  return ret;
2581 }
2582 
2583 
2584 void serialized_size(const Encoding& encoding, size_t& size,
2585  const XTypes::CompleteAliasHeader& stru)
2586 {
2587  serialized_size_delimiter(encoding, size);
2588  serialized_size(encoding, size, stru.detail);
2589 }
2590 
2592 {
2593  size_t total_size = 0;
2594  serialized_size(strm.encoding(), total_size, stru);
2595  if (!strm.write_delimiter(total_size)) {
2596  return false;
2597  }
2598 
2599  return (strm << stru.detail);
2600 }
2601 
2603 {
2604  size_t total_size = 0;
2605  if (!strm.read_delimiter(total_size)) {
2606  return false;
2607  }
2608 
2609  const size_t start_pos = strm.rpos();
2610 
2611  const bool ret = (strm >> stru.detail);
2612 
2613  if (ret && strm.rpos() - start_pos < total_size) {
2614  strm.skip(total_size - strm.rpos() + start_pos);
2615  }
2616  return ret;
2617 }
2618 
2619 
2620 void serialized_size(const Encoding& encoding, size_t& size,
2622 {
2623  serialized_size_delimiter(encoding, size);
2624  DCPS::primitive_serialized_size_ulong(encoding, size);
2625  size += ACE_OS::strlen(stru.annotation_name.c_str()) + 1;
2626 }
2627 
2629 {
2630  size_t total_size = 0;
2631  serialized_size(strm.encoding(), total_size, stru);
2632  if (!strm.write_delimiter(total_size)) {
2633  return false;
2634  }
2635 
2637 }
2638 
2640 {
2641  size_t total_size = 0;
2642  if (!strm.read_delimiter(total_size)) {
2643  return false;
2644  }
2645 
2646  const size_t start_pos = strm.rpos();
2647 
2649 
2650  if (ret && strm.rpos() - start_pos < total_size) {
2651  strm.skip(total_size - strm.rpos() + start_pos);
2652  }
2653  return ret;
2654 }
2655 
2656 
2657 void serialized_size(const Encoding& encoding, size_t& size,
2659 {
2660  serialized_size_delimiter(encoding, size);
2661  serialized_size(encoding, size, stru.common);
2662  primitive_serialized_size_ulong(encoding, size);
2663  size += ACE_OS::strlen(stru.name.c_str()) + 1;
2664  serialized_size(encoding, size, stru.default_value);
2665 }
2666 
2668 {
2669  size_t total_size = 0;
2670  serialized_size(strm.encoding(), total_size, stru);
2671  if (!strm.write_delimiter(total_size)) {
2672  return false;
2673  }
2674 
2675  return (strm << stru.common)
2676  && (strm << Serializer::FromBoundedString<char>(stru.name, MEMBER_NAME_MAX_LENGTH))
2677  && (strm << stru.default_value);
2678 }
2679 
2681 {
2682  size_t total_size = 0;
2683  if (!strm.read_delimiter(total_size)) {
2684  return false;
2685  }
2686 
2687  const size_t start_pos = strm.rpos();
2688 
2689  const bool ret = (strm >> stru.common)
2691  && (strm >> stru.default_value);
2692 
2693  if (ret && strm.rpos() - start_pos < total_size) {
2694  strm.skip(total_size - strm.rpos() + start_pos);
2695  }
2696  return ret;
2697 }
2698 
2699 
2700 void serialized_size(const Encoding& encoding, size_t& size,
2701  const XTypes::CompleteArrayHeader& stru)
2702 {
2703  serialized_size_delimiter(encoding, size);
2704  serialized_size(encoding, size, stru.common);
2705  serialized_size(encoding, size, stru.detail);
2706 }
2707 
2709 {
2710  size_t total_size = 0;
2711  serialized_size(strm.encoding(), total_size, stru);
2712  if (!strm.write_delimiter(total_size)) {
2713  return false;
2714  }
2715 
2716  return (strm << stru.common)
2717  && (strm << stru.detail);
2718 }
2719 
2721 {
2722  size_t total_size = 0;
2723  if (!strm.read_delimiter(total_size)) {
2724  return false;
2725  }
2726 
2727  const size_t start_pos = strm.rpos();
2728 
2729  const bool ret = (strm >> stru.common)
2730  && (strm >> stru.detail);
2731 
2732  if (ret && strm.rpos() - start_pos < total_size) {
2733  strm.skip(total_size - strm.rpos() + start_pos);
2734  }
2735  return ret;
2736 }
2737 
2738 
2739 void serialized_size(const Encoding& encoding, size_t& size,
2740  const XTypes::CompleteBitfield& stru)
2741 {
2742  serialized_size_delimiter(encoding, size);
2743  serialized_size(encoding, size, stru.common);
2744  serialized_size(encoding, size, stru.detail);
2745 }
2746 
2748 {
2749  size_t total_size = 0;
2750  serialized_size(strm.encoding(), total_size, stru);
2751  if (!strm.write_delimiter(total_size)) {
2752  return false;
2753  }
2754 
2755  return (strm << stru.common)
2756  && (strm << stru.detail);
2757 }
2758 
2760 {
2761  size_t total_size = 0;
2762  if (!strm.read_delimiter(total_size)) {
2763  return false;
2764  }
2765 
2766  const size_t start_pos = strm.rpos();
2767 
2768  const bool ret = (strm >> stru.common)
2769  && (strm >> stru.detail);
2770 
2771  if (ret && strm.rpos() - start_pos < total_size) {
2772  strm.skip(total_size - strm.rpos() + start_pos);
2773  }
2774  return ret;
2775 }
2776 
2777 
2778 void serialized_size(const Encoding& encoding, size_t& size,
2779  const XTypes::CompleteBitflag& stru)
2780 {
2781  serialized_size_delimiter(encoding, size);
2782  serialized_size(encoding, size, stru.common);
2783  serialized_size(encoding, size, stru.detail);
2784 }
2785 
2787 {
2788  size_t total_size = 0;
2789  serialized_size(strm.encoding(), total_size, stru);
2790  if (!strm.write_delimiter(total_size)) {
2791  return false;
2792  }
2793 
2794  return (strm << stru.common)
2795  && (strm << stru.detail);
2796 }
2797 
2799 {
2800  size_t total_size = 0;
2801  if (!strm.read_delimiter(total_size)) {
2802  return false;
2803  }
2804 
2805  const size_t start_pos = strm.rpos();
2806 
2807  const bool ret = (strm >> stru.common)
2808  && (strm >> stru.detail);
2809 
2810  if (ret && strm.rpos() - start_pos < total_size) {
2811  strm.skip(total_size - strm.rpos() + start_pos);
2812  }
2813  return ret;
2814 }
2815 
2816 
2817 void serialized_size(const Encoding& encoding, size_t& size,
2818  const XTypes::CompleteBitsetHeader& stru)
2819 {
2820  serialized_size_delimiter(encoding, size);
2821  serialized_size(encoding, size, stru.detail);
2822 }
2823 
2825 {
2826  size_t total_size = 0;
2827  serialized_size(strm.encoding(), total_size, stru);
2828  if (!strm.write_delimiter(total_size)) {
2829  return false;
2830  }
2831 
2832  return (strm << stru.detail);
2833 }
2834 
2836 {
2837  size_t total_size = 0;
2838  if (!strm.read_delimiter(total_size)) {
2839  return false;
2840  }
2841 
2842  const size_t start_pos = strm.rpos();
2843 
2844  const bool ret = (strm >> stru.detail);
2845 
2846  if (ret && strm.rpos() - start_pos < total_size) {
2847  strm.skip(total_size - strm.rpos() + start_pos);
2848  }
2849  return ret;
2850 }
2851 
2852 
2853 void serialized_size(const Encoding& encoding, size_t& size,
2855 {
2856  serialized_size_delimiter(encoding, size);
2857  serialized_size(encoding, size, stru.common);
2858  serialized_size(encoding, size, stru.detail);
2859 }
2860 
2862 {
2863  size_t total_size = 0;
2864  serialized_size(strm.encoding(), total_size, stru);
2865  if (!strm.write_delimiter(total_size)) {
2866  return false;
2867  }
2868 
2869  return (strm << stru.common)
2870  && (strm << stru.detail);
2871 }
2872 
2874 {
2875  size_t total_size = 0;
2876  if (!strm.read_delimiter(total_size)) {
2877  return false;
2878  }
2879 
2880  const size_t start_pos = strm.rpos();
2881 
2882  const bool ret = (strm >> stru.common)
2883  && (strm >> stru.detail);
2884 
2885  if (ret && strm.rpos() - start_pos < total_size) {
2886  strm.skip(total_size - strm.rpos() + start_pos);
2887  }
2888  return ret;
2889 }
2890 
2891 
2892 void serialized_size(const Encoding& encoding, size_t& size,
2894 {
2895  serialized_size_delimiter(encoding, size);
2896  serialized_size(encoding, size, stru.common);
2897  serialized_size(encoding, size, stru.detail);
2898 }
2899 
2901 {
2902  size_t total_size = 0;
2903  serialized_size(strm.encoding(), total_size, stru);
2904  if (!strm.write_delimiter(total_size)) {
2905  return false;
2906  }
2907 
2908  return (strm << stru.common)
2909  && (strm << stru.detail);
2910 }
2911 
2913 {
2914  size_t total_size = 0;
2915  if (!strm.read_delimiter(total_size)) {
2916  return false;
2917  }
2918 
2919  const size_t start_pos = strm.rpos();
2920 
2921  const bool ret = (strm >> stru.common)
2922  && (strm >> stru.detail);
2923 
2924  if (ret && strm.rpos() - start_pos < total_size) {
2925  strm.skip(total_size - strm.rpos() + start_pos);
2926  }
2927  return ret;
2928 }
2929 
2930 
2931 void serialized_size(const Encoding& encoding, size_t& size,
2933 {
2934  serialized_size_delimiter(encoding, size);
2935  serialized_size(encoding, size, stru.common);
2936  serialized_size(encoding, size, stru.ann_builtin);
2937  serialized_size(encoding, size, stru.ann_custom);
2938 }
2939 
2941 {
2942  size_t total_size = 0;
2943  serialized_size(strm.encoding(), total_size, stru);
2944  if (!strm.write_delimiter(total_size)) {
2945  return false;
2946  }
2947 
2948  return (strm << stru.common)
2949  && (strm << stru.ann_builtin)
2950  && (strm << stru.ann_custom);
2951 }
2952 
2954 {
2955  size_t total_size = 0;
2956  if (!strm.read_delimiter(total_size)) {
2957  return false;
2958  }
2959 
2960  const size_t start_pos = strm.rpos();
2961 
2962  const bool ret = (strm >> stru.common)
2963  && (strm >> stru.ann_builtin)
2964  && (strm >> stru.ann_custom);
2965 
2966  if (ret && strm.rpos() - start_pos < total_size) {
2967  strm.skip(total_size - strm.rpos() + start_pos);
2968  }
2969  return ret;
2970 }
2971 
2972 
2973 void serialized_size(const Encoding& encoding, size_t& size,
2975 {
2976  serialized_size_delimiter(encoding, size);
2977  serialized_size(encoding, size, stru.common);
2978  serialized_size(encoding, size, stru.detail);
2979 }
2980 
2982 {
2983  size_t total_size = 0;
2984  serialized_size(strm.encoding(), total_size, stru);
2985  if (!strm.write_delimiter(total_size)) {
2986  return false;
2987  }
2988 
2989  return (strm << stru.common)
2990  && (strm << stru.detail);
2991 }
2992 
2994 {
2995  size_t total_size = 0;
2996  if (!strm.read_delimiter(total_size)) {
2997  return false;
2998  }
2999 
3000  const size_t start_pos = strm.rpos();
3001 
3002  const bool ret = (strm >> stru.common)
3003  && (strm >> stru.detail);
3004 
3005  if (ret && strm.rpos() - start_pos < total_size) {
3006  strm.skip(total_size - strm.rpos() + start_pos);
3007  }
3008  return ret;
3009 }
3010 
3011 
3012 void serialized_size(const Encoding& encoding, size_t& size,
3013  const XTypes::CompleteStructMember& stru)
3014 {
3015  serialized_size_delimiter(encoding, size);
3016  serialized_size(encoding, size, stru.common);
3017  serialized_size(encoding, size, stru.detail);
3018 }
3019 
3021 {
3022  size_t total_size = 0;
3023  serialized_size(strm.encoding(), total_size, stru);
3024  if (!strm.write_delimiter(total_size)) {
3025  return false;
3026  }
3027 
3028  return (strm << stru.common)
3029  && (strm << stru.detail);
3030 }
3031 
3033 {
3034  size_t total_size = 0;
3035  if (!strm.read_delimiter(total_size)) {
3036  return false;
3037  }
3038 
3039  const size_t start_pos = strm.rpos();
3040 
3041  const bool ret = (strm >> stru.common)
3042  && (strm >> stru.detail);
3043 
3044  if (ret && strm.rpos() - start_pos < total_size) {
3045  strm.skip(total_size - strm.rpos() + start_pos);
3046  }
3047 
3048  return ret;
3049 }
3050 
3051 
3052 void serialized_size(const Encoding& encoding, size_t& size,
3053  const XTypes::CompleteUnionHeader& stru)
3054 {
3055  serialized_size_delimiter(encoding, size);
3056  serialized_size(encoding, size, stru.detail);
3057 }
3058 
3060 {
3061  size_t total_size = 0;
3062  serialized_size(strm.encoding(), total_size, stru);
3063  if (!strm.write_delimiter(total_size)) {
3064  return false;
3065  }
3066 
3067  return (strm << stru.detail);
3068 }
3069 
3071 {
3072  size_t total_size = 0;
3073  if (!strm.read_delimiter(total_size)) {
3074  return false;
3075  }
3076 
3077  const size_t start_pos = strm.rpos();
3078 
3079  const bool ret = (strm >> stru.detail);
3080 
3081  if (ret && strm.rpos() - start_pos < total_size) {
3082  strm.skip(total_size - strm.rpos() + start_pos);
3083  }
3084  return ret;
3085 }
3086 
3087 
3088 void serialized_size(const Encoding& encoding, size_t& size,
3089  const XTypes::CompleteUnionMember& stru)
3090 {
3091  serialized_size_delimiter(encoding, size);
3092  serialized_size(encoding, size, stru.common);
3093  serialized_size(encoding, size, stru.detail);
3094 }
3095 
3097 {
3098  size_t total_size = 0;
3099  serialized_size(strm.encoding(), total_size, stru);
3100  if (!strm.write_delimiter(total_size)) {
3101  return false;
3102  }
3103 
3104  return (strm << stru.common)
3105  && (strm << stru.detail);
3106 }
3107 
3109 {
3110  size_t total_size = 0;
3111  if (!strm.read_delimiter(total_size)) {
3112  return false;
3113  }
3114 
3115  const size_t start_pos = strm.rpos();
3116 
3117  const bool ret = (strm >> stru.common)
3118  && (strm >> stru.detail);
3119 
3120  if (ret && strm.rpos() - start_pos < total_size) {
3121  strm.skip(total_size - strm.rpos() + start_pos);
3122  }
3123  return ret;
3124 }
3125 
3126 
3127 void serialized_size(const Encoding& encoding, size_t& size,
3128  const XTypes::MinimalAliasBody& stru)
3129 {
3130  serialized_size_delimiter(encoding, size);
3131  serialized_size(encoding, size, stru.common);
3132 }
3133 
3135 {
3136  size_t total_size = 0;
3137  serialized_size(strm.encoding(), total_size, stru);
3138  if (!strm.write_delimiter(total_size)) {
3139  return false;
3140  }
3141 
3142  return (strm << stru.common);
3143 }
3144 
3146 {
3147  size_t total_size = 0;
3148  if (!strm.read_delimiter(total_size)) {
3149  return false;
3150  }
3151 
3152  const size_t start_pos = strm.rpos();
3153 
3154  const bool ret = (strm >> stru.common);
3155 
3156  if (ret && strm.rpos() - start_pos < total_size) {
3157  strm.skip(total_size - strm.rpos() + start_pos);
3158  }
3159  return ret;
3160 }
3161 
3162 
3163 void serialized_size(const Encoding& encoding, size_t& size,
3165 {
3166  serialized_size_delimiter(encoding, size);
3167 }
3168 
3170 {
3172 }
3173 
3175 {
3176  return XTypes::read_empty_xcdr2_nonfinal(strm);
3177 }
3178 
3179 
3180 void serialized_size(const Encoding& encoding, size_t& size,
3182 {
3183  serialized_size_delimiter(encoding, size);
3184 }
3185 
3187 {
3189 }
3190 
3192 {
3193  return XTypes::read_empty_xcdr2_nonfinal(strm);
3194 }
3195 
3196 
3197 void serialized_size(const Encoding& encoding, size_t& size,
3199 {
3200  serialized_size_delimiter(encoding, size);
3201  XTypes::NameHash_forany stru_name_hash(const_cast<XTypes::NameHash_slice*>(stru.name_hash));
3202  serialized_size(encoding, size, stru.common);
3203  serialized_size(encoding, size, stru_name_hash);
3204  serialized_size(encoding, size, stru.default_value);
3205 }
3206 
3208 {
3209  size_t total_size = 0;
3210  serialized_size(strm.encoding(), total_size, stru);
3211  if (!strm.write_delimiter(total_size)) {
3212  return false;
3213  }
3214 
3215  XTypes::NameHash_forany stru_name_hash(const_cast<XTypes::NameHash_slice*>(stru.name_hash));
3216  return (strm << stru.common)
3217  && (strm << stru_name_hash)
3218  && (strm << stru.default_value);
3219 }
3220 
3222 {
3223  XTypes::NameHash_forany stru_name_hash(const_cast<XTypes::NameHash_slice*>(stru.name_hash));
3224  size_t total_size = 0;
3225  if (!strm.read_delimiter(total_size)) {
3226  return false;
3227  }
3228 
3229  const size_t start_pos = strm.rpos();
3230 
3231  const bool ret = (strm >> stru.common)
3232  && (strm >> stru_name_hash)
3233  && (strm >> stru.default_value);
3234 
3235  if (ret && strm.rpos() - start_pos < total_size) {
3236  strm.skip(total_size - strm.rpos() + start_pos);
3237  }
3238  return ret;
3239 }
3240 
3241 
3242 void serialized_size(const Encoding& encoding, size_t& size,
3243  const XTypes::MinimalArrayHeader& stru)
3244 {
3245  serialized_size_delimiter(encoding, size);
3246  serialized_size(encoding, size, stru.common);
3247 }
3248 
3250 {
3251  size_t total_size = 0;
3252  serialized_size(strm.encoding(), total_size, stru);
3253  if (!strm.write_delimiter(total_size)) {
3254  return false;
3255  }
3256 
3257  return (strm << stru.common);
3258 }
3259 
3261 {
3262  size_t total_size = 0;
3263  if (!strm.read_delimiter(total_size)) {
3264  return false;
3265  }
3266 
3267  const size_t start_pos = strm.rpos();
3268 
3269  const bool ret = (strm >> stru.common);
3270 
3271  if (ret && strm.rpos() - start_pos < total_size) {
3272  strm.skip(total_size - strm.rpos() + start_pos);
3273  }
3274  return ret;
3275 }
3276 
3277 
3278 void serialized_size(const Encoding& encoding, size_t& size,
3279  const XTypes::MinimalBitfield& stru)
3280 {
3281  serialized_size_delimiter(encoding, size);
3282  XTypes::NameHash_forany stru_name_hash(const_cast<XTypes::NameHash_slice*>(stru.name_hash));
3283  serialized_size(encoding, size, stru.common);
3284  serialized_size(encoding, size, stru_name_hash);
3285 }
3286 
3288 {
3289  size_t total_size = 0;
3290  serialized_size(strm.encoding(), total_size, stru);
3291  if (!strm.write_delimiter(total_size)) {
3292  return false;
3293  }
3294 
3295  XTypes::NameHash_forany stru_name_hash(const_cast<XTypes::NameHash_slice*>(stru.name_hash));
3296  return (strm << stru.common)
3297  && (strm << stru_name_hash);
3298 }
3299 
3301 {
3302  XTypes::NameHash_forany stru_name_hash(const_cast<XTypes::NameHash_slice*>(stru.name_hash));
3303  size_t total_size = 0;
3304  if (!strm.read_delimiter(total_size)) {
3305  return false;
3306  }
3307 
3308  const size_t start_pos = strm.rpos();
3309 
3310  const bool ret = (strm >> stru.common)
3311  && (strm >> stru_name_hash);
3312 
3313  if (ret && strm.rpos() - start_pos < total_size) {
3314  strm.skip(total_size - strm.rpos() + start_pos);
3315  }
3316  return ret;
3317 }
3318 
3319 
3320 void serialized_size(const Encoding& encoding, size_t& size,
3321  const XTypes::MinimalBitflag& stru)
3322 {
3323  serialized_size_delimiter(encoding, size);
3324  serialized_size(encoding, size, stru.common);
3325  serialized_size(encoding, size, stru.detail);
3326 }
3327 
3329 {
3330  size_t total_size = 0;
3331  serialized_size(strm.encoding(), total_size, stru);
3332  if (!strm.write_delimiter(total_size)) {
3333  return false;
3334  }
3335 
3336  return (strm << stru.common)
3337  && (strm << stru.detail);
3338 }
3339 
3341 {
3342  size_t total_size = 0;
3343  if (!strm.read_delimiter(total_size)) {
3344  return false;
3345  }
3346 
3347  const size_t start_pos = strm.rpos();
3348 
3349  const bool ret = (strm >> stru.common)
3350  && (strm >> stru.detail);
3351 
3352  if (ret && strm.rpos() - start_pos < total_size) {
3353  strm.skip(total_size - strm.rpos() + start_pos);
3354  }
3355  return ret;
3356 }
3357 
3358 
3359 void serialized_size(const Encoding& encoding, size_t& size,
3361 {
3362  serialized_size_delimiter(encoding, size);
3363 }
3364 
3366 {
3368 }
3369 
3371 {
3372  return XTypes::read_empty_xcdr2_nonfinal(strm);
3373 }
3374 
3375 
3376 void serialized_size(const Encoding& encoding, size_t& size,
3378 {
3379  serialized_size_delimiter(encoding, size);
3380  serialized_size(encoding, size, stru.common);
3381 }
3382 
3384 {
3385  size_t total_size = 0;
3386  serialized_size(strm.encoding(), total_size, stru);
3387  if (!strm.write_delimiter(total_size)) {
3388  return false;
3389  }
3390 
3391  return (strm << stru.common);
3392 }
3393 
3395 {
3396  size_t total_size = 0;
3397  if (!strm.read_delimiter(total_size)) {
3398  return false;
3399  }
3400 
3401  const size_t start_pos = strm.rpos();
3402 
3403  const bool ret = (strm >> stru.common);
3404 
3405  if (ret && strm.rpos() - start_pos < total_size) {
3406  strm.skip(total_size - strm.rpos() + start_pos);
3407  }
3408  return ret;
3409 }
3410 
3411 
3412 void serialized_size(const Encoding& encoding, size_t& size,
3413  const XTypes::MinimalCollectionHeader& stru)
3414 {
3415  serialized_size_delimiter(encoding, size);
3416  serialized_size(encoding, size, stru.common);
3417 }
3418 
3420 {
3421  size_t total_size = 0;
3422  serialized_size(strm.encoding(), total_size, stru);
3423  if (!strm.write_delimiter(total_size)) {
3424  return false;
3425  }
3426 
3427  return (strm << stru.common);
3428 }
3429 
3431 {
3432  size_t total_size = 0;
3433  if (!strm.read_delimiter(total_size)) {
3434  return false;
3435  }
3436 
3437  const size_t start_pos = strm.rpos();
3438 
3439  const bool ret = (strm >> stru.common);
3440 
3441  if (ret && strm.rpos() - start_pos < total_size) {
3442  strm.skip(total_size - strm.rpos() + start_pos);
3443  }
3444  return ret;
3445 }
3446 
3447 
3448 void serialized_size(const Encoding& encoding, size_t& size,
3450 {
3451  serialized_size_delimiter(encoding, size);
3452  serialized_size(encoding, size, stru.common);
3453 }
3454 
3456 {
3457  size_t total_size = 0;
3458  serialized_size(strm.encoding(), total_size, stru);
3459  if (!strm.write_delimiter(total_size)) {
3460  return false;
3461  }
3462 
3463  return (strm << stru.common);
3464 }
3465 
3467 {
3468  size_t total_size = 0;
3469  if (!strm.read_delimiter(total_size)) {
3470  return false;
3471  }
3472 
3473  const size_t start_pos = strm.rpos();
3474 
3475  const bool ret = (strm >> stru.common);
3476 
3477  if (ret && strm.rpos() - start_pos < total_size) {
3478  strm.skip(total_size - strm.rpos() + start_pos);
3479  }
3480  return ret;
3481 }
3482 
3483 
3484 void serialized_size(const Encoding& encoding, size_t& size,
3486 {
3487  serialized_size_delimiter(encoding, size);
3488  serialized_size(encoding, size, stru.common);
3489  serialized_size(encoding, size, stru.detail);
3490 }
3491 
3493 {
3494  size_t total_size = 0;
3495  serialized_size(strm.encoding(), total_size, stru);
3496  if (!strm.write_delimiter(total_size)) {
3497  return false;
3498  }
3499 
3500  return (strm << stru.common)
3501  && (strm << stru.detail);
3502 }
3503 
3505 {
3506  size_t total_size = 0;
3507  if (!strm.read_delimiter(total_size)) {
3508  return false;
3509  }
3510 
3511  const size_t start_pos = strm.rpos();
3512 
3513  const bool ret = (strm >> stru.common)
3514  && (strm >> stru.detail);
3515 
3516  if (ret && strm.rpos() - start_pos < total_size) {
3517  strm.skip(total_size - strm.rpos() + start_pos);
3518  }
3519  return ret;
3520 }
3521 
3522 
3523 void serialized_size(const Encoding& encoding, size_t& size,
3524  const XTypes::MinimalStructMember& stru)
3525 {
3526  serialized_size_delimiter(encoding, size);
3527  serialized_size(encoding, size, stru.common);
3528  serialized_size(encoding, size, stru.detail);
3529 }
3530 
3532 {
3533  size_t total_size = 0;
3534  serialized_size(strm.encoding(), total_size, stru);
3535  if (!strm.write_delimiter(total_size)) {
3536  return false;
3537  }
3538 
3539  return (strm << stru.common)
3540  && (strm << stru.detail);
3541 }
3542 
3544 {
3545  size_t total_size = 0;
3546  if (!strm.read_delimiter(total_size)) {
3547  return false;
3548  }
3549 
3550  const size_t start_pos = strm.rpos();
3551 
3552  const bool ret = (strm >> stru.common)
3553  && (strm >> stru.detail);
3554 
3555  if (ret && strm.rpos() - start_pos < total_size) {
3556  strm.skip(total_size - strm.rpos() + start_pos);
3557  }
3558  return ret;
3559 }
3560 
3561 
3562 void serialized_size(const Encoding& encoding, size_t& size,
3563  const XTypes::MinimalUnionHeader& stru)
3564 {
3565  serialized_size_delimiter(encoding, size);
3566  serialized_size(encoding, size, stru.detail);
3567 }
3568 
3570 {
3571  size_t total_size = 0;
3572  serialized_size(strm.encoding(), total_size, stru);
3573  if (!strm.write_delimiter(total_size)) {
3574  return false;
3575  }
3576 
3577  return (strm << stru.detail);
3578 }
3579 
3581 {
3582  size_t total_size = 0;
3583  if (!strm.read_delimiter(total_size)) {
3584  return false;
3585  }
3586 
3587  const size_t start_pos = strm.rpos();
3588 
3589  const bool ret = (strm >> stru.detail);
3590 
3591  if (ret && strm.rpos() - start_pos < total_size) {
3592  strm.skip(total_size - strm.rpos() + start_pos);
3593  }
3594  return ret;
3595 }
3596 
3597 
3598 void serialized_size(const Encoding& encoding, size_t& size,
3599  const XTypes::MinimalUnionMember& stru)
3600 {
3601  serialized_size_delimiter(encoding, size);
3602  serialized_size(encoding, size, stru.common);
3603  serialized_size(encoding, size, stru.detail);
3604 }
3605 
3607 {
3608  size_t total_size = 0;
3609  serialized_size(strm.encoding(), total_size, stru);
3610  if (!strm.write_delimiter(total_size)) {
3611  return false;
3612  }
3613 
3614  return (strm << stru.common)
3615  && (strm << stru.detail);
3616 }
3617 
3619 {
3620  size_t total_size = 0;
3621  if (!strm.read_delimiter(total_size)) {
3622  return false;
3623  }
3624 
3625  const size_t start_pos = strm.rpos();
3626 
3627  const bool ret = (strm >> stru.common)
3628  && (strm >> stru.detail);
3629 
3630  if (ret && strm.rpos() - start_pos < total_size) {
3631  strm.skip(total_size - strm.rpos() + start_pos);
3632  }
3633  return ret;
3634 }
3635 
3636 
3637 void serialized_size(const Encoding& encoding, size_t& size,
3639 {
3641  switch (uni.kind()) {
3642  case XTypes::TK_BOOLEAN: {
3643  primitive_serialized_size(encoding, size, ACE_OutputCDR::from_boolean(uni.boolean_value()));
3644  break;
3645  }
3646  case XTypes::TK_BYTE: {
3647  primitive_serialized_size(encoding, size, ACE_OutputCDR::from_octet(uni.byte_value()));
3648  break;
3649  }
3650  case XTypes::TK_INT16: {
3651  primitive_serialized_size(encoding, size, uni.int16_value());
3652  break;
3653  }
3654  case XTypes::TK_UINT16: {
3655  primitive_serialized_size(encoding, size, uni.uint16_value());
3656  break;
3657  }
3658  case XTypes::TK_INT32: {
3659  primitive_serialized_size(encoding, size, uni.int32_value());
3660  break;
3661  }
3662  case XTypes::TK_UINT32: {
3663  primitive_serialized_size(encoding, size, uni.uint32_value());
3664  break;
3665  }
3666  case XTypes::TK_INT64: {
3667  primitive_serialized_size(encoding, size, uni.int64_value());
3668  break;
3669  }
3670  case XTypes::TK_UINT64: {
3671  primitive_serialized_size(encoding, size, uni.uint64_value());
3672  break;
3673  }
3674  case XTypes::TK_FLOAT32: {
3675  primitive_serialized_size(encoding, size, uni.float32_value());
3676  break;
3677  }
3678  case XTypes::TK_FLOAT64: {
3679  primitive_serialized_size(encoding, size, uni.float64_value());
3680  break;
3681  }
3682  case XTypes::TK_FLOAT128: {
3683  primitive_serialized_size(encoding, size, uni.float128_value());
3684  break;
3685  }
3686  case XTypes::TK_CHAR8: {
3687  primitive_serialized_size(encoding, size, ACE_OutputCDR::from_char(uni.char_value()));
3688  break;
3689  }
3690  case XTypes::TK_CHAR16: {
3691  primitive_serialized_size(encoding, size, ACE_OutputCDR::from_wchar(uni.wchar_value()));
3692  break;
3693  }
3694  case XTypes::TK_ENUM: {
3695  primitive_serialized_size(encoding, size, uni.enumerated_value());
3696  break;
3697  }
3698  case XTypes::TK_STRING8: {
3699  DCPS::primitive_serialized_size_ulong(encoding, size);
3700  size += ACE_OS::strlen(uni.string8_value().c_str()) + 1;
3701  break;
3702  }
3703  case XTypes::TK_STRING16: {
3704 #ifdef DDS_HAS_WCHAR
3705  DCPS::primitive_serialized_size_ulong(encoding, size);
3706  size += ACE_OS::strlen(uni.string16_value().c_str()) * DCPS::char16_cdr_size;
3707 #endif
3708  break;
3709  }
3710  default: {
3711  serialized_size(encoding, size, uni.extended_value());
3712  break;
3713  }
3714  }
3715 }
3716 
3718 {
3719  if (!(strm << ACE_OutputCDR::from_octet(uni.kind()))) {
3720  return false;
3721  }
3722  switch (uni.kind()) {
3723  case XTypes::TK_BOOLEAN: {
3724  return (strm << ACE_OutputCDR::from_boolean(uni.boolean_value()));
3725  }
3726  case XTypes::TK_BYTE: {
3727  return (strm << ACE_OutputCDR::from_octet(uni.byte_value()));
3728  }
3729  case XTypes::TK_INT16: {
3730  return (strm << uni.int16_value());
3731  }
3732  case XTypes::TK_UINT16: {
3733  return (strm << uni.uint16_value());
3734  }
3735  case XTypes::TK_INT32: {
3736  return (strm << uni.int32_value());
3737  }
3738  case XTypes::TK_UINT32: {
3739  return (strm << uni.uint32_value());
3740  }
3741  case XTypes::TK_INT64: {
3742  return (strm << uni.int64_value());
3743  }
3744  case XTypes::TK_UINT64: {
3745  return (strm << uni.uint64_value());
3746  }
3747  case XTypes::TK_FLOAT32: {
3748  return (strm << uni.float32_value());
3749  }
3750  case XTypes::TK_FLOAT64: {
3751  return (strm << uni.float64_value());
3752  }
3753  case XTypes::TK_FLOAT128: {
3754  return (strm << uni.float128_value());
3755  }
3756  case XTypes::TK_CHAR8: {
3757  return (strm << ACE_OutputCDR::from_char(uni.char_value()));
3758  }
3759  case XTypes::TK_CHAR16: {
3760  return (strm << ACE_OutputCDR::from_wchar(uni.wchar_value()));
3761  }
3762  case XTypes::TK_ENUM: {
3763  return (strm << uni.enumerated_value());
3764  }
3765  case XTypes::TK_STRING8: {
3766  return (strm << Serializer::FromBoundedString<char>(uni.string8_value(), 128));
3767  }
3768  case XTypes::TK_STRING16: {
3769 #ifdef DDS_HAS_WCHAR
3770  return (strm << Serializer::FromBoundedString<wchar_t>(uni.string16_value(), 128));
3771 #else
3772  return false;
3773 #endif
3774  }
3775  default: {
3776  return (strm << uni.extended_value());
3777  }
3778  }
3779 }
3780 
3782 {
3784  if (!(strm >> ACE_InputCDR::to_octet(kind))) {
3785  return false;
3786  }
3788 
3789  switch (kind) {
3790  case XTypes::TK_BOOLEAN:
3791  return (strm >> ACE_InputCDR::to_boolean(uni.boolean_value()));
3792  case XTypes::TK_BYTE:
3793  return (strm >> ACE_InputCDR::to_octet(uni.byte_value()));
3794  case XTypes::TK_INT16:
3795  return (strm >> uni.int16_value());
3796  case XTypes::TK_UINT16:
3797  return (strm >> uni.uint16_value());
3798  case XTypes::TK_INT32:
3799  return (strm >> uni.int32_value());
3800  case XTypes::TK_UINT32:
3801  return (strm >> uni.uint32_value());
3802  case XTypes::TK_INT64:
3803  return (strm >> uni.int64_value());
3804  case XTypes::TK_UINT64:
3805  return (strm >> uni.uint64_value());
3806  case XTypes::TK_FLOAT32:
3807  return (strm >> uni.float32_value());
3808  case XTypes::TK_FLOAT64:
3809  return (strm >> uni.float64_value());
3810  case XTypes::TK_FLOAT128:
3811  return (strm >> uni.float128_value());
3812  case XTypes::TK_CHAR8:
3813  return (strm >> ACE_InputCDR::to_char(uni.char_value()));
3814  case XTypes::TK_CHAR16:
3815  return (strm >> ACE_InputCDR::to_wchar(uni.wchar_value()));
3816  case XTypes::TK_ENUM:
3817  return (strm >> uni.enumerated_value());
3818  case XTypes::TK_STRING8:
3819  return (strm >> Serializer::ToBoundedString<char>(uni.string8_value(), 128));
3820  case XTypes::TK_STRING16:
3821 #ifdef DDS_HAS_WCHAR
3822  return (strm >> Serializer::ToBoundedString<wchar_t>(uni.string16_value(), 128));
3823 #endif
3824  return false;
3825  default:
3826  return (strm >> uni.extended_value());
3827  }
3828 }
3829 
3830 
3831 void serialized_size(const Encoding& encoding, size_t& size,
3833 {
3834  serialized_size_delimiter(encoding, size);
3835  XTypes::NameHash_forany stru_paramname_hash(const_cast<XTypes::NameHash_slice*>(stru.paramname_hash));
3836  serialized_size(encoding, size, stru_paramname_hash);
3837  serialized_size(encoding, size, stru.value);
3838 }
3839 
3841 {
3842  size_t total_size = 0;
3843  serialized_size(strm.encoding(), total_size, stru);
3844  if (!strm.write_delimiter(total_size)) {
3845  return false;
3846  }
3847 
3848  XTypes::NameHash_forany stru_paramname_hash(const_cast<XTypes::NameHash_slice*>(stru.paramname_hash));
3849  return (strm << stru_paramname_hash)
3850  && (strm << stru.value);
3851 }
3852 
3854 {
3855  size_t total_size = 0;
3856  if (!strm.read_delimiter(total_size)) {
3857  return false;
3858  }
3859 
3860  const size_t start_pos = strm.rpos();
3861 
3862  XTypes::NameHash_forany stru_paramname_hash(const_cast<XTypes::NameHash_slice*>(stru.paramname_hash));
3863  const bool ret = (strm >> stru_paramname_hash)
3864  && (strm >> stru.value);
3865 
3866  if (ret && strm.rpos() - start_pos < total_size) {
3867  strm.skip(total_size - strm.rpos() + start_pos);
3868  }
3869  return ret;
3870 }
3871 
3872 
3873 void serialized_size(const Encoding& encoding, size_t& size,
3875 {
3876  serialized_size_delimiter(encoding, size);
3877 
3878  size += DCPS::boolean_cdr_size;
3879  if (stru.unit) {
3880  DCPS::primitive_serialized_size_ulong(encoding, size);
3881  size += ACE_OS::strlen(stru.unit.value().c_str()) + 1;
3882  }
3883 
3884  serialized_size(encoding, size, stru.min);
3885  serialized_size(encoding, size, stru.max);
3886 
3887  size += DCPS::boolean_cdr_size;
3888  if (stru.hash_id) {
3889  DCPS::primitive_serialized_size_ulong(encoding, size);
3890  size += ACE_OS::strlen(stru.hash_id.value().c_str()) + 1;
3891  }
3892 }
3893 
3895 {
3896  size_t total_size = 0;
3897  serialized_size(strm.encoding(), total_size, stru);
3898  if (!strm.write_delimiter(total_size)) {
3899  return false;
3900  }
3901 
3902  return (strm << stru.unit)
3903  && (strm << stru.min)
3904  && (strm << stru.max)
3905  && (strm << stru.hash_id);
3906 }
3907 
3909 {
3910  size_t total_size = 0;
3911  if (!strm.read_delimiter(total_size)) {
3912  return false;
3913  }
3914 
3915  const size_t start_pos = strm.rpos();
3916 
3917  const bool ret = (strm >> stru.unit)
3918  && (strm >> stru.min)
3919  && (strm >> stru.max)
3920  && (strm >> stru.hash_id);
3921 
3922  if (ret && strm.rpos() - start_pos < total_size) {
3923  strm.skip(total_size - strm.rpos() + start_pos);
3924  }
3925  return ret;
3926 }
3927 
3928 
3929 void serialized_size(const Encoding& encoding, size_t& size,
3931 {
3932  DCPS::primitive_serialized_size_ulong(encoding, size);
3933  size += ACE_OS::strlen(stru.placement.c_str()) + 1;
3934  DCPS::primitive_serialized_size_ulong(encoding, size);
3935  size += ACE_OS::strlen(stru.language.c_str()) + 1;
3936  DCPS::primitive_serialized_size_ulong(encoding, size);
3937  size += ACE_OS::strlen(stru.text.c_str()) + 1;
3938 }
3939 
3941 {
3942  return (strm << Serializer::FromBoundedString<char>(stru.placement, 32))
3943  && (strm << Serializer::FromBoundedString<char>(stru.language, 32))
3944  && (strm << stru.text);
3945 }
3946 
3948 {
3949  return (strm >> Serializer::ToBoundedString<char>(stru.placement, 32))
3950  && (strm >> Serializer::ToBoundedString<char>(stru.language, 32))
3951  && (strm >> stru.text);
3952 }
3953 
3954 
3955 void serialized_size(const Encoding& encoding, size_t& size,
3956  const XTypes::CommonAliasBody& stru)
3957 {
3958  primitive_serialized_size(encoding, size, stru.related_flags);
3959  serialized_size(encoding, size, stru.related_type);
3960 }
3961 
3963 {
3964  return (strm << stru.related_flags)
3965  && (strm << stru.related_type);
3966 }
3967 
3969 {
3970  return (strm >> stru.related_flags)
3971  && (strm >> stru.related_type);
3972 }
3973 
3974 
3975 void serialized_size(const Encoding& encoding, size_t& size,
3977 {
3978  primitive_serialized_size(encoding, size, stru.member_flags);
3979  serialized_size(encoding, size, stru.member_type_id);
3980 }
3981 
3983 {
3984  return (strm << stru.member_flags)
3985  && (strm << stru.member_type_id);
3986 }
3987 
3989 {
3990  return (strm >> stru.member_flags)
3991  && (strm >> stru.member_type_id);
3992 }
3993 
3994 
3995 void serialized_size(const Encoding& encoding, size_t& size,
3996  const XTypes::CommonArrayHeader& stru)
3997 {
3998  serialized_size(encoding, size, stru.bound_seq);
3999 }
4000 
4002 {
4003  return (strm << stru.bound_seq);
4004 }
4005 
4007 {
4008  return (strm >> stru.bound_seq);
4009 }
4010 
4011 
4012 void serialized_size(const Encoding& encoding, size_t& size,
4013  const XTypes::CommonBitfield& stru)
4014 {
4015  primitive_serialized_size(encoding, size, stru.position);
4016  primitive_serialized_size(encoding, size, stru.flags);
4019 }
4020 
4022 {
4023  return (strm << stru.position)
4024  && (strm << stru.flags)
4025  && (strm << ACE_OutputCDR::from_octet(stru.bitcount))
4026  && (strm << ACE_OutputCDR::from_octet(stru.holder_type));
4027 }
4028 
4030 {
4031  return (strm >> stru.position)
4032  && (strm >> stru.flags)
4033  && (strm >> ACE_InputCDR::to_octet(stru.bitcount))
4034  && (strm >> ACE_InputCDR::to_octet(stru.holder_type));
4035 }
4036 
4037 
4038 void serialized_size(const Encoding& encoding, size_t& size,
4039  const XTypes::CommonBitflag& stru)
4040 {
4041  primitive_serialized_size(encoding, size, stru.position);
4042  primitive_serialized_size(encoding, size, stru.flags);
4043 }
4044 
4046 {
4047  return (strm << stru.position)
4048  && (strm << stru.flags);
4049 }
4050 
4052 {
4053  return (strm >> stru.position)
4054  && (strm >> stru.flags);
4055 }
4056 
4057 
4058 void serialized_size(const Encoding& encoding, size_t& size,
4059  const XTypes::CommonCollectionElement& stru)
4060 {
4061  primitive_serialized_size(encoding, size, stru.element_flags);
4062  serialized_size(encoding, size, stru.type);
4063 }
4064 
4066 {
4067  return (strm << stru.element_flags)
4068  && (strm << stru.type);
4069 }
4070 
4072 {
4073  return (strm >> stru.element_flags)
4074  && (strm >> stru.type);
4075 }
4076 
4077 
4078 void serialized_size(const Encoding& encoding, size_t& size,
4079  const XTypes::CommonCollectionHeader& stru)
4080 {
4081  primitive_serialized_size(encoding, size, stru.bound);
4082 }
4083 
4085 {
4086  return (strm << stru.bound);
4087 }
4088 
4090 {
4091  return (strm >> stru.bound);
4092 }
4093 
4094 
4095 void serialized_size(const Encoding& encoding, size_t& size,
4097 {
4098  primitive_serialized_size(encoding, size, stru.member_flags);
4099  serialized_size(encoding, size, stru.type_id);
4100 }
4101 
4103 {
4104  return (strm << stru.member_flags)
4105  && (strm << stru.type_id);
4106 }
4107 
4109 {
4110  return (strm >> stru.member_flags)
4111  && (strm >> stru.type_id);
4112 }
4113 
4114 
4115 void serialized_size(const Encoding& encoding, size_t& size,
4116  const XTypes::CommonEnumeratedHeader& stru)
4117 {
4118  primitive_serialized_size(encoding, size, stru.bit_bound);
4119 }
4120 
4122 {
4123  return (strm << stru.bit_bound);
4124 }
4125 
4127 {
4128  return (strm >> stru.bit_bound);
4129 }
4130 
4131 
4132 void serialized_size(const Encoding& encoding, size_t& size,
4133  const XTypes::CommonEnumeratedLiteral& stru)
4134 {
4135  serialized_size_delimiter(encoding, size);
4136  primitive_serialized_size(encoding, size, stru.value);
4137  primitive_serialized_size(encoding, size, stru.flags);
4138 }
4139 
4141 {
4142  size_t total_size = 0;
4143  serialized_size(strm.encoding(), total_size, stru);
4144  if (!strm.write_delimiter(total_size)) {
4145  return false;
4146  }
4147 
4148  return (strm << stru.value)
4149  && (strm << stru.flags);
4150 }
4151 
4153 {
4154  size_t total_size = 0;
4155  if (!strm.read_delimiter(total_size)) {
4156  return false;
4157  }
4158 
4159  const size_t start_pos = strm.rpos();
4160 
4161  const bool ret = (strm >> stru.value)
4162  && (strm >> stru.flags);
4163 
4164  if (ret && strm.rpos() - start_pos < total_size) {
4165  strm.skip(total_size - strm.rpos() + start_pos);
4166  }
4167  return ret;
4168 }
4169 
4170 
4171 void serialized_size(const Encoding& encoding, size_t& size,
4172  const XTypes::CommonStructMember& stru)
4173 {
4174  primitive_serialized_size(encoding, size, stru.member_id);
4175  primitive_serialized_size(encoding, size, stru.member_flags);
4176  serialized_size(encoding, size, stru.member_type_id);
4177 }
4178 
4180 {
4181  return (strm << stru.member_id)
4182  && (strm << stru.member_flags)
4183  && (strm << stru.member_type_id);
4184 }
4185 
4187 {
4188  return (strm >> stru.member_id)
4189  && (strm >> stru.member_flags)
4190  && (strm >> stru.member_type_id);
4191 }
4192 
4193 
4194 void serialized_size(const Encoding& encoding, size_t& size,
4195  const XTypes::CommonUnionMember& stru)
4196 {
4197  primitive_serialized_size(encoding, size, stru.member_id);
4198  primitive_serialized_size(encoding, size, stru.member_flags);
4199  serialized_size(encoding, size, stru.type_id);
4200  serialized_size(encoding, size, stru.label_seq);
4201 }
4202 
4204 {
4205  return (strm << stru.member_id)
4206  && (strm << stru.member_flags)
4207  && (strm << stru.type_id)
4208  && (strm << stru.label_seq);
4209 }
4210 
4212 {
4213  return (strm >> stru.member_id)
4214  && (strm >> stru.member_flags)
4215  && (strm >> stru.type_id)
4216  && (strm >> stru.label_seq);
4217 }
4218 
4219 
4220 void serialized_size(const Encoding& encoding, size_t& size,
4221  const XTypes::CompleteElementDetail& stru)
4222 {
4223  serialized_size(encoding, size, stru.ann_builtin);
4224  serialized_size(encoding, size, stru.ann_custom);
4225 }
4226 
4228 {
4229  return (strm << stru.ann_builtin)
4230  && (strm << stru.ann_custom);
4231 }
4232 
4234 {
4235  return (strm >> stru.ann_builtin)
4236  && (strm >> stru.ann_custom);
4237 }
4238 
4239 
4240 void serialized_size(const Encoding& encoding, size_t& size,
4241  const XTypes::CompleteMemberDetail& stru)
4242 {
4243  DCPS::primitive_serialized_size_ulong(encoding, size);
4244  size += ACE_OS::strlen(stru.name.c_str()) + 1;
4245  serialized_size(encoding, size, stru.ann_builtin);
4246  serialized_size(encoding, size, stru.ann_custom);
4247 }
4248 
4250 {
4252  && (strm << stru.ann_builtin)
4253  && (strm << stru.ann_custom);
4254 }
4255 
4257 {
4259  && (strm >> stru.ann_builtin)
4260  && (strm >> stru.ann_custom);
4261 }
4262 
4263 
4264 void serialized_size(const Encoding& encoding, size_t& size,
4265  const XTypes::MinimalMemberDetail& stru)
4266 {
4267  XTypes::NameHash_forany stru_name_hash(const_cast<XTypes::NameHash_slice*>(stru.name_hash));
4268  serialized_size(encoding, size, stru_name_hash);
4269 }
4270 
4272 {
4273  XTypes::NameHash_forany stru_name_hash(const_cast<XTypes::NameHash_slice*>(stru.name_hash));
4274  return (strm << stru_name_hash);
4275 }
4276 
4278 {
4279  XTypes::NameHash_forany stru_name_hash(const_cast<XTypes::NameHash_slice*>(stru.name_hash));
4280  return (strm >> stru_name_hash);
4281 }
4282 
4283 
4284 void serialized_size(const Encoding& encoding, size_t& size,
4285  const XTypes::ExtendedTypeDefn&)
4286 {
4287  serialized_size_delimiter(encoding, size);
4288 }
4289 
4291 {
4293 }
4294 
4296 {
4297  return XTypes::read_empty_xcdr2_nonfinal(strm);
4298 }
4299 
4300 
4301 void serialized_size(const Encoding& encoding, size_t& size,
4302  const XTypes::PlainArrayLElemDefn& stru)
4303 {
4304  serialized_size(encoding, size, stru.header);
4305  serialized_size(encoding, size, stru.array_bound_seq);
4306  serialized_size(encoding, size, *stru.element_identifier);
4307 }
4308 
4310 {
4311  return (strm << stru.header)
4312  && (strm << stru.array_bound_seq)
4313  && (strm << *stru.element_identifier);
4314 }
4315 
4317 {
4318  return (strm >> stru.header)
4319  && (strm >> stru.array_bound_seq)
4320  && (strm >> *stru.element_identifier);
4321 }
4322 
4323 
4324 void serialized_size(const Encoding& encoding, size_t& size,
4325  const XTypes::PlainArraySElemDefn& stru)
4326 {
4327  serialized_size(encoding, size, stru.header);
4328  serialized_size(encoding, size, stru.array_bound_seq);
4329  serialized_size(encoding, size, *stru.element_identifier);
4330 }
4331 
4333 {
4334  return (strm << stru.header)
4335  && (strm << stru.array_bound_seq)
4336  && (strm << *stru.element_identifier);
4337 }
4338 
4340 {
4341  return (strm >> stru.header)
4342  && (strm >> stru.array_bound_seq)
4343  && (strm >> *stru.element_identifier);
4344 }
4345 
4346 
4347 void serialized_size(const Encoding& encoding, size_t& size,
4348  const XTypes::PlainMapLTypeDefn& stru)
4349 {
4350  serialized_size(encoding, size, stru.header);
4351  primitive_serialized_size(encoding, size, stru.bound);
4352  serialized_size(encoding, size, *stru.element_identifier);
4353  primitive_serialized_size(encoding, size, stru.key_flags);
4354  serialized_size(encoding, size, *stru.key_identifier);
4355 }
4356 
4358 {
4359  return (strm << stru.header)
4360  && (strm << stru.bound)
4361  && (strm << *stru.element_identifier)
4362  && (strm << stru.key_flags)
4363  && (strm << *stru.key_identifier);
4364 }
4365 
4367 {
4368  return (strm >> stru.header)
4369  && (strm >> stru.bound)
4370  && (strm >> *stru.element_identifier)
4371  && (strm >> stru.key_flags)
4372  && (strm >> *stru.key_identifier);
4373 }
4374 
4375 
4376 void serialized_size(const Encoding& encoding, size_t& size,
4377  const XTypes::PlainMapSTypeDefn& stru)
4378 {
4379  serialized_size(encoding, size, stru.header);
4381  serialized_size(encoding, size, *stru.element_identifier);
4382  primitive_serialized_size(encoding, size, stru.key_flags);
4383  serialized_size(encoding, size, *stru.key_identifier);
4384 }
4385 
4387 {
4388  return (strm << stru.header)
4389  && (strm << ACE_OutputCDR::from_octet(stru.bound))
4390  && (strm << *stru.element_identifier)
4391  && (strm << stru.key_flags)
4392  && (strm << *stru.key_identifier);
4393 }
4394 
4396 {
4397  return (strm >> stru.header)
4398  && (strm >> ACE_InputCDR::to_octet(stru.bound))
4399  && (strm >> *stru.element_identifier)
4400  && (strm >> stru.key_flags)
4401  && (strm >> *stru.key_identifier);
4402 }
4403 
4404 
4405 void serialized_size(const Encoding& encoding, size_t& size,
4406  const XTypes::PlainSequenceLElemDefn& stru)
4407 {
4408  serialized_size(encoding, size, stru.header);
4409  primitive_serialized_size(encoding, size, stru.bound);
4410  serialized_size(encoding, size, *stru.element_identifier);
4411 }
4412 
4414 {
4415  return (strm << stru.header)
4416  && (strm << stru.bound)
4417  && (strm << *stru.element_identifier);
4418 }
4419 
4421 {
4422  return (strm >> stru.header)
4423  && (strm >> stru.bound)
4424  && (strm >> *stru.element_identifier);
4425 }
4426 
4427 
4428 void serialized_size(const Encoding& encoding, size_t& size,
4429  const XTypes::PlainSequenceSElemDefn& stru)
4430 {
4431  serialized_size(encoding, size, stru.header);
4433  serialized_size(encoding, size, *stru.element_identifier);
4434 }
4435 
4437 {
4438  return (strm << stru.header)
4439  && (strm << ACE_OutputCDR::from_octet(stru.bound))
4440  && (strm << *stru.element_identifier);
4441 }
4442 
4444 {
4445  return (strm >> stru.header)
4446  && (strm >> ACE_InputCDR::to_octet(stru.bound))
4447  && (strm >> *stru.element_identifier);
4448 }
4449 
4450 
4451 void serialized_size(const Encoding& encoding, size_t& size,
4452  const XTypes::StringLTypeDefn& stru)
4453 {
4454  primitive_serialized_size(encoding, size, stru.bound);
4455 }
4456 
4458 {
4459  return (strm << stru.bound);
4460 }
4461 
4463 {
4464  return (strm >> stru.bound);
4465 }
4466 
4467 
4468 void serialized_size(const Encoding& encoding, size_t& size,
4469  const XTypes::StringSTypeDefn& stru)
4470 {
4472 }
4473 
4475 {
4476  return (strm << ACE_OutputCDR::from_octet(stru.bound));
4477 }
4478 
4480 {
4481  return (strm >> ACE_InputCDR::to_octet(stru.bound));
4482 }
4483 
4484 
4485 void serialized_size(const Encoding& encoding, size_t& size,
4487 {
4488  serialized_size_delimiter(encoding, size);
4489  serialized_size(encoding, size, stru.sc_component_id);
4490  primitive_serialized_size(encoding, size, stru.scc_length);
4491  primitive_serialized_size(encoding, size, stru.scc_index);
4492 }
4493 
4495 {
4496  size_t total_size = 0;
4497  serialized_size(XTypes::get_typeobject_encoding(), total_size, stru);
4498  if (!strm.write_delimiter(total_size)) {
4499  return false;
4500  }
4501 
4502  return (strm << stru.sc_component_id)
4503  && (strm << stru.scc_length)
4504  && (strm << stru.scc_index);
4505 }
4506 
4508 {
4509  size_t total_size = 0;
4510  if (!strm.read_delimiter(total_size)) {
4511  return false;
4512  }
4513 
4514  const size_t start_pos = strm.rpos();
4515 
4516  // appendable, but no need to handle truncated streams since
4517  // this struct is defined in the spec with the following members:
4518  const bool ret = (strm >> stru.sc_component_id)
4519  && (strm >> stru.scc_length)
4520  && (strm >> stru.scc_index);
4521 
4522  if (ret && strm.rpos() - start_pos < total_size) {
4523  strm.skip(total_size - strm.rpos() + start_pos);
4524  }
4525 
4526  return ret;
4527 }
4528 
4529 
4530 void serialized_size(const Encoding& encoding, size_t& size,
4531  const XTypes::PlainCollectionHeader& stru)
4532 {
4534  primitive_serialized_size(encoding, size, stru.element_flags);
4535 }
4536 
4538 {
4539  return (strm << ACE_OutputCDR::from_octet(stru.equiv_kind))
4540  && (strm << stru.element_flags);
4541 }
4542 
4544 {
4545  return (strm >> ACE_InputCDR::to_octet(stru.equiv_kind))
4546  && (strm >> stru.element_flags);
4547 }
4548 
4549 
4550 void serialized_size(const Encoding& encoding, size_t& size,
4551  const XTypes::TypeObjectHashId& uni)
4552 {
4554  switch (uni.kind) {
4555  case XTypes::EK_MINIMAL:
4556  case XTypes::EK_COMPLETE: {
4557  XTypes::EquivalenceHash_forany uni_hash(const_cast<XTypes::EquivalenceHash_slice*>(uni.hash));
4558  serialized_size(encoding, size, uni_hash);
4559  break;
4560  }
4561  default:
4562  break;
4563  }
4564 }
4565 
4567 {
4568  if (!(strm << ACE_OutputCDR::from_octet(uni.kind))) {
4569  return false;
4570  }
4571  switch (uni.kind) {
4572  case XTypes::EK_MINIMAL:
4573  case XTypes::EK_COMPLETE: {
4574  XTypes::EquivalenceHash_forany uni_hash(const_cast<XTypes::EquivalenceHash_slice*>(uni.hash));
4575  return strm << uni_hash;
4576  }
4577  default:
4578  return true;
4579  }
4580 }
4581 
4583 {
4584  if (!(strm >> ACE_InputCDR::to_octet(uni.kind))) {
4585  return false;
4586  }
4587  switch (uni.kind) {
4588  case XTypes::EK_MINIMAL:
4589  case XTypes::EK_COMPLETE: {
4590  XTypes::EquivalenceHash_forany uni_hash(uni.hash);
4591  return strm >> uni_hash;
4592  }
4593  default:
4594  return true;
4595  }
4596 }
4597 
4598 
4599 void serialized_size(const Encoding& encoding, size_t& size,
4600  const XTypes::CompleteTypeObject& type_object)
4601 {
4602  using namespace XTypes;
4603  primitive_serialized_size_octet(encoding, size); // discriminator
4604 
4605  switch (type_object.kind) {
4606  case TK_ALIAS:
4607  serialized_size(encoding, size, type_object.alias_type);
4608  return;
4609  case TK_ANNOTATION:
4610  serialized_size(encoding, size, type_object.annotation_type);
4611  return;
4612  case TK_STRUCTURE:
4613  serialized_size(encoding, size, type_object.struct_type);
4614  return;
4615  case TK_UNION:
4616  serialized_size(encoding, size, type_object.union_type);
4617  return;
4618  case TK_BITSET:
4619  serialized_size(encoding, size, type_object.bitset_type);
4620  return;
4621  case TK_SEQUENCE:
4622  serialized_size(encoding, size, type_object.sequence_type);
4623  return;
4624  case TK_ARRAY:
4625  serialized_size(encoding, size, type_object.array_type);
4626  return;
4627  case TK_MAP:
4628  serialized_size(encoding, size, type_object.map_type);
4629  return;
4630  case TK_ENUM:
4631  serialized_size(encoding, size, type_object.enumerated_type);
4632  return;
4633  case TK_BITMASK:
4634  serialized_size(encoding, size, type_object.bitmask_type);
4635  return;
4636  default:
4637  serialized_size(encoding, size, type_object.extended_type);
4638  }
4639 }
4640 
4641 bool operator<<(Serializer& ser, const XTypes::CompleteTypeObject& type_object)
4642 {
4643  using namespace XTypes;
4644  if (!(ser << ACE_OutputCDR::from_octet(type_object.kind))) {
4645  return false;
4646  }
4647 
4648  switch (type_object.kind) {
4649  case TK_ALIAS:
4650  return ser << type_object.alias_type;
4651  case TK_ANNOTATION:
4652  return ser << type_object.annotation_type;
4653  case TK_STRUCTURE:
4654  return ser << type_object.struct_type;
4655  case TK_UNION:
4656  return ser << type_object.union_type;
4657  case TK_BITSET:
4658  return ser << type_object.bitset_type;
4659  case TK_SEQUENCE:
4660  return ser << type_object.sequence_type;
4661  case TK_ARRAY:
4662  return ser << type_object.array_type;
4663  case TK_MAP:
4664  return ser << type_object.map_type;
4665  case TK_ENUM:
4666  return ser << type_object.enumerated_type;
4667  case TK_BITMASK:
4668  return ser << type_object.bitmask_type;
4669  default:
4670  return ser << type_object.extended_type;
4671  }
4672 }
4673 
4675 {
4676  using namespace XTypes;
4677  if (!(ser >> ACE_InputCDR::to_octet(type_object.kind))) {
4678  return false;
4679  }
4680 
4681  switch (type_object.kind) {
4682  case TK_ALIAS:
4683  return ser >> type_object.alias_type;
4684  case TK_ANNOTATION:
4685  return ser >> type_object.annotation_type;
4686  case TK_STRUCTURE:
4687  return ser >> type_object.struct_type;
4688  case TK_UNION:
4689  return ser >> type_object.union_type;
4690  case TK_BITSET:
4691  return ser >> type_object.bitset_type;
4692  case TK_SEQUENCE:
4693  return ser >> type_object.sequence_type;
4694  case TK_ARRAY:
4695  return ser >> type_object.array_type;
4696  case TK_MAP:
4697  return ser >> type_object.map_type;
4698  case TK_ENUM:
4699  return ser >> type_object.enumerated_type;
4700  case TK_BITMASK:
4701  return ser >> type_object.bitmask_type;
4702  default:
4703  return ser >> type_object.extended_type;
4704  }
4705 }
4706 
4707 
4708 void serialized_size(const Encoding& encoding, size_t& size,
4709  const XTypes::MinimalTypeObject& type_object)
4710 {
4711  using namespace XTypes;
4712  primitive_serialized_size_octet(encoding, size); // discriminator
4713 
4714  switch (type_object.kind) {
4715  case TK_ALIAS:
4716  return serialized_size(encoding, size, type_object.alias_type);
4717  case TK_ANNOTATION:
4718  return serialized_size(encoding, size, type_object.annotation_type);
4719  case TK_STRUCTURE:
4720  return serialized_size(encoding, size, type_object.struct_type);
4721  case TK_UNION:
4722  return serialized_size(encoding, size, type_object.union_type);
4723  case TK_BITSET:
4724  return serialized_size(encoding, size, type_object.bitset_type);
4725  case TK_SEQUENCE:
4726  return serialized_size(encoding, size, type_object.sequence_type);
4727  case TK_ARRAY:
4728  return serialized_size(encoding, size, type_object.array_type);
4729  case TK_MAP:
4730  return serialized_size(encoding, size, type_object.map_type);
4731  case TK_ENUM:
4732  return serialized_size(encoding, size, type_object.enumerated_type);
4733  case TK_BITMASK:
4734  return serialized_size(encoding, size, type_object.bitmask_type);
4735  default:
4736  return serialized_size(encoding, size, type_object.extended_type);
4737  }
4738 }
4739 
4740 bool operator<<(Serializer& ser, const XTypes::MinimalTypeObject& type_object)
4741 {
4742  using namespace XTypes;
4743  if (!(ser << ACE_OutputCDR::from_octet(type_object.kind))) {
4744  return false;
4745  }
4746 
4747  switch (type_object.kind) {
4748  case TK_ALIAS:
4749  return ser << type_object.alias_type;
4750  case TK_ANNOTATION:
4751  return ser << type_object.annotation_type;
4752  case TK_STRUCTURE:
4753  return ser << type_object.struct_type;
4754  case TK_UNION:
4755  return ser << type_object.union_type;
4756  case TK_BITSET:
4757  return ser << type_object.bitset_type;
4758  case TK_SEQUENCE:
4759  return ser << type_object.sequence_type;
4760  case TK_ARRAY:
4761  return ser << type_object.array_type;
4762  case TK_MAP:
4763  return ser << type_object.map_type;
4764  case TK_ENUM:
4765  return ser << type_object.enumerated_type;
4766  case TK_BITMASK:
4767  return ser << type_object.bitmask_type;
4768  default:
4769  return ser << type_object.extended_type;
4770  }
4771 }
4772 
4774 {
4775  using namespace XTypes;
4776  if (!(ser >> ACE_InputCDR::to_octet(type_object.kind))) {
4777  return false;
4778  }
4779 
4780  switch (type_object.kind) {
4781  case TK_ALIAS:
4782  return ser >> type_object.alias_type;
4783  case TK_ANNOTATION:
4784  return ser >> type_object.annotation_type;
4785  case TK_STRUCTURE:
4786  return ser >> type_object.struct_type;
4787  case TK_UNION:
4788  return ser >> type_object.union_type;
4789  case TK_BITSET:
4790  return ser >> type_object.bitset_type;
4791  case TK_SEQUENCE:
4792  return ser >> type_object.sequence_type;
4793  case TK_ARRAY:
4794  return ser >> type_object.array_type;
4795  case TK_MAP:
4796  return ser >> type_object.map_type;
4797  case TK_ENUM:
4798  return ser >> type_object.enumerated_type;
4799  case TK_BITMASK:
4800  return ser >> type_object.bitmask_type;
4801  default:
4802  return ser >> type_object.extended_type;
4803  }
4804 }
4805 
4806 
4807 void serialized_size(const Encoding& encoding, size_t& size,
4808  const XTypes::TypeObject& type_object)
4809 {
4810  using namespace XTypes;
4811  primitive_serialized_size_ulong(encoding, size); // DHEADER
4812  primitive_serialized_size_octet(encoding, size); // discriminator
4813 
4814  switch (type_object.kind) {
4815  case EK_COMPLETE:
4816  return serialized_size(encoding, size, type_object.complete);
4817  case EK_MINIMAL:
4818  return serialized_size(encoding, size, type_object.minimal);
4819  }
4820 }
4821 
4822 bool operator<<(Serializer& ser, const XTypes::TypeObject& type_object)
4823 {
4824  size_t total_size = 0;
4825  serialized_size(ser.encoding(), total_size, type_object);
4826  if (!ser.write_delimiter(total_size)) {
4827  return false;
4828  }
4829 
4830  if (!(ser << ACE_OutputCDR::from_octet(type_object.kind))) {
4831  return false;
4832  }
4833 
4834  switch (type_object.kind) {
4835  case XTypes::EK_COMPLETE:
4836  return ser << type_object.complete;
4837  case XTypes::EK_MINIMAL:
4838  return ser << type_object.minimal;
4839  }
4840 
4841  return true;
4842 }
4843 
4844 bool operator>>(Serializer& ser, XTypes::TypeObject& type_object)
4845 {
4846  size_t total_size = 0;
4847  if (!ser.read_delimiter(total_size)) {
4848  return false;
4849  }
4850 
4851  if (!(ser >> ACE_InputCDR::to_octet(type_object.kind))) {
4852  return false;
4853  }
4854 
4855  bool ret = true;
4856  switch (type_object.kind) {
4857  case XTypes::EK_COMPLETE:
4858  ret = ser >> type_object.complete;
4859  break;
4860  case XTypes::EK_MINIMAL:
4861  ret = ser >> type_object.minimal;
4862  break;
4863  }
4864 
4865  return ret;
4866 }
4867 
4868 
4869 void serialized_size(const Encoding& encoding, size_t& size,
4871 {
4872  serialized_size_delimiter(encoding, size);
4873 }
4874 
4876 {
4878 }
4879 
4881 {
4882  return XTypes::read_empty_xcdr2_nonfinal(strm);
4883 }
4884 
4885 
4886 void serialized_size(const Encoding& encoding, size_t& size,
4887  const XTypes::TypeInformation& stru)
4888 {
4889  size_t mutable_running_total = 0;
4890  serialized_size_delimiter(encoding, size);
4891 
4892  serialized_size_parameter_id(encoding, size, mutable_running_total);
4893  serialized_size(encoding, size, stru.minimal);
4894 
4895  serialized_size_parameter_id(encoding, size, mutable_running_total);
4896  serialized_size(encoding, size, stru.complete);
4897 
4898  serialized_size_list_end_parameter_id(encoding, size, mutable_running_total);
4899 }
4900 
4902 {
4903  const Encoding& encoding = strm.encoding();
4904  size_t total_size = 0;
4905  serialized_size(encoding, total_size, stru);
4906  if (!strm.write_delimiter(total_size)) {
4907  return false;
4908  }
4909 
4910  size_t size = 0;
4911 
4912  serialized_size(encoding, size, stru.minimal);
4913  if (!strm.write_parameter_id(4097, size)) {
4914  return false;
4915  }
4916  size = 0;
4917  if (!(strm << stru.minimal)) {
4918  return false;
4919  }
4920 
4921  serialized_size(encoding, size, stru.complete);
4922  if (!strm.write_parameter_id(4098, size)) {
4923  return false;
4924  }
4925  size = 0;
4926  if (!(strm << stru.complete)) {
4927  return false;
4928  }
4929 
4930  return true;
4931 }
4932 
4934 {
4935  size_t total_size = 0;
4936  if (!strm.read_delimiter(total_size)) {
4937  return false;
4938  }
4939 
4940  const size_t start_pos = strm.rpos();
4941 
4942  unsigned member_id;
4943  size_t field_size;
4944  while (true) {
4945 
4946  if (strm.rpos() - start_pos >= total_size) {
4947  return true;
4948  }
4949 
4950  bool must_understand = false;
4951  if (!strm.read_parameter_id(member_id, field_size, must_understand)) {
4952  return false;
4953  }
4954 
4955  switch (member_id) {
4956  case 4097: {
4957  if (!(strm >> stru.minimal)) {
4958  return false;
4959  }
4960  break;
4961  }
4962  case 4098: {
4963  if (!(strm >> stru.complete)) {
4964  return false;
4965  }
4966  break;
4967  }
4968  default:
4969  if (must_understand) {
4970  if (DCPS_debug_level >= 8) {
4971  ACE_DEBUG((LM_DEBUG, ACE_TEXT("(%P|%t) unknown must_understand field(%u) in OpenDDS::XTypes::TypeInformation\n"), member_id));
4972  }
4973  return false;
4974  }
4975  strm.skip(field_size);
4976  break;
4977  }
4978  }
4979  return false;
4980 }
4981 
4982 
4983 void serialized_size(const Encoding& encoding, size_t& size,
4985 {
4986  serialized_size(encoding, size, stru.type_identifier);
4987  serialized_size(encoding, size, stru.type_object);
4988 }
4989 
4990 void serialized_size(const Encoding& encoding, size_t& size,
4992 {
4993  serialized_size(encoding, size, stru.value);
4994 }
4995 
4997 {
4998  return (strm << stru.type_identifier)
4999  && (strm << stru.type_object);
5000 }
5001 
5002 bool operator<<(Serializer& strm, const NestedKeyOnly<const XTypes::TypeIdentifierTypeObjectPair>& stru)
5003 {
5004  return (strm << stru.value);
5005 }
5006 
5008 {
5009  return (strm >> stru.type_identifier)
5010  && (strm >> stru.type_object);
5011 }
5012 
5014 {
5015  return (strm >> stru.value);
5016 }
5017 
5018 void serialized_size(const Encoding& encoding, size_t& size,
5019  const XTypes::TypeIdentifierPair& stru)
5020 {
5021  serialized_size(encoding, size, stru.type_identifier1);
5022  serialized_size(encoding, size, stru.type_identifier2);
5023 }
5024 
5025 void serialized_size(const Encoding& encoding, size_t& size,
5027 {
5028  serialized_size(encoding, size, stru.value);
5029 }
5030 
5032 {
5033  return (strm << stru.type_identifier1)
5034  && (strm << stru.type_identifier2);
5035 }
5036 
5037 bool operator<<(Serializer& strm, const NestedKeyOnly<const XTypes::TypeIdentifierPair>& stru)
5038 {
5039  return (strm << stru.value);
5040 }
5041 
5043 {
5044  return (strm >> stru.type_identifier1)
5045  && (strm >> stru.type_identifier2);
5046 }
5047 
5049 {
5050  return (strm >> stru.value);
5051 }
5052 
5053 bool to_type_object(const unsigned char* buffer, size_t size, XTypes::TypeObject& to)
5054 {
5055  ACE_Message_Block message_block(reinterpret_cast<const char*>(buffer), size);
5056  message_block.length(size);
5057  DCPS::Serializer ser(&message_block, XTypes::get_typeobject_encoding());
5058  return ser >> to;
5059 }
5060 
5061 } // namespace DCPS
5062 } // namespace OpenDDS
5063 
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
#define ACE_DEBUG(X)
const TypeKind TK_SEQUENCE
Definition: TypeObject.h:248
std::wstring WString
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)
External< TypeIdentifier > element_identifier
Definition: TypeObject.h:562
CompleteMemberDetail detail
Definition: TypeObject.h:2824
bool is_complex(TypeKind tk)
ACE_INT64 LongLong
void serialized_size(const Encoding &encoding, size_t &size, const NestedKeyOnly< const XTypes::TypeIdentifierPair > &stru)
const TypeKind TK_INT32
Definition: TypeObject.h:217
bool read_long_array(ACE_CDR::Long *x, ACE_CDR::ULong length)
Definition: Serializer.inl:601
Optional< AppliedBuiltinTypeAnnotations > ann_builtin
Definition: TypeObject.h:1403
Optional< AppliedAnnotationSeq > ann_custom
Definition: TypeObject.h:1964
std::string String
const TypeKind TK_STRING16
Definition: TypeObject.h:232
MinimalCollectionHeader header
Definition: TypeObject.h:2283
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
const Encoding & get_typeobject_encoding()
Definition: TypeObject.cpp:27
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
OpenDDS_Dcps_Export void primitive_serialized_size_ulong(const Encoding &encoding, size_t &size, size_t count=1)
const TypeIdentifierKind TI_STRING8_LARGE
Definition: TypeObject.h:256
size_t length(void) const
Optional< AppliedBuiltinTypeAnnotations > ann_builtin
Definition: TypeObject.h:1658
bool operator<<(Serializer &strm, const NestedKeyOnly< const XTypes::TypeIdentifierPair > &stru)
const TypeKind TK_BYTE
Definition: TypeObject.h:215
Optional< AppliedAnnotationSeq > ann_custom
Definition: TypeObject.h:1404
const TypeKind TK_UNION
Definition: TypeObject.h:244
void MD5Hash(MD5Result &result, const void *input, size_t size)
Definition: Hash.cpp:323
bool skip(size_t n, int size=1)
Definition: Serializer.inl:443
CompleteExtendedType extended_type
Definition: TypeObject.h:2989
CompleteUnionMemberSeq member_seq
Definition: TypeObject.h:1747
const TypeKind TK_INT16
Definition: TypeObject.h:216
String to_dds_string(unsigned short to_convert)
const TypeIdentifierKind TI_PLAIN_SEQUENCE_LARGE
Definition: TypeObject.h:261
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.
bool write_parameter_id(const unsigned id, size_t size, bool must_understand=false)
Definition: Serializer.cpp:784
#define OPENDDS_BRANCH_RESET(T)
CollectionTypeFlag collection_flag
Definition: TypeObject.h:2375
MinimalCollectionElement element
Definition: TypeObject.h:2407
Optional< AnnotationParameterValue > max
Definition: TypeObject.h:1198
const TypeKind TK_UINT16
Definition: TypeObject.h:219
ACE_UINT64 ULongLong
ACE_CDR::Octet kind() const
Definition: TypeObject.h:748
TypeIdentifier & operator=(const TypeIdentifier &other)
Definition: TypeObject.cpp:187
Optional< AnnotationParameterValue > min
Definition: TypeObject.h:1197
OpenDDS_Dcps_Export void primitive_serialized_size_octet(const Encoding &encoding, size_t &size, size_t count=1)
#define OPENDDS_ASSERT(C)
Definition: Definitions.h:72
const ACE_CDR::Long MEMBER_NAME_MAX_LENGTH
Definition: TypeObject.h:274
MinimalEnumeratedLiteralSeq literal_seq
Definition: TypeObject.h:2667
bool read_parameter_id(unsigned &id, size_t &size, bool &must_understand)
Definition: Serializer.cpp:707
MinimalExtendedType extended_type
Definition: TypeObject.h:3139
PlainCollectionHeader header
Definition: TypeObject.h:524
CompleteCollectionElement element
Definition: TypeObject.h:2439
static const ACE_CDR::ULong MEMBER_ID_MASK
Definition: Serializer.h:388
CollectionElementFlag element_flags
Definition: TypeObject.h:460
Optional< AppliedVerbatimAnnotation > verbatim
Definition: TypeObject.h:1370
const TypeIdentifierKind TI_STRING16_LARGE
Definition: TypeObject.h:258
bool is_fully_descriptive(const TypeIdentifier &ti)
Definition: TypeObject.cpp:408
const_iterator end() const
Definition: TypeObject.h:196
bool is_primitive(TypeKind tk)
MinimalAnnotationParameterSeq member_seq
Definition: TypeObject.h:1918
bool read_octet_array(ACE_CDR::Octet *x, ACE_CDR::ULong length)
Definition: Serializer.inl:558
void serialized_size(const Encoding &encoding, size_t &size, const SequenceNumber &)
Members::const_iterator const_iterator
Definition: TypeObject.h:194
char * rd_ptr(void) const
External< TypeIdentifier > element_identifier
Definition: TypeObject.h:544
Optional< AppliedBuiltinMemberAnnotations > ann_builtin
Definition: TypeObject.h:2099
const TypeKind TK_INT8
Definition: TypeObject.h:225
size_t strlen(const char *s)
const TypeIdentifierKind TI_STRING8_SMALL
Definition: TypeObject.h:255
CompleteEnumeratedLiteralSeq literal_seq
Definition: TypeObject.h:2638
MinimalAnnotationHeader header
Definition: TypeObject.h:1917
AnnotationParameterValue & operator=(const AnnotationParameterValue &other)
Definition: TypeObject.cpp:289
PlainCollectionHeader header
Definition: TypeObject.h:560
CompleteSequenceType sequence_type
Definition: TypeObject.h:2982
const EquivalenceKind EK_COMPLETE
Definition: TypeObject.h:206
bool write_octet_array(const ACE_CDR::Octet *x, ACE_CDR::ULong length)
Definition: Serializer.inl:697
#define OPENDDS_STRING
MinimalAnnotationType annotation_type
Definition: TypeObject.h:3128
const TypeIdentifierKind TI_PLAIN_MAP_LARGE
Definition: TypeObject.h:267
bool is_sequence_like(TypeKind tk)
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
LM_DEBUG
void activate(const AnnotationParameterValue *other=0)
Definition: TypeObject.cpp:300
ACE_INT16 Short
bool write_long_array(const ACE_CDR::Long *x, ACE_CDR::ULong length)
Definition: Serializer.inl:740
Class to serialize and deserialize data for DDS.
Definition: Serializer.h:369
PlainCollectionHeader header
Definition: TypeObject.h:587
AnnotationParameterValue(ACE_CDR::Octet kind=TK_NONE)
Definition: TypeObject.cpp:275
ACE_CDR::ULong hash_member_name_to_id(const OPENDDS_STRING &name)
Definition: TypeObject.cpp:389
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
const char * typekind_to_string(TypeKind tk)
TypeIdentifierWithDependencies complete
Definition: TypeObject.h:3374
static const void * body(MD5_CTX *ctx, const void *data, unsigned long size)
Definition: Hash.cpp:115
Optional< AppliedBuiltinMemberAnnotations > ann_builtin
Definition: TypeObject.h:1963
const TypeIdentifierKind TI_PLAIN_MAP_SMALL
Definition: TypeObject.h:266
const TypeIdentifierKind TI_PLAIN_ARRAY_LARGE
Definition: TypeObject.h:264
char Char
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
const TypeIdentifierKind TI_PLAIN_ARRAY_SMALL
Definition: TypeObject.h:263
const TypeKind TK_BITMASK
Definition: TypeObject.h:239
ACE_UINT16 UShort
External< TypeIdentifier > element_identifier
Definition: TypeObject.h:526
MinimalDiscriminatorMember discriminator
Definition: TypeObject.h:1777
DCPS::String equivalence_hash_to_string(const EquivalenceHash &equivalence_hash)
Definition: TypeObject.cpp:33
CompleteStructMemberSeq member_seq
Definition: TypeObject.h:1477
bool operator>>(Serializer &strm, NestedKeyOnly< XTypes::TypeIdentifierPair > &stru)
TypeIdentifier(ACE_CDR::Octet kind=TK_NONE)
Definition: TypeObject.cpp:64
Optional< AppliedBuiltinMemberAnnotations > ann_builtin
Definition: TypeObject.h:1251
CollectionTypeFlag collection_flag
Definition: TypeObject.h:2436
CompleteCollectionHeader header
Definition: TypeObject.h:2253
MinimalUnionMemberSeq member_seq
Definition: TypeObject.h:1778
void activate(const TypeIdentifier *other=0)
Definition: TypeObject.cpp:71
External< TypeIdentifier > element_identifier
Definition: TypeObject.h:589
bool read_ulong_array(ACE_CDR::ULong *x, ACE_CDR::ULong length)
Definition: Serializer.inl:611
bool is_plain_collection(const TypeIdentifier &ti)
Definition: TypeObject.cpp:447
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
Optional< AppliedAnnotationSeq > ann_custom
Definition: TypeObject.h:1659
Optional< AppliedAnnotationParameterSeq > param_seq
Definition: TypeObject.h:1139
LM_WARNING
CompleteBitmaskType bitmask_type
Definition: TypeObject.h:2986
ACE_UINT32 ULong
CompleteMemberDetail detail
Definition: TypeObject.h:2716
const TypeKind TK_STRUCTURE
Definition: TypeObject.h:243
MinimalCollectionElement element
Definition: TypeObject.h:2460
void hash_member_name(NameHash &name_hash, const OPENDDS_STRING &name)
Definition: TypeObject.cpp:400
typedef OPENDDS_SET(DynamicTypePtrPair) DynamicTypePtrPairSeen
const ACE_CDR::Long TYPE_NAME_MAX_LENGTH
Definition: TypeObject.h:279
const char *const name
Definition: debug.cpp:60
MinimalCollectionElement key
Definition: TypeObject.h:2459
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
bool write_empty_xcdr2_nonfinal(DCPS::Serializer &strm)
MinimalSequenceType sequence_type
Definition: TypeObject.h:3132
Optional< AppliedAnnotationSeq > ann_custom
Definition: TypeObject.h:1252
ACE_TEXT("TCP_Factory")
OpenDDS_Dcps_Export void serialized_size_parameter_id(const Encoding &encoding, size_t &size, size_t &running_size)
const TypeKind TK_STRING8
Definition: TypeObject.h:231
ACE_CDR::Octet EquivalenceHash[14]
Definition: TypeObject.h:287
External< TypeIdentifier > key_identifier
Definition: TypeObject.h:591
ACE_INT32 Long
MinimalMemberDetail detail
Definition: TypeObject.h:2733
External< TypeIdentifier > element_identifier
Definition: TypeObject.h:506
CompleteEnumeratedType enumerated_type
Definition: TypeObject.h:2985
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
Definition: debug.cpp:30
const TypeKind TK_UINT64
Definition: TypeObject.h:221
bool write_ulong_array(const ACE_CDR::ULong *x, ACE_CDR::ULong length)
Definition: Serializer.inl:750
OpenDDS_Dcps_Export LogLevel log_level
CompleteCollectionElement key
Definition: TypeObject.h:2438
const size_t char16_cdr_size
Definition: Serializer.h:103
Optional< CompleteTypeDetail > detail
Definition: TypeObject.h:2210
MinimalStructMemberSeq member_seq
Definition: TypeObject.h:1505
bool is_scalar(TypeKind tk)
const TypeKind TK_INT64
Definition: TypeObject.h:218
MinimalCollectionElement element
Definition: TypeObject.h:2284
const TypeKind TK_UINT32
Definition: TypeObject.h:220
CompleteAnnotationType annotation_type
Definition: TypeObject.h:2978
MinimalCollectionHeader header
Definition: TypeObject.h:2458
const TypeKind TK_ALIAS
Definition: TypeObject.h:235
const Encoding & encoding() const
Definition: Serializer.inl:199
External< TypeIdentifier > key_identifier
Definition: TypeObject.h:564
const TypeIdentifierKind TI_PLAIN_SEQUENCE_SMALL
Definition: TypeObject.h:260
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
const TypeKind TK_ANNOTATION
Definition: TypeObject.h:242
CompleteCollectionHeader header
Definition: TypeObject.h:2437
const TypeKind TK_ENUM
Definition: TypeObject.h:238
CollectionElementFlag key_flags
Definition: TypeObject.h:563
CollectionTypeFlag collection_flag
Definition: TypeObject.h:2405
#define OPENDDS_WSTRING
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
const TypeIdentifierKind TI_STRONGLY_CONNECTED_COMPONENT
Definition: TypeObject.h:269
CompleteAnnotationHeader header
Definition: TypeObject.h:1897
const TypeKind TK_ARRAY
Definition: TypeObject.h:249
const TypeKind TK_UINT8
Definition: TypeObject.h:226
bool read_empty_xcdr2_nonfinal(DCPS::Serializer &strm)
ACE_WCHAR_T WChar
#define OPENDDS_BRANCH_ACTIVATE(T, N)
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
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 Boolean
PlainCollectionHeader header
Definition: TypeObject.h:542
bool write_delimiter(size_t size)
Definition: Serializer.inl:925
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
CollectionTypeFlag collection_flag
Definition: TypeObject.h:2457
TypeIdentifierWithDependencies minimal
Definition: TypeObject.h:3373
CompleteDiscriminatorMember discriminator
Definition: TypeObject.h:1746
OpenDDS_Dcps_Export void serialized_size_list_end_parameter_id(const Encoding &encoding, size_t &size, size_t &running_size)
CollectionElementFlag key_flags
Definition: TypeObject.h:590
ACE_CDR::ULong length() const
Definition: TypeObject.h:167
CompleteEnumeratedHeader header
Definition: TypeObject.h:2637
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
MinimalTypeObject minimal
Definition: TypeObject.h:3244
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
const TypeKind TK_BITSET
Definition: TypeObject.h:245
MinimalEnumeratedHeader header
Definition: TypeObject.h:2666
ACE_CDR::Octet NameHash[4]
Definition: TypeObject.h:296
bool is_basic(TypeKind tk)
bool has_type_object(const TypeIdentifier &ti)
Definition: TypeObject.cpp:461
OpenDDS_Dcps_Export bool primitive_serialized_size(const Encoding &encoding, size_t &size, const ACE_CDR::Short &value, size_t count=1)
const_iterator begin() const
Definition: TypeObject.h:195