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
andC.xml
.A.xml
includesB.xml
andC.xml
.B.xml
includesC.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:
Using optionals as recursive members. The recursive member will be set to NULL to stop the recursion.
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.