Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,10 @@ foreach(_abs_idl_file ${rosidl_generate_interfaces_ABS_IDL_FILES})
"${_output_path}/${_parent_folder}/${_idl_name}_Response.java"
)
foreach(_typesupport_impl ${_typesupport_impls})
list(APPEND _generated_extension_${_typesupport_impl}_files "${_output_path}/${_parent_folder}/${_idl_name}_Request.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files "${_output_path}/${_parent_folder}/${_idl_name}_Response.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files
"${_output_path}/${_parent_folder}/${_idl_name}_Request.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files
"${_output_path}/${_parent_folder}/${_idl_name}_Response.ep.${_typesupport_impl}.cpp")
endforeach()
endif()
# Actions generate extra files
Expand All @@ -91,21 +93,32 @@ foreach(_abs_idl_file ${rosidl_generate_interfaces_ABS_IDL_FILES})
"${_output_path}/${_parent_folder}/${_idl_name}_GetResult_Response.java"
)
foreach(_typesupport_impl ${_typesupport_impls})
list(APPEND _generated_extension_${_typesupport_impl}_files "${_output_path}/${_parent_folder}/${_idl_name}_Goal.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files "${_output_path}/${_parent_folder}/${_idl_name}_Result.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files "${_output_path}/${_parent_folder}/${_idl_name}_Feedback.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files "${_output_path}/${_parent_folder}/${_idl_name}_FeedbackMessage.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files "${_output_path}/${_parent_folder}/${_idl_name}_SendGoal.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files "${_output_path}/${_parent_folder}/${_idl_name}_SendGoal_Request.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files "${_output_path}/${_parent_folder}/${_idl_name}_SendGoal_Response.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files "${_output_path}/${_parent_folder}/${_idl_name}_GetResult.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files "${_output_path}/${_parent_folder}/${_idl_name}_GetResult_Request.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files "${_output_path}/${_parent_folder}/${_idl_name}_GetResult_Response.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files
"${_output_path}/${_parent_folder}/${_idl_name}_Goal.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files
"${_output_path}/${_parent_folder}/${_idl_name}_Result.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files
"${_output_path}/${_parent_folder}/${_idl_name}_Feedback.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files
"${_output_path}/${_parent_folder}/${_idl_name}_FeedbackMessage.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files
"${_output_path}/${_parent_folder}/${_idl_name}_SendGoal.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files
"${_output_path}/${_parent_folder}/${_idl_name}_SendGoal_Request.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files
"${_output_path}/${_parent_folder}/${_idl_name}_SendGoal_Response.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files
"${_output_path}/${_parent_folder}/${_idl_name}_GetResult.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files
"${_output_path}/${_parent_folder}/${_idl_name}_GetResult_Request.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files
"${_output_path}/${_parent_folder}/${_idl_name}_GetResult_Response.ep.${_typesupport_impl}.cpp")
endforeach()
endif()

foreach(_typesupport_impl ${_typesupport_impls})
list(APPEND _generated_extension_${_typesupport_impl}_files "${_output_path}/${_parent_folder}/${_idl_name}.ep.${_typesupport_impl}.cpp")
list(APPEND _generated_extension_${_typesupport_impl}_files
"${_output_path}/${_parent_folder}/${_idl_name}.ep.${_typesupport_impl}.cpp")
endforeach()
endforeach()

Expand Down
5 changes: 5 additions & 0 deletions rosidl_generator_java/resource/action.cpp.em
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
@# Included from rosidl_generator_java/resource/idl.cpp.em
// generated from rosidl_generator_java/resource/action.cpp.em
// with input from @(package_name):@(interface_path)
// generated code does not contain a copyright notice
@{
import os

Expand All @@ -16,6 +19,7 @@ get_result_type_name = action.get_result_service.namespaced_type.name

data = {
'package_name': package_name,
'interface_path': interface_path,
'output_dir': output_dir,
'template_basepath': template_basepath,
}
Expand Down Expand Up @@ -60,6 +64,7 @@ expand_template(

data = {
'package_name': package_name,
'interface_path': interface_path,
'output_dir': output_dir,
'template_basepath': template_basepath,
'typesupport_impl': typesupport_impl,
Expand Down
1 change: 1 addition & 0 deletions rosidl_generator_java/resource/idl.cpp.em
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ from rosidl_parser.definition import Service
@{
data = {
'package_name': package_name,
'interface_path': interface_path,
'output_dir': output_dir,
'template_basepath': template_basepath,
}
Expand Down
3 changes: 3 additions & 0 deletions rosidl_generator_java/resource/idl.java.em
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
@#######################################################################
@# Handle messages
@#######################################################################
// generated from rosidl_generator_java/resource/idl.java.em
// with input from @(package_name):@(interface_path)
// generated code does not contain a copyright notice
@{
import os

Expand Down
17 changes: 10 additions & 7 deletions rosidl_generator_java/resource/msg.cpp.em
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
@# Included from rosidl_generator_java/resource/idl.cpp.em
// generated from rosidl_generator_java/resource/msg.cpp.em
// with input from @(package_name):@(interface_path)
// generated code does not contain a copyright notice
@{
from collections import defaultdict

Expand Down Expand Up @@ -95,10 +98,12 @@ elif message_c_include_prefix.endswith('__send_goal'):
message_c_include_prefix = message_c_include_prefix[:-11]
elif message_c_include_prefix.endswith('__get_result'):
message_c_include_prefix = message_c_include_prefix[:-12]
member_includes.add(f'{message_c_include_prefix}.h')
}@

@
#include <jni.h>

#include <algorithm>
#include <cassert>
#include <cstdint>
#include <string>
Expand All @@ -112,8 +117,6 @@ elif message_c_include_prefix.endswith('__get_result'):
#include "@(include)"
@[end for]@

#include "@(message_c_include_prefix).h"

// Ensure that a jlong is big enough to store raw pointers
static_assert(sizeof(jlong) >= sizeof(std::intptr_t), "jlong must be able to store pointers");

Expand Down Expand Up @@ -265,7 +268,7 @@ jni_signature = get_jni_signature(base_type)
auto _dest_@(member.name) = ros_message->@(member.name);
@[ end if]@
@[ if isinstance(member.type.value_type, BasicType)]@
j@(get_java_name) *_jarray_@(member.name)_ptr = env->Get@(get_method_name)ArrayElements(_jarray_@(member.name)_obj, nullptr);
j@(get_java_name) * _jarray_@(member.name)_ptr = env->Get@(get_method_name)ArrayElements(_jarray_@(member.name)_obj, nullptr);
std::copy(_jarray_@(member.name)_ptr, _jarray_@(member.name)_ptr + _jarray_@(member.name)_size, _dest_@(member.name));
env->Release@(get_method_name)ArrayElements(_jarray_@(member.name)_obj, _jarray_@(member.name)_ptr, 0);
@[ else]@
Expand Down Expand Up @@ -378,12 +381,12 @@ jni_signature = get_jni_signature(base_type)
@[ if isinstance(member.type.value_type, BasicType)]@
@[ if isinstance(member.type, Array)]@
j@(get_java_name)Array _jarray_@(member.name)_obj = env->New@(get_method_name)Array(@(member.type.size));
j@(get_java_name) *_j@(get_java_name)_@(member.name)_buf = (j@(get_java_name) *)malloc(sizeof(j@(get_java_name)) * @(member.type.size));
auto * _j@(get_java_name)_@(member.name)_buf = static_cast<j@(get_java_name) *>(malloc(sizeof(j@(get_java_name)) * @(member.type.size)));
std::copy(_ros_message->@(member.name), _ros_message->@(member.name) + @(member.type.size), _j@(get_java_name)_@(member.name)_buf);
env->Set@(get_method_name)ArrayRegion(_jarray_@(member.name)_obj, 0, @(member.type.size), (const j@(get_java_name) *)_j@(get_java_name)_@(member.name)_buf);
@[ else]@
j@(get_java_name)Array _jarray_@(member.name)_obj = env->New@(get_method_name)Array(_ros_message->@(member.name).size);
j@(get_java_name) *_j@(get_java_name)_@(member.name)_buf = (j@(get_java_name) *)malloc(sizeof(j@(get_java_name)) * _ros_message->@(member.name).size);
auto * _j@(get_java_name)_@(member.name)_buf = static_cast<j@(get_java_name) *>(malloc(sizeof(j@(get_java_name)) * _ros_message->@(member.name).size));
std::copy(_ros_message->@(member.name).data, _ros_message->@(member.name).data + _ros_message->@(member.name).size, _j@(get_java_name)_@(member.name)_buf);
env->Set@(get_method_name)ArrayRegion(_jarray_@(member.name)_obj, 0, _ros_message->@(member.name).size, (const j@(get_java_name) *)_j@(get_java_name)_@(member.name)_buf);
@[ end if]@
Expand Down Expand Up @@ -563,7 +566,7 @@ JNIEXPORT jlong JNICALL Java_@(underscore_separated_jni_type_name)_getToJavaConv

JNIEXPORT jlong JNICALL Java_@(underscore_separated_jni_type_name)_getTypeSupport(JNIEnv *, jclass)
{
jlong ptr = reinterpret_cast<jlong>(ROSIDL_GET_MSG_TYPE_SUPPORT(@(','.join(message.structure.namespaced_type.namespaced_name()))));
jlong ptr = reinterpret_cast<jlong>(ROSIDL_GET_MSG_TYPE_SUPPORT(@(', '.join(message.structure.namespaced_type.namespaced_name()))));
return ptr;
}

Expand Down
6 changes: 5 additions & 1 deletion rosidl_generator_java/resource/srv.cpp.em
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
@# Included from rosidl_generator_java/resource/idl.cpp.em
// generated from rosidl_generator_java/resource/srv.cpp.em
// with input from @(package_name):@(interface_path)
// generated code does not contain a copyright notice
@{
import os
from rosidl_cmake import expand_template
Expand All @@ -11,6 +14,7 @@ response_type_name = service.response_message.structure.namespaced_type.name

data = {
'package_name': package_name,
'interface_path': interface_path,
'output_dir': output_dir,
'template_basepath': template_basepath,
}
Expand Down Expand Up @@ -83,6 +87,6 @@ JNIEXPORT jlong JNICALL Java_@(underscore_separated_jni_type_name)_getServiceTyp
JNIEXPORT jlong JNICALL Java_@(underscore_separated_jni_type_name)_getServiceTypeSupport(JNIEnv *, jclass)
{
const rosidl_service_type_support_t * ts = ROSIDL_GET_SRV_TYPE_SUPPORT(
@(','.join(service_fqn)));
@(', '.join(service_fqn)));
return reinterpret_cast<jlong>(ts);
}