4.8. Generated Code (Multiple Languages)

4.8.1. [Major] Code Generator not parsing duplicated XML files that contain non-complex types *

Code Generator would incorrectly display an error if you generated code for the following scenario:

  • You have three XML files: A.xml, B.xml and C.xml.

  • A.xml includes B.xml and C.xml.

  • B.xml includes C.xml.

  • C.xml contained non-complex types.

[RTI Issue ID CODEGENII-2033]

4.8.2. [Major] Recursive structures not supported

Warning

The fix for this issue is experimental. Recursive types may not be suitable for production.

Previous versions of Connext supported forward declarations, but did not support recursive structures.

Now, recursive structures are supported in all languages except Python and ADA. Python does not support forward declaration due to a language limitation.

To use recursive types, Code Generator requires the flag -unboundedsupport.

The recursion can be done in two ways for structs:

  1. Using optionals as recursive members. The recursive member will be set to NULL to stop the recursion.

  2. Using sequences as recursive members. An empty sequence will stop the recursion.

For unions, the recursive member must be a sequence.

The QoS will require the same properties that are necessary for unbounded support. See Unbounded Built-in Types in the Core Libraries User’s Manual for more information.

Be aware that Connext will not verify the size or if the recursion stops. It is up to the user to ensure that the serialized size can be handled and that the recursion will stop.

[RTI Issue ID CODEGENII-1411]

4.8.3. [Minor] Complex type names not colliding

Code Generator was not correctly flagging path collisions (case-insensitive) for complex type identifiers, as required by the IDL spec. Now, when two identifiers collide, Code Generator will fail if you are using the flag -strict. If the flag is not set, Code Generator will only display a warning.

[RTI Issue ID CODEGENII-2013]

4.8.4. [Minor] Erroneous warning when using -enableEscapeChar *

If you use an identifier that is an IDL keyword, you will see an error (for case-sensitive matches) or a warning (for case-insensitive ones). For this reason, Code Generator has the -enableEscapeChar command-line option, which allows you to escape the IDL keywords with an underscore so that they can be used in the IDL.

In release 7.2.0, RTI introduced a feature that incorrectly warned you (or caused Code Generator to fail if you used -strict) when your identifier collided with an IDL keyword, even though you escaped the identifier and used -enableEscapeChar. Now, if you escape an identifier that is an IDL keyword, you will not get any warning (or failure if you use -strict).

[RTI Issue ID CODEGENII-2008]

4.8.5. [Minor] Negative default values not supported for int8 members

When a member of type int8 was parsed by Code Generator and it had a default, min, or max annotation with a negative value, Code Generator failed, even though that annotation is valid. Now, Code Generator will correctly parse and generate code for an IDL like the following:

struct myStruct {
    @min(-10)
    @max(-1)
    @default(-5)
    int8 m1;
};

[RTI Issue ID CODEGENII-1949]

4.8.6. [Minor] Code Generator server not working as expected using relative paths with the -d option *

In Connext 7.1.0, a regression was introduced in Code Generator server when it was used with relative paths with the -d option and you moved from one directory to another between each call to the server. All the code was generated in the relative output directories specified with -d, but the paths were relative to the directory where the first call to Code Generator server occurred, not taking into account the working directory of the subsequent calls.

[RTI Issue ID CODEGENII-1941]

4.8.7. [Minor] Optional arrays not implemented

Optional arrays have been implemented for C, Traditional C++, Modern C++, Java, and C#.

Python and ADA APIs don’t support optional arrays yet.

[RTI Issue ID CODEGENII-124]



* This bug does not affect you if you are upgrading from 3.1.x or earlier.