Issue 16956: Use compliant OMG IDL syntax (data-distribution-interop-rtf) Source: OCI (Mr. Adam Mitz, mitza(at)ociweb.com) Nature: Uncategorized Issue Severity: Summary: IDL is defined by OMG’s own document formal/2011-11-01 in section 7. As another OMG specification (and most importantly, for clarity and precision), the current pseudo-IDL throughout the RTPS document must be changed to be actual compliant IDL. Compliant IDL does not use anonymous types: newly-constructed types appear in their own typedefs. Section: 9.2.2 Page: 149 Change: replace IDL with typedef octet OctetArray3[3]; struct EntityId_t { OctetArray3 entityKey; octet entityKind; }; Section: 9.3.1.1 Page: 150 Change: replace IDL with typedef octet GuidPrefix_t[12]; Section: 9.3.1.2 Page: 150 Change: replace IDL with typedef octet OctetArray3[3]; struct EntityId_t { OctetArray3 entityKey; octet entityKind; }; Section: 9.3.1.5 Page: 153 Change: replace IDL with struct GUID_t { GuidPrefix_t guidPrefix; EntityId_t entityId; }; Section: 9.3.2, Table 9.4 row “Time_t” Page: 153 Change: replace IDL with struct Time_t { long seconds; unsigned long fraction; }; Section: 9.3.2, Table 9.4 row “VendorId_t” Page: 153 Change: replace IDL with typedef octet OctetArray2[2]; struct VendorId_t { OctetArray2 vendorId; }; Section: 9.3.2, Tables 9.4 and 9.5 Page: 154-159 Change: For ALL table entries with a struct move struct's identifier to directly follow the keyword "struct" (SequenceNumber_t, FragmentNumber_t, Locator_t, Count_t, ProtocolVersion_t, KeyHash_t, StatusInfo_t, ParameterId_t, ContentFilterProperty_t, ContentFilterInfo_t, OriginalWriterInfo_t, LocatorUDPv4_t) and in cases where "typedef" is used to introduce a struct, remove it (ProtocolVersion_t, ContentFilterProperty_t, ContentFilterInfo_t) Section: 9.3.2, Table 9.4 Page: 155-157 Change: Use of anonymous types is deprecated (applies to Locator_t::address, KeyHash_t::value, StatusInfo_t::value, all fields in ContentFilterProperty_t except for filterExpression). Replace the anonymous type with a typedef. Section: 9.3.2, Table 9.4 Page: 157 Change: Array bounds for FilterSignature_t must be at the end of the typedef Section: 9.4.2.6 Page: 161 Change: IDL syntax error due to use of anonymous types and the struct’s identifier must directly follow the keyword “struct”; also use unsigned long for bitmap Section: 9.4.2.8 Page: 163 Change: IDL syntax error due to use of anonymous types and the struct’s identifier must directly follow the keyword “struct”; also use unsigned long for bitmap Section: 9.4.2.11 Page: 165 Change: Use an unsigned short for “length” and mark this as "pseudo" IDL as there is no way to represent a sequence with a 2-byte length field or an array with runtime-determined bounds Section: 9.4.5.1 Page: 168 Change: struct’s identifier must directly follow the keyword “struct” Section: 9.6.2.1 Page: 180 Change: IDL syntax error due to use of anonymous types Section: 9.6.2.2 Page: 181 Change: IDL syntax error, the keyword "struct" is not used to identify types of fields. Also, IDL does not allow differences only in case so "WriterProxy writerProxy;" is ill-formed. Section: 10.1.1.1 Page: 193 Change: IDL syntax error, array bounds for Identifier must be at the end of the typedef, and the typedef keyword is missing. Resolution: Revised Text: Actions taken: December 27, 2011: received issue Discussion: End of Annotations:===== s is issue # 16956 Issues submission for OMG formal/2010-11-01, The Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol Specification (DDS-RTPS) Version 2.1 December 27, 2011 Adam Mitz (mitza@ociweb.com) Senior Software Engineer Object Computing, Inc. (OMG Member Use compliant OMG IDL syntax IDL is defined by OMG.s own document formal/2011-11-01 in section 7. As another OMG specification (and most importantly, for clarity and precision), the current pseudo-IDL throughout the RTPS document must be changed to be actual compliant IDL. Compliant IDL does not use anonymous types: newly-constructed types appear in their own typedefs. Section: 9.2.2 Page: 149 Change: replace IDL with typedef octet OctetArray3[3]; struct EntityId_t { OctetArray3 entityKey; octet entityKind; }; Section: 9.3.1.1 Page: 150 Change: replace IDL with typedef octet GuidPrefix_t[12]; Section: 9.3.1.2 Page: 150 Change: replace IDL with typedef octet OctetArray3[3]; struct EntityId_t { OctetArray3 entityKey; octet entityKind; }; Section: 9.3.1.5 Page: 153 Change: replace IDL with struct GUID_t { GuidPrefix_t guidPrefix; EntityId_t entityId; }; Section: 9.3.2, Table 9.4 row .Time_t. Page: 153 Change: replace IDL with struct Time_t { long seconds; unsigned long fraction; }; Section: 9.3.2, Table 9.4 row .VendorId_t. Page: 153 Change: replace IDL with typedef octet OctetArray2[2]; struct VendorId_t { OctetArray2 vendorId; }; Section: 9.3.2, Tables 9.4 and 9.5 Page: 154-159 Change: For ALL table entries with a struct move struct's identifier to directly follow the keyword "struct" (SequenceNumber_t, FragmentNumber_t, Locator_t, Count_t, ProtocolVersion_t, KeyHash_t, StatusInfo_t, ParameterId_t, ContentFilterProperty_t, ContentFilterInfo_t, OriginalWriterInfo_t, LocatorUDPv4_t) and in cases where "typedef" is used to introduce a struct, remove it (ProtocolVersion_t, ContentFilterProperty_t, ContentFilterInfo_t) Section: 9.3.2, Table 9.4 Page: 155-157 Change: Use of anonymous types is deprecated (applies to Locator_t::address, KeyHash_t::value, StatusInfo_t::value, all fields in ContentFilterProperty_t except for filterExpression). Replace the anonymous type with a typedef. Section: 9.3.2, Table 9.4 Page: 157 Change: Array bounds for FilterSignature_t must be at the end of the typedef Section: 9.4.2.6 Page: 161 Change: IDL syntax error due to use of anonymous types and the struct.s identifier must directly follow the keyword .struct.; also use unsigned long for bitmap Section: 9.4.2.8 Page: 163 Change: IDL syntax error due to use of anonymous types and the struct.s identifier must directly follow the keyword .struct.; also use unsigned long for bitmap Section: 9.4.2.11 Page: 165 Change: Use an unsigned short for .length. and mark this as "pseudo" IDL as there is no way to represent a sequence with a 2-byte length field or an array with runtime-determined bounds Section: 9.4.5.1 Page: 168 Change: struct.s identifier must directly follow the keyword .struct. Section: 9.6.2.1 Page: 180 Change: IDL syntax error due to use of anonymous types Section: 9.6.2.2 Page: 181 Change: IDL syntax error, the keyword "struct" is not used to identify types of fields. Also, IDL does not allow differences only in case so "WriterProxy writerProxy;" is ill-formed. Section: 10.1.1.1 Page: 193 Change: IDL syntax error, array bounds for Identifier must be at the end of the typedef, and the typedef keyword is missing.