Program Listing for File FEATURES.md

Return to documentation for file (docs/FEATURES.md)

# rosidl_runtime_c Features

## Primitive sequence definitions initializations and finalizations

`rosidl_runtime_c` provides default definitions, as well as initialization and finalization functions for the supported rosidl primitive sequence types.
These functions are defined in the following headers:

* `primitives_sequence.h`: C struct definitions for all supported primitive sequence types.
* `primitive_sequence_functions.h`: initialization and finalization functionality for the above defined sequences.
* `sequence_bound.h`: Struct designed to track the upper bounds size of a sequence. Currently unused.

## String and u16string definitions, initializations and finalizations

Like the sequences described above, `rosidl_runtime_c` provides definitions, as well as initialization and finalization functions for 8-bit and 16-bit character strings.

* `string.h`: C struct definition for an 8-bit string.
* `string_functions.h`: initialization and finalization functionality for the rosidl 8-bit string.
* `string_bound.h`: Designed to track the upper bounds size of a string. Currently unused.

* `u16string.h`: C struct definition for a 16-bit string.
* `u16string_functions.h`: initialization and finalization functionality for the rosidl 16-bit string.

## Typesupport structs

This package defines several structs which are utilized for providing access to properties and functionality of different rosidl types.
They are defined for the three main ROS 2 rosidl types:
* Messages (`message_type_support_struct.h`)
* Services (`service_type_support_struct.h`)
* Actions (`action_type_support_struct.h`)

## Type Description Interface Structs

A copy of the output of `rosidl_generator_c` for `type_description_interfaces` messages.
The copy is needed to avoid a circular dependency - `type_description_interfaces` would be used directly for code generation, except as an interface package like any other, it depends on `rosidl_runtime_c` to have its code generated.

Provides base runtime representations of the descriptions of interface types in C.
These can be used in code generation to embed descriptions of types, and can be used for programmatic creation of dynamic types.
The types are renamed so that they do not overlap with `type_description_interfaces` - and can be used in their code generation so that even those messages are self-describing.

Note that end users will typically fetch and use the `type_description_interfaces__msg__TypeDescription` and its members instead of the `rosidl_runtime_c` types.
Functions will be provided in `rcl` that convert between `rosidl_runtime_c__type_description__` and `type_description_interfaces__msg__` types.

See `rosidl/scripts/copy_type_descripiton_generated_sources.bash` for usage and details of how sources are copied, and what modifications are made.