def generate(self, package_name, interface_files, include_paths, output_path): package_share_path = \ pathlib.Path(get_package_share_directory('rosidl_generator_cpp')) templates_path = package_share_path / 'resource' # Normalize interface definition format to .idl idl_interface_files = [] non_idl_interface_files = [] for path in interface_files: if not path.endswith('.idl'): non_idl_interface_files.append(path) else: idl_interface_files.append(path) if non_idl_interface_files: idl_interface_files.extend( translate( package_name=package_name, interface_files=non_idl_interface_files, include_paths=include_paths, output_format='idl', output_path=output_path / 'tmp', )) # Generate code with legacy_generator_arguments_file( package_name=package_name, interface_files=idl_interface_files, include_paths=include_paths, templates_path=templates_path, output_path=output_path) as path_to_arguments_file: return generate_cpp(path_to_arguments_file)
def generate(self, package_name, interface_files, include_paths, output_path): generated_files = [] package_share_path = \ get_package_share_directory('rosidl_typesupport_c') templates_path = os.path.join(package_share_path, 'resource') # Normalize interface definition format to .idl idl_interface_files = [] non_idl_interface_files = [] for path in interface_files: if not path.endswith('.idl'): non_idl_interface_files.append(path) else: idl_interface_files.append(path) if non_idl_interface_files: idl_interface_files.extend( translate( package_name=package_name, interface_files=non_idl_interface_files, include_paths=include_paths, output_format='idl', output_path=output_path / 'tmp', )) # Generate visibility control file visibility_control_file_template_path = \ 'rosidl_typesupport_c__visibility_control.h.in' visibility_control_file_template_path = \ templates_path / visibility_control_file_template_path visibility_control_file_path = \ 'rosidl_typesupport_c__visibility_control.h' visibility_control_file_path = \ output_path / 'msg' / visibility_control_file_path generate_visibility_control_file( package_name=package_name, template_path=visibility_control_file_template_path, output_path=visibility_control_file_path) generated_files.append(visibility_control_file_path) # Generate typesupport code typesupport_implementations = list( get_resources('rosidl_typesupport_c')) with legacy_generator_arguments_file( package_name=package_name, interface_files=idl_interface_files, include_paths=include_paths, templates_path=templates_path, output_path=output_path) as path_to_arguments_file: generated_files.extend( generate_c(path_to_arguments_file, typesupport_implementations)) return generated_files
def generate(self, package_name, interface_files, include_paths, output_path): generated_files = [] package_share_path = \ pathlib.Path(get_package_share_directory('rosidl_generator_c')) templates_path = package_share_path / 'resource' # Normalize interface definition format to .idl idl_interface_files = [] non_idl_interface_files = [] for path in interface_files: if not path.endswith('.idl'): non_idl_interface_files.append(path) else: idl_interface_files.append(path) if non_idl_interface_files: idl_interface_files.extend( translate( package_name=package_name, interface_files=non_idl_interface_files, include_paths=include_paths, output_format='idl', output_path=output_path / 'tmp', )) # Generate visibility control file visibility_control_file_template_path = \ templates_path / 'rosidl_generator_c__visibility_control.h.in' visibility_control_file_path = \ output_path / 'msg' / 'rosidl_generator_c__visibility_control.h' generate_visibility_control_file( package_name=package_name, template_path=visibility_control_file_template_path, output_path=visibility_control_file_path) generated_files.append(visibility_control_file_path) # Generate code with legacy_generator_arguments_file( package_name=package_name, interface_files=idl_interface_files, include_paths=include_paths, templates_path=templates_path, output_path=output_path) as path_to_arguments_file: generated_files.extend(generate_c(path_to_arguments_file)) return generated_files
def test_legacy_generator_arguments_file(current_path): with legacy_generator_arguments_file( package_name='foo', interface_files=['msg/Foo.idl'], include_paths=['test_files/bar'], templates_path='templates', output_path='tmp', ) as path: with open(path, 'r') as fd: args = json.load(fd) assert args['package_name'] == 'foo' assert args['output_dir'] == str(current_path / 'tmp') assert args['template_dir'] == str(current_path / 'templates') assert args['idl_tuples'] == [f'{current_path}:msg/Foo.idl'] path_to_dep = pathlib.Path('test_files/bar/msg/Bar.idl') assert args['ros_interface_dependencies'] == [ 'bar:' + str(current_path / path_to_dep) ] assert not pathlib.Path(path).exists()