Source: Real-Time Innovations ( Gerardo Pardo-Castellote)
Section 188.8.131.52 'Namespaces' states:
Modules are namespaces whose contained named elements are types. The concatenation of module names with the name of a type inside of those modules is referred to as the type’s “fully qualified name.”
This is not enough to fully determine the fully qualified name. How is the "concatenation" done? What character is used to separate the successive module names?
For example what should be the fully-qualified name of the type described in in the following IDL?
Assuming "::" is used to separate namespaces it would be "A::B::Foo"
The issue of type names is a bit broader. Currently it is not so clear that every type has a name. Is that really so? What about anonymous types defined within a structure?
The definition of MemberDescriptor (184.108.40.206) which is used to describe members of a Structure seems to imply every type must have a name. This is because each MemberDescriptor has an associated DynamicType (220.127.116.11.10 'Property: type') which according to 18.104.22.168.10 it cannot be null. And the DynamicType::get_name() should return the name of the type.
On the other hand Figure 5 seems to indicate only Modules and ConstructedTypes (according to Fig 5 these are: Alias, AggregateTypes, EnumeratedType, Collection) have a "ScopedIdentifier" which is their name.
This would mean that PrimitiveTypes, StringType do not have a ScopeIdentifyer/name. This seems problematic,
- PrimitiveTypes do seem to have a name as it is used when defining struct members of that type.
- CollectionTypes do not seem to have a name.
However nothing really says that typenames should be globally unique. They only need to be unique within a compilation unit...
Reported: DDS-XTypes 1.3b1 — Sun, 4 Aug 2019 20:29 GMT
Updated: Mon, 5 Aug 2019 10:06 GMT