--- dds-xtypes-v13_typeobject-20190301.idl 2025-08-14 06:59:53 +++ dds-xtypes-rtf4_typeobject-issue-36.idl 2025-08-14 08:25:35 @@ -44,7 +44,8 @@ const octet TK_STRUCTURE = 0x51; const octet TK_UNION = 0x52; const octet TK_BITSET = 0x53; - + const octet TK_UNION64 = 0x54; + // Collection TKs const octet TK_SEQUENCE = 0x60; const octet TK_ARRAY = 0x61; @@ -455,7 +456,7 @@ CommonStructMember common; MinimalMemberDetail detail; }; - // Ordered by common.member_id + // Ordered by the member_index typedef sequence MinimalStructMemberSeq; @@ -507,6 +508,7 @@ // Case labels that apply to a member of a union type // Ordered by their values typedef sequence UnionCaseLabelSeq; + typedef sequence Union64CaseLabelSeq; @extensibility(FINAL) @nested struct CommonUnionMember { @@ -514,6 +516,14 @@ UnionMemberFlag member_flags; TypeIdentifier type_id; UnionCaseLabelSeq label_seq; + }; + + @extensibility(FINAL) @nested + struct CommonUnion64Member { + MemberId member_id; + UnionMemberFlag member_flags; + TypeIdentifier type_id; + Union64CaseLabelSeq label_seq; }; // Member of a union type @@ -525,6 +535,15 @@ // Ordered by member_index typedef sequence CompleteUnionMemberSeq; + // Member of a union type (64-bit discriminator version) + @extensibility(APPENDABLE) @nested + struct CompleteUnion64Member { + CommonUnion64Member common; + CompleteMemberDetail detail; + }; + // Ordered by member_index + typedef sequence CompleteUnion64MemberSeq; + // Member of a union type @extensibility(APPENDABLE) @nested struct MinimalUnionMember { @@ -533,6 +552,15 @@ }; // Ordered by MinimalUnionMember.common.member_id typedef sequence MinimalUnionMemberSeq; + + // Member of a union type (64-bit discriminator version) + @extensibility(APPENDABLE) @nested + struct MinimalUnion64Member { + CommonUnion64Member common; + MinimalMemberDetail detail; + }; + // Ordered by MinimalUnion64Member.common.member_id + typedef sequence MinimalUnion64MemberSeq; @extensibility(FINAL) @nested struct CommonDiscriminatorMember { @@ -570,6 +598,12 @@ CompleteUnionHeader header; CompleteDiscriminatorMember discriminator; CompleteUnionMemberSeq member_seq; + }; + struct CompleteUnion64Type { + UnionTypeFlag union_flags; + CompleteUnionHeader header; + CompleteDiscriminatorMember discriminator; + CompleteUnion64MemberSeq member_seq; }; @extensibility(FINAL) @nested @@ -579,6 +613,13 @@ MinimalDiscriminatorMember discriminator; MinimalUnionMemberSeq member_seq; }; + @extensibility(FINAL) @nested + struct MinimalUnion64Type { + UnionTypeFlag union_flags; + MinimalUnionHeader header; + MinimalDiscriminatorMember discriminator; + MinimalUnion64MemberSeq member_seq; + }; // --- Annotation: ---------------------------------------------------- @extensibility(FINAL) @nested @@ -954,6 +995,8 @@ CompleteStructType struct_type; case TK_UNION: CompleteUnionType union_type; + case TK_UNION64: + CompleteUnion64Type union64_type; case TK_BITSET: CompleteBitsetType bitset_type; case TK_SEQUENCE: @@ -988,6 +1031,8 @@ MinimalStructType struct_type; case TK_UNION: MinimalUnionType union_type; + case TK_UNION64: + MinimalUnion64Type union64_type; case TK_BITSET: MinimalBitsetType bitset_type; case TK_SEQUENCE: