.. include:: ../includes/aliases.rst .. _fastddsgen_intro: Introduction ============ *eProsima Fast DDS-Gen* is a Java application that generates *eProsima Fast DDS* source code using the data types defined in an IDL (Interface Definition Language) file. This generated source code can be used in any *Fast DDS* application in order to define the data type of a topic, which will later be used to publish or subscribe. *eProsima Fast DDS* defines the data type exchanged in a Topic through two classes: the |TypeSupport| and the |TopicDataType|. |TopicDataType| describes the data type exchanged between a publication and a subscription, i.e. the data corresponding to a Topic; while |TypeSupport| encapsulates an instance of TopicDataType, providing the functions needed to register the type and interact with the publication and subscription. Please refer to :ref:`dds_layer_definition_data_types` for more information on data types. To declare the structured data, the IDL format must be used. IDL is a specification language, made by `OMG `_ (Object Management Group), which describes an interface in a language independent manner, allowing communication between software components that do not share the same language. The *eProsima Fast DDS-Gen* tool reads the IDL files and parses a subset of the `OMG IDL specification `_ to generate source code for data serialization. This subset includes the data type descriptions included in :ref:`fastddsgen_idl_datatypes`. The rest of the file content is ignored. *eProsima Fast DDS-Gen* generated source code uses `Fast CDR `_, a C++11 library that provides the data serialization and codification mechanisms. Therefore, as stated in the `RTPS standard `_, when the data are sent, they are serialized and encoded using the corresponding Common Data Representation (CDR). The CDR transfer syntax is a low-level representation for inter-agents transfer, mapping from OMG IDL data types to byte streams. Please refer to the official `CDR specification `_ for more information on the CDR transfer syntax (see PDF section 15.3). The main feature of *eProsima Fast DDS-Gen* is to facilitate the implementation of DDS applications without the knowledge of serialization or deserialization mechanisms. With *Fast DDS-Gen* it is also possible to generate the C++ source code of a DDS application with a publisher and a subscriber that uses the *eProsima Fast DDS* library (see :ref:`fastddsgen_pubsub_app`). *Fast DDS-Gen* can also generate Python bindings for the data types in order to use them within a Python-based *Fast DDS* application (see :ref:`fastddsgen_python_bindings`). For installing *Fast DDS-Gen*, please refer to :ref:`Linux installation of Fast DDS-Gen ` or to :ref:`Windows installation of Fast DDS-Gen `.