2.5. Limitations

  • Bit fields in the IDL are not supported for Ada.

  • The Hello_dynamic example that is available in other languages is not available in Ada.

  • When using the -example flag in rtiddsgen to generate example code for Ada, the generated project file for compiling and the publisher and subscriber source files are placed under the samples directory, instead of at the top-level directory. Use the Ada project file under the samples directory to compile the example (or use the generated makefile that is located at the top level to compile).

  • The code generated by rtiddsgen for Ada language is not in pure Ada—it will contain both C and Ada code (Ada code is a wrapper around the C code); therefore a compatible C compiler is needed to compile the generated code.

  • Generated code for nested modules in Ada may not compile. Code Generator follows the Object Management Group (OMG) IDL-to-Ada specification in order to map modules:

    • Top level modules (i.e., those not enclosed by other modules) shall be mapped to child packages of the subsystem package, if a subsystem is specified, or root library packages otherwise. Modules nested within other modules or within subsystems shall be mapped to child packages of the corresponding package for the enclosing module or subsystem. The name of the generated package shall be mapped from the module name.

    • The generated code produced by following this specification does not compile when referencing elements from a nested module within the top-level module, as shown in the following example:

      module Outer
      {
         module Inner
         {
            struct Structure
            {
                  long id;
            };
         };
      
         struct Objects
         {
            Inner::Structure nest;
         };
      };
      

      This failure to compile happens because Ada does not allow a parent package to reference definitions in child packages.