--- dds-xtypes-rtf4_typeobject_issue-36_52_68_35_80.idl 2026-02-09 18:48:41 +++ dds-xtypes-rtf4_typeobject_issue-36_52_68_35_80_142.idl 2026-02-11 12:25:38 @@ -137,11 +137,11 @@ typedef MemberFlag BitflagFlag; // Unused. No flags apply typedef MemberFlag BitsetMemberFlag; // Unused. No flags apply - // Mask used to remove the flags that do no affect assignability + // Mask used to remove the flags that do not affect assignability // Selects T1, T2, O, M, K, D const unsigned short MemberFlagMinimalMask = 0x003f; - // Flags that apply to type declarationa and DO affect assignability + // Flags that apply to type declarations and DO affect assignability // Depending on the flag it may not apply to all types // When not all, the applicable types are listed @bit_bound(16) @@ -162,7 +162,7 @@ typedef TypeFlag BitmaskTypeFlag; // Unused. No flags apply typedef TypeFlag BitsetTypeFlag; // Unused. No flags apply - // Mask used to remove the flags that do no affect assignability + // Mask used to remove the flags that do not affect assignability const unsigned short TypeFlagMinimalMask = 0x0007; // Selects M, A, F // Forward declaration @@ -232,7 +232,7 @@ @external TypeIdentifier key_identifier; }; - // Used for Types that have cyclic depencencies with other types + // Used for Types that have cyclic dependencies with other types @extensibility(APPENDABLE) @nested struct StronglyConnectedComponentId { TypeObjectHashId sc_component_id; // Hash StronglyConnectedComponent @@ -249,10 +249,10 @@ // The TypeIdentifier uniquely identifies a type (a set of equivalent - // types according to an equivalence relationship: COMPLETE, MNIMAL). + // types according to an equivalence relationship: COMPLETE, MINIMAL. // // In some cases (primitive types, strings, plain types) the identifier - // is a explicit description of the type. + // is an explicit description of the type. // In other cases the Identifier is a Hash of the type description // // In the case of primitive types and strings the implied equivalence @@ -411,9 +411,29 @@ struct AppliedVerbatimAnnotation { string<32> placement; string<32> language; + string text; + }; + typedef sequence AppliedVerbatimAnnotationSeq; + + // @doc(text="", format=" format; string text; }; + typedef sequence AppliedDocAnnotationSeq; + // Helper annotation to carry license information + // It is logically instantiated each time the @license annotation is used in + // order to compute the AppliedLicenseTypeIdentifier which is then included + // in the type information. + @annotation AppliedLicenseTypeIdentifierHelper { + string license_type_name default ""; + string license_type_link default ""; + string license_use_name default ""; + string license_use_link default ""; + }; + typedef TypeIdentifier AppliedLicenseTypeIdentifier; // --- Aggregate types: ------------------------------------------------ @extensibility(APPENDABLE) @nested @@ -422,16 +442,36 @@ @optional AnnotationParameterValue min; // @min , @range @optional AnnotationParameterValue max; // @max , @range }; - + @extensibility(APPENDABLE) @nested struct AppliedBuiltinMemberAnnotations { @optional string unit; // @unit("") @optional AnnotationParameterValue min; // @min , @range @optional AnnotationParameterValue max; // @max , @range @optional string hash_id; // @hash_id("") - @optional AnnotationParameterValue default_value; + @optional AnnotationParameterValue default_value; // @default_value + @optional AppliedVerbatimAnnotationSeq verbatim_seq; // @verbatim(...) + @optional AppliedDocAnnotationSeq doc_seq; // @doc }; + @extensibility(APPENDABLE) @nested + struct MinimalAppliedBuiltinDiscriminatorAnnotations { + @optional AnnotationParameterValue min; // @min , @range + @optional AnnotationParameterValue max; // @max , @range + }; + + @extensibility(APPENDABLE) @nested + struct AppliedBuiltinDiscriminatorAnnotations { + // Use if exactly one verbatim annotation is applied (xtypes 1.3 compatible) + @optional AppliedVerbatimAnnotation verbatim; // @verbatim(...) + // Use if two or more verbatim annotations are applied + @optional AppliedVerbatimAnnotationSeq verbatim_seq; // @verbatim(...) + @optional AppliedDocAnnotationSeq doc_seq; // @doc + @optional AnnotationParameterValue min; // @min , @range + @optional AnnotationParameterValue max; // @max , @range + @optional AnnotationParameterValue default_value; // @default_value + }; + @extensibility(FINAL) @nested struct CommonStructMember { MemberId member_id; @@ -473,10 +513,15 @@ // Ordered by the member_index typedef sequence MinimalStructMemberSeq; - + @extensibility(APPENDABLE) @nested struct AppliedBuiltinTypeAnnotations { - @optional AppliedVerbatimAnnotation verbatim; // @verbatim(...) + // Use if exactly one verbatim annotation is applied (xtypes 1.3 compatible) + @optional AppliedVerbatimAnnotation verbatim; // @verbatim + // Use if two or more verbatim annotations are applied + @optional AppliedVerbatimAnnotationSeq verbatim_seq; // @verbatim + @optional AppliedDocAnnotationSeq doc_seq; // @doc + @optional AppliedLicenseTypeIdentifier applied_license_typeid; // @license }; @extensibility(FINAL) @nested @@ -573,8 +618,7 @@ @extensibility(APPENDABLE) @nested struct MinimalUnion64Member { CommonUnion64Member common; - MinimalMemberDetail detail; - @optional + MinimalMemberDetail detail; @optional MinimalAppliedBuiltinMemberAnnotations ann_builtin; }; // Ordered by MinimalUnion64Member.common.member_id @@ -589,15 +633,16 @@ // Member of a union type @extensibility(APPENDABLE) @nested struct CompleteDiscriminatorMember { - CommonDiscriminatorMember common; - @optional AppliedBuiltinTypeAnnotations ann_builtin; - @optional AppliedAnnotationSeq ann_custom; + CommonDiscriminatorMember common; + @optional AppliedBuiltinDiscriminatorAnnotations ann_builtin; + @optional AppliedAnnotationSeq ann_custom; }; // Member of a union type @extensibility(APPENDABLE) @nested struct MinimalDiscriminatorMember { CommonDiscriminatorMember common; + @optional MinimalAppliedBuiltinDiscriminatorAnnotations ann_builtin; }; @extensibility(APPENDABLE) @nested