diff --git a/rosidl_typesupport_introspection_c/bin/rosidl_typesupport_introspection_c b/rosidl_typesupport_introspection_c/bin/rosidl_typesupport_introspection_c index c9504656a..e20111d5b 100755 --- a/rosidl_typesupport_introspection_c/bin/rosidl_typesupport_introspection_c +++ b/rosidl_typesupport_introspection_c/bin/rosidl_typesupport_introspection_c @@ -4,9 +4,17 @@ import argparse import sys from rosidl_typesupport_introspection_c import generate_c +from typing import List -def main(argv=sys.argv[1:]): +def main(argv: List[str] = sys.argv[1:]): + """ + Generate the C introspection type support for ROS interfaces. + + :param argv: The command-line arguments to be parsed. Defaults to + sys.argv[1:]. + :type argv: List[str] + """ parser = argparse.ArgumentParser( description='Generate the C type support to dynamically handle ROS messages.', formatter_class=argparse.ArgumentDefaultsHelpFormatter) diff --git a/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/field_types.h b/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/field_types.h index 30547b82b..cd336cd3b 100644 --- a/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/field_types.h +++ b/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/field_types.h @@ -22,32 +22,56 @@ extern "C" { #endif -enum +/// Possible types for message fields on a ROS message +/// The equivalent OMG IDL and C types of the different fields can be found +/// at http://design.ros2.org/articles/idl_interface_definition.html#type-mapping +enum rosidl_typesupport_introspection_c_field_types { + /// Equivalent to float in C types. rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT = 1, + /// Equivalent to double in C types. rosidl_typesupport_introspection_c__ROS_TYPE_DOUBLE = 2, + /// Equivalent to long double in C types. rosidl_typesupport_introspection_c__ROS_TYPE_LONG_DOUBLE = 3, + /// Equivalent to unsigned char in C types. rosidl_typesupport_introspection_c__ROS_TYPE_CHAR = 4, + /// Equivalent to char16_t in C types. rosidl_typesupport_introspection_c__ROS_TYPE_WCHAR = 5, + /// Equivalent to _Bool in C types. rosidl_typesupport_introspection_c__ROS_TYPE_BOOLEAN = 6, + /// Equivalent to unsigned char in C types. rosidl_typesupport_introspection_c__ROS_TYPE_OCTET = 7, + /// Equivalent to uint8_t in C types. rosidl_typesupport_introspection_c__ROS_TYPE_UINT8 = 8, + /// Equivalent to int8_t in C types. rosidl_typesupport_introspection_c__ROS_TYPE_INT8 = 9, + /// Equivalent to uint16_t in C types. rosidl_typesupport_introspection_c__ROS_TYPE_UINT16 = 10, + /// Equivalent to int16_t in C types. rosidl_typesupport_introspection_c__ROS_TYPE_INT16 = 11, + /// Equivalent to uint32_t in C types. rosidl_typesupport_introspection_c__ROS_TYPE_UINT32 = 12, + /// Equivalent to int32_t in C types. rosidl_typesupport_introspection_c__ROS_TYPE_INT32 = 13, + /// Equivalent to uint64_t in C types. rosidl_typesupport_introspection_c__ROS_TYPE_UINT64 = 14, + /// Equivalent to int64_t in C types. rosidl_typesupport_introspection_c__ROS_TYPE_INT64 = 15, + /// Equivalent to char * in C types. rosidl_typesupport_introspection_c__ROS_TYPE_STRING = 16, + /// Equivalent to char16_t * in C types. rosidl_typesupport_introspection_c__ROS_TYPE_WSTRING = 17, + /// An embedded message type. rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE = 18, - // for backward compatibility only + /// For backward compatibility only. rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT32 = 1, + /// For backward compatibility only. rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT64 = 2, + /// For backward compatibility only. rosidl_typesupport_introspection_c__ROS_TYPE_BOOL = 6, + /// For backward compatibility only. rosidl_typesupport_introspection_c__ROS_TYPE_BYTE = 7 }; diff --git a/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/identifier.h b/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/identifier.h index 889831c0f..32f545536 100644 --- a/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/identifier.h +++ b/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/identifier.h @@ -22,6 +22,7 @@ extern "C" { #endif +/// String identifying the typesupport introspection implementation in use. ROSIDL_TYPESUPPORT_INTROSPECTION_C_PUBLIC extern const char * rosidl_typesupport_introspection_c__identifier; diff --git a/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/message_introspection.h b/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/message_introspection.h index f504e0c83..d5d220e08 100644 --- a/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/message_introspection.h +++ b/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/message_introspection.h @@ -24,19 +24,39 @@ #include "rosidl_typesupport_introspection_c/visibility_control.h" +/// Structure used to describe a single field of an interface type. typedef struct rosidl_typesupport_introspection_c__MessageMember_s { + /// The name of the field. const char * name_; + /// The type of the field as a value of the field types enum + /// rosidl_typesupport_introspection_c_field_types. + /// e.g. rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT uint8_t type_id_; + /// If the field is a string, the upper bound on the length of the string. size_t string_upper_bound_; + /// If the type_id_ value is rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE, + /// this points to an array describing the fields of the sub-interface. const rosidl_message_type_support_t * members_; + /// True if this field is an array type, false if it is any other type. An + /// array has the same value for / type_id_. bool is_array_; + /// If is_array_ is true, this contains the number of members in the array. size_t array_size_; + /// If is_array_ is true, this specifies if the array has a maximum size. If it is true, the + /// value in array_size_ is the maximum size. bool is_upper_bound_; + /// The bytes into the interface's in-memory representation that this field can be found at. uint32_t offset_; + /// If the interface has a default value, this points to it. const void * default_value_; + /// If is_array_ is true, a pointer to a function that gives the size of one member of the array. size_t (* size_function)(const void *); + /// If is_array_ is true, a pointer to a function that gives a const pointer to the member of the + /// array indicated by index. const void * (*get_const_function)(const void *, size_t index); + /// If is_array_ is true, a pointer to a function that gives a pointer to the member of the + /// array indicated by index. void * (*get_function)(void *, size_t index); /// Pointer to a function that fetches (i.e. copies) an item from /// an array or sequence member. It takes a pointer to the member, @@ -53,17 +73,27 @@ typedef struct rosidl_typesupport_introspection_c__MessageMember_s /// /// Available for array and sequence members. void (* assign_function)(void *, size_t index, const void *); + /// If is_array_ is true, a pointer to a function that resizes the array. bool (* resize_function)(void *, size_t size); } rosidl_typesupport_introspection_c__MessageMember; +/// Structure used to describe all fields of a single interface type. typedef struct rosidl_typesupport_introspection_c__MessageMembers_s { + /// The namespace in which the interface resides, e.g. "example_messages__msg" for + /// example_messages/msg const char * message_namespace_; + /// The name of the interface, e.g. "Int16" const char * message_name_; + /// The number of fields in the interface uint32_t member_count_; + /// The size of the interface structure in memory size_t size_of_; + /// A pointer to the array that describes each field of the interface const rosidl_typesupport_introspection_c__MessageMember * members_; + /// The function used to initialise the interface's in-memory representation void (* init_function)(void *, enum rosidl_runtime_c__message_initialization); + /// The function used to clean up the interface's in-memory representation void (* fini_function)(void *); } rosidl_typesupport_introspection_c__MessageMembers; diff --git a/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/service_introspection.h b/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/service_introspection.h index 60709bb55..059ab00fc 100644 --- a/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/service_introspection.h +++ b/rosidl_typesupport_introspection_c/include/rosidl_typesupport_introspection_c/service_introspection.h @@ -23,11 +23,18 @@ #include "rosidl_typesupport_introspection_c/message_introspection.h" +/// This struct provides introspection information for one service definition. +/// A service is comprised of two interfaces: the request and the response. typedef struct rosidl_typesupport_introspection_c__ServiceMembers_s { + /// The namespace in which the service resides, e.g. "example_messages__srv" for + /// example_messages/srv const char * service_namespace_; + /// The name of the service, e.g. "AddTwoInts" const char * service_name_; + /// A pointer to the introspection information structure for the request interface. const rosidl_typesupport_introspection_c__MessageMembers * request_members_; + /// A pointer to the introspection information structure for the response interface. const rosidl_typesupport_introspection_c__MessageMembers * response_members_; } rosidl_typesupport_introspection_c__ServiceMembers; diff --git a/rosidl_typesupport_introspection_c/rosidl_typesupport_introspection_c/__init__.py b/rosidl_typesupport_introspection_c/rosidl_typesupport_introspection_c/__init__.py index e47caee3b..fba92d457 100644 --- a/rosidl_typesupport_introspection_c/rosidl_typesupport_introspection_c/__init__.py +++ b/rosidl_typesupport_introspection_c/rosidl_typesupport_introspection_c/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2014-2018 Open Source Robotics Foundation, Inc. +# Copyright 2014-2021 Open Source Robotics Foundation, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,7 +15,14 @@ from rosidl_cmake import generate_files -def generate_c(generator_arguments_file): +def generate_c(generator_arguments_file: str): + """ + Generate the C implementation of the type support. + + :param generator_arguments_file: The path to the file containing the + arguments for the generator. + :type generator_arguments_file: str + """ mapping = { 'idl__rosidl_typesupport_introspection_c.h.em': 'detail/%s__rosidl_typesupport_introspection_c.h', diff --git a/rosidl_typesupport_introspection_c/rosidl_typesupport_introspection_c/cli.py b/rosidl_typesupport_introspection_c/rosidl_typesupport_introspection_c/cli.py index 4b5ebc54b..3cee143ce 100644 --- a/rosidl_typesupport_introspection_c/rosidl_typesupport_introspection_c/cli.py +++ b/rosidl_typesupport_introspection_c/rosidl_typesupport_introspection_c/cli.py @@ -25,6 +25,7 @@ class GenerateIntrospectionCTypesupport(GenerateCommandExtension): + """Generate the C type support implementation.""" def generate( self, diff --git a/rosidl_typesupport_introspection_cpp/bin/rosidl_typesupport_introspection_cpp b/rosidl_typesupport_introspection_cpp/bin/rosidl_typesupport_introspection_cpp index 06c41322a..3e2e2cede 100755 --- a/rosidl_typesupport_introspection_cpp/bin/rosidl_typesupport_introspection_cpp +++ b/rosidl_typesupport_introspection_cpp/bin/rosidl_typesupport_introspection_cpp @@ -4,9 +4,17 @@ import argparse import sys from rosidl_typesupport_introspection_cpp import generate_cpp +from typing import List -def main(argv=sys.argv[1:]): +def main(argv: List[str] = sys.argv[1:]): + """ + Generate the C++ introspection type support for ROS interfaces. + + :param argv: The command-line arguments to be parsed. Defaults to + sys.argv[1:]. + :type argv: List[str] + """ parser = argparse.ArgumentParser( description='Generate the C++ type support to dynamically handle ROS messages.', formatter_class=argparse.ArgumentDefaultsHelpFormatter) diff --git a/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/field_types.hpp b/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/field_types.hpp index 978cf87f5..dc21f61f2 100644 --- a/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/field_types.hpp +++ b/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/field_types.hpp @@ -20,31 +20,55 @@ namespace rosidl_typesupport_introspection_cpp { +/// Possible types for message fields on a ROS message +/// The equivalent OMG IDL and C++ types of the different fields can be found +/// at http://design.ros2.org/articles/idl_interface_definition.html#type-mapping +/// Equivalent to float in C++ types. const uint8_t ROS_TYPE_FLOAT = rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT; +/// Equivalent to double in C++ types. const uint8_t ROS_TYPE_DOUBLE = rosidl_typesupport_introspection_c__ROS_TYPE_DOUBLE; +/// Equivalent to long double in C++ types. const uint8_t ROS_TYPE_LONG_DOUBLE = rosidl_typesupport_introspection_c__ROS_TYPE_LONG_DOUBLE; +/// Equivalent to unsigned char in C++ types. const uint8_t ROS_TYPE_CHAR = rosidl_typesupport_introspection_c__ROS_TYPE_CHAR; +/// Equivalent to char16_t in C++ types. const uint8_t ROS_TYPE_WCHAR = rosidl_typesupport_introspection_c__ROS_TYPE_WCHAR; +/// Equivalent to bool in C++ types. const uint8_t ROS_TYPE_BOOLEAN = rosidl_typesupport_introspection_c__ROS_TYPE_BOOLEAN; +/// Equivalent to std::byte in C++ types. const uint8_t ROS_TYPE_OCTET = rosidl_typesupport_introspection_c__ROS_TYPE_OCTET; +/// Equivalent to uint8_t in C++ types. const uint8_t ROS_TYPE_UINT8 = rosidl_typesupport_introspection_c__ROS_TYPE_UINT8; +/// Equivalent to int8_t in C++ types. const uint8_t ROS_TYPE_INT8 = rosidl_typesupport_introspection_c__ROS_TYPE_INT8; +/// Equivalent to uint16_t in C++ types. const uint8_t ROS_TYPE_UINT16 = rosidl_typesupport_introspection_c__ROS_TYPE_UINT16; +/// Equivalent to int16_t in C++ types. const uint8_t ROS_TYPE_INT16 = rosidl_typesupport_introspection_c__ROS_TYPE_INT16; +/// Equivalent to uint32_t in C++ types. const uint8_t ROS_TYPE_UINT32 = rosidl_typesupport_introspection_c__ROS_TYPE_UINT32; +/// Equivalent to int32_t in C++ types. const uint8_t ROS_TYPE_INT32 = rosidl_typesupport_introspection_c__ROS_TYPE_INT32; +/// Equivalent to uint64_t in C++ types. const uint8_t ROS_TYPE_UINT64 = rosidl_typesupport_introspection_c__ROS_TYPE_UINT64; +/// Equivalent to int64_t in C++ types. const uint8_t ROS_TYPE_INT64 = rosidl_typesupport_introspection_c__ROS_TYPE_INT64; +/// Equivalent to std::string in C++ types. const uint8_t ROS_TYPE_STRING = rosidl_typesupport_introspection_c__ROS_TYPE_STRING; +/// Equivalent to std::u16string in C++ types. const uint8_t ROS_TYPE_WSTRING = rosidl_typesupport_introspection_c__ROS_TYPE_WSTRING; +/// An embedded message type. const uint8_t ROS_TYPE_MESSAGE = rosidl_typesupport_introspection_c__ROS_TYPE_MESSAGE; -// for backward compatibility only +/// For backward compatibility only. const uint8_t ROS_TYPE_BOOL = rosidl_typesupport_introspection_c__ROS_TYPE_BOOL; +/// For backward compatibility only. const uint8_t ROS_TYPE_BYTE = rosidl_typesupport_introspection_c__ROS_TYPE_BYTE; +/// For backward compatibility only. const uint8_t ROS_TYPE_FLOAT32 = rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT32; +/// For backward compatibility only. const uint8_t ROS_TYPE_FLOAT64 = rosidl_typesupport_introspection_c__ROS_TYPE_FLOAT64; } // namespace rosidl_typesupport_introspection_cpp diff --git a/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/identifier.hpp b/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/identifier.hpp index f72410c69..26d875511 100644 --- a/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/identifier.hpp +++ b/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/identifier.hpp @@ -20,6 +20,7 @@ namespace rosidl_typesupport_introspection_cpp { +/// String identifying the typesupport introspection implementation in use. ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_IMPORT extern const char * typesupport_identifier; diff --git a/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/message_introspection.hpp b/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/message_introspection.hpp index 6a76a6790..2340f2c8c 100644 --- a/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/message_introspection.hpp +++ b/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/message_introspection.hpp @@ -27,19 +27,41 @@ namespace rosidl_typesupport_introspection_cpp { +/// Structure used to describe a single field of an interface type. typedef struct ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC MessageMember_s { + /// The name of the field. const char * name_; + /// The type of the field as a value of the field types enum, + /// e.g.rosidl_typesupport_introspection_cpp::ROS_TYPE_FLOAT uint8_t type_id_; + /// If the field is a string, the upper bound on the length of the string. size_t string_upper_bound_; + /// If the type_id_ value is rosidl_typesupport_introspection_cpp::ROS_TYPE_MESSAGE + /// this points to an array describing the fields of the sub-interface. const rosidl_message_type_support_t * members_; + /// True if this field is an array, false if it is a unary type. An array has the same value for + /// type_id_. bool is_array_; + /// If is_array_ is true, this contains the number of members in the array. size_t array_size_; + /// If is_array_ is true, this specifies if the array has a maximum size. If it is true, the + /// value in array_size_ is the maximum size. bool is_upper_bound_; + /// The bytes into the interface's in-memory representation that this field can be found at. uint32_t offset_; + /// If the interface has a default value, this points to it. const void * default_value_; + /// If is_array_ is true, a pointer to a function that gives the size of array members. + /// First argument should be a pointer to the actual memory representation of the member. size_t (* size_function)(const void *); + /// If is_array_ is true, a pointer to a function that gives a const pointer to the member of the + /// array indicated by index. + /// First argument should be a pointer to the actual memory representation of the member. const void * (*get_const_function)(const void *, size_t index); + /// If is_array_ is true, a pointer to a function that gives a pointer to the member of the + /// array indicated by index. + /// First argument should be a pointer to the actual memory representation of the member. void * (*get_function)(void *, size_t index); /// Pointer to a function that fetches (i.e. copies) an item from /// an array or sequence member. It takes a pointer to the member, @@ -56,17 +78,29 @@ typedef struct ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC MessageMember_s /// /// Available for array and sequence members. void (* assign_function)(void *, size_t index, const void *); + /// If is_array_ is true, a pointer to a function that resizes the array. + /// First argument should be a pointer to the actual memory representation of the member. void (* resize_function)(void *, size_t size); } MessageMember; +/// Structure used to describe all fields of a single interface type. typedef struct ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC MessageMembers_s { + /// The namespace in which the interface resides, e.g. for + /// example_messages/msg the namespaces generated would be + /// example_message::msg". const char * message_namespace_; + /// The name of the interface, e.g. "Int16" const char * message_name_; + /// The number of fields in the interface uint32_t member_count_; + /// The size of the interface structure in memory size_t size_of_; + /// A pointer to the array that describes each field of the interface const MessageMember * members_; + /// The function used to initialise the interface's in-memory representation void (* init_function)(void *, rosidl_runtime_cpp::MessageInitialization); + /// The function used to clean up the interface's in-memory representation void (* fini_function)(void *); } MessageMembers; diff --git a/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp b/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp index 6b7579f52..97eece341 100644 --- a/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp +++ b/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/message_type_support_decl.hpp @@ -23,7 +23,10 @@ namespace rosidl_typesupport_introspection_cpp { -// This is implemented in the shared library provided by this package. +/// Returns a pointer to the type support structure provided by the +/// downstream libraries for introspecting interfaces generated by +/// the rosidl_generate_interfaces() macro. +/// This is implemented in the shared library provided by this package. template ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC const rosidl_message_type_support_t * get_message_type_support_handle(); diff --git a/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/service_introspection.hpp b/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/service_introspection.hpp index 49dcd33eb..df6f910d8 100644 --- a/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/service_introspection.hpp +++ b/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/service_introspection.hpp @@ -26,11 +26,18 @@ namespace rosidl_typesupport_introspection_cpp { +/// This struct provides introspection information for one service definition. +/// A service is comprised of two interfaces: the request and the response. typedef struct ServiceMembers_s { + /// The namespace in which the service resides, e.g. "example_messages::srv" + /// for example_messages/srv const char * service_namespace_; + /// The name of the service, e.g. "AddTwoInts" const char * service_name_; + /// A pointer to the introspection information structure for the request interface. const MessageMembers * request_members_; + /// A pointer to the introspection information structure for the response interface. const MessageMembers * response_members_; } ServiceMembers; diff --git a/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/service_type_support_decl.hpp b/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/service_type_support_decl.hpp index 47fa80c33..eaa3db906 100644 --- a/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/service_type_support_decl.hpp +++ b/rosidl_typesupport_introspection_cpp/include/rosidl_typesupport_introspection_cpp/service_type_support_decl.hpp @@ -23,7 +23,9 @@ namespace rosidl_typesupport_introspection_cpp { -// This is implemented in the shared library provided by this package. +/// Returns a pointer to the type support structure provided by this library for introspecting +/// services. +/// This is implemented in the shared library provided by this package. template ROSIDL_TYPESUPPORT_INTROSPECTION_CPP_PUBLIC const rosidl_service_type_support_t * get_service_type_support_handle(); diff --git a/rosidl_typesupport_introspection_cpp/rosidl_typesupport_introspection_cpp/__init__.py b/rosidl_typesupport_introspection_cpp/rosidl_typesupport_introspection_cpp/__init__.py index c4a66072a..b8a901d7e 100644 --- a/rosidl_typesupport_introspection_cpp/rosidl_typesupport_introspection_cpp/__init__.py +++ b/rosidl_typesupport_introspection_cpp/rosidl_typesupport_introspection_cpp/__init__.py @@ -15,7 +15,14 @@ from rosidl_cmake import generate_files -def generate_cpp(generator_arguments_file): +def generate_cpp(generator_arguments_file: str): + """ + Generate the C++ implementation of the type support. + + :param generator_arguments_file: The path to the file containing the + arguments for the generator. + :type generator_arguments_file: str + """ mapping = { 'idl__rosidl_typesupport_introspection_cpp.hpp.em': 'detail/%s__rosidl_typesupport_introspection_cpp.hpp', diff --git a/rosidl_typesupport_introspection_cpp/rosidl_typesupport_introspection_cpp/cli.py b/rosidl_typesupport_introspection_cpp/rosidl_typesupport_introspection_cpp/cli.py index 80b776de4..a26b5d99d 100644 --- a/rosidl_typesupport_introspection_cpp/rosidl_typesupport_introspection_cpp/cli.py +++ b/rosidl_typesupport_introspection_cpp/rosidl_typesupport_introspection_cpp/cli.py @@ -24,6 +24,7 @@ class GenerateIntrospectionCppTypesupport(GenerateCommandExtension): + """Make up a CLI for convenient access to the generators of type support.""" def generate( self,