fix extern "C" use upsetting gcc (and accepted by clang)

This commit is contained in:
Erik Boasson 2018-07-10 08:14:20 +02:00
parent 01ef31359a
commit 9c71a0bed2

View file

@ -327,16 +327,14 @@ static bool desermsg(eprosima::fastcdr::Cdr& deser, void *ros_message, std::func
return false; return false;
} }
extern "C"
{
#pragma GCC visibility push(default) #pragma GCC visibility push(default)
const char *rmw_get_implementation_identifier() extern "C" const char *rmw_get_implementation_identifier()
{ {
return adlink_cyclonedds_identifier; return adlink_cyclonedds_identifier;
} }
rmw_ret_t rmw_init() extern "C" rmw_ret_t rmw_init()
{ {
return RMW_RET_OK; return RMW_RET_OK;
} }
@ -347,7 +345,7 @@ extern "C"
/////////// /////////// /////////// ///////////
///////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////
rmw_node_t *rmw_create_node(const char *name, const char *namespace_, size_t domain_id, const rmw_node_security_options_t *security_options) extern "C" rmw_node_t *rmw_create_node(const char *name, const char *namespace_, size_t domain_id, const rmw_node_security_options_t *security_options)
{ {
RET_NULL_X(name, return nullptr); RET_NULL_X(name, return nullptr);
RET_NULL_X(namespace_, return nullptr); RET_NULL_X(namespace_, return nullptr);
@ -404,7 +402,7 @@ extern "C"
return nullptr; return nullptr;
} }
rmw_ret_t rmw_destroy_node(rmw_node_t *node) extern "C" rmw_ret_t rmw_destroy_node(rmw_node_t *node)
{ {
rmw_ret_t result_ret = RMW_RET_OK; rmw_ret_t result_ret = RMW_RET_OK;
RET_WRONG_IMPLID(node); RET_WRONG_IMPLID(node);
@ -425,7 +423,7 @@ extern "C"
return result_ret; return result_ret;
} }
const rmw_guard_condition_t *rmw_node_get_graph_guard_condition(const rmw_node_t *node) extern "C" const rmw_guard_condition_t *rmw_node_get_graph_guard_condition(const rmw_node_t *node)
{ {
RET_WRONG_IMPLID_X(node, return nullptr); RET_WRONG_IMPLID_X(node, return nullptr);
auto node_impl = static_cast<CddsNode *>(node->data); auto node_impl = static_cast<CddsNode *>(node->data);
@ -455,7 +453,7 @@ extern "C"
} }
} }
rmw_ret_t rmw_publish(const rmw_publisher_t *publisher, const void *ros_message) extern "C" rmw_ret_t rmw_publish(const rmw_publisher_t *publisher, const void *ros_message)
{ {
RET_WRONG_IMPLID(publisher); RET_WRONG_IMPLID(publisher);
RET_NULL(ros_message); RET_NULL(ros_message);
@ -590,7 +588,7 @@ extern "C"
return nullptr; return nullptr;
} }
rmw_publisher_t *rmw_create_publisher(const rmw_node_t *node, const rosidl_message_type_support_t *type_supports, const char *topic_name, const rmw_qos_profile_t *qos_policies) extern "C" rmw_publisher_t *rmw_create_publisher(const rmw_node_t *node, const rosidl_message_type_support_t *type_supports, const char *topic_name, const rmw_qos_profile_t *qos_policies)
{ {
CddsPublisher *pub; CddsPublisher *pub;
rmw_publisher_t *rmw_publisher; rmw_publisher_t *rmw_publisher;
@ -618,7 +616,7 @@ extern "C"
return nullptr; return nullptr;
} }
rmw_ret_t rmw_get_gid_for_publisher(const rmw_publisher_t *publisher, rmw_gid_t *gid) extern "C" rmw_ret_t rmw_get_gid_for_publisher(const rmw_publisher_t *publisher, rmw_gid_t *gid)
{ {
RET_WRONG_IMPLID(publisher); RET_WRONG_IMPLID(publisher);
RET_NULL(gid); RET_NULL(gid);
@ -631,7 +629,7 @@ extern "C"
return RMW_RET_OK; return RMW_RET_OK;
} }
rmw_ret_t rmw_compare_gids_equal(const rmw_gid_t *gid1, const rmw_gid_t *gid2, bool *result) extern "C" rmw_ret_t rmw_compare_gids_equal(const rmw_gid_t *gid1, const rmw_gid_t *gid2, bool *result)
{ {
RET_WRONG_IMPLID(gid1); RET_WRONG_IMPLID(gid1);
RET_WRONG_IMPLID(gid2); RET_WRONG_IMPLID(gid2);
@ -642,7 +640,7 @@ extern "C"
return RMW_RET_OK; return RMW_RET_OK;
} }
rmw_ret_t rmw_destroy_publisher(rmw_node_t *node, rmw_publisher_t *publisher) extern "C" rmw_ret_t rmw_destroy_publisher(rmw_node_t *node, rmw_publisher_t *publisher)
{ {
RET_WRONG_IMPLID(node); RET_WRONG_IMPLID(node);
RET_WRONG_IMPLID(publisher); RET_WRONG_IMPLID(publisher);
@ -728,7 +726,7 @@ extern "C"
return nullptr; return nullptr;
} }
rmw_subscription_t *rmw_create_subscription(const rmw_node_t *node, const rosidl_message_type_support_t *type_supports, const char *topic_name, const rmw_qos_profile_t *qos_policies, bool ignore_local_publications) extern "C" rmw_subscription_t *rmw_create_subscription(const rmw_node_t *node, const rosidl_message_type_support_t *type_supports, const char *topic_name, const rmw_qos_profile_t *qos_policies, bool ignore_local_publications)
{ {
CddsSubscription *sub; CddsSubscription *sub;
rmw_subscription_t *rmw_subscription; rmw_subscription_t *rmw_subscription;
@ -754,7 +752,7 @@ extern "C"
return nullptr; return nullptr;
} }
rmw_ret_t rmw_destroy_subscription(rmw_node_t *node, rmw_subscription_t *subscription) extern "C" rmw_ret_t rmw_destroy_subscription(rmw_node_t *node, rmw_subscription_t *subscription)
{ {
RET_WRONG_IMPLID(node); RET_WRONG_IMPLID(node);
RET_WRONG_IMPLID(subscription); RET_WRONG_IMPLID(subscription);
@ -806,12 +804,12 @@ extern "C"
return RMW_RET_OK; return RMW_RET_OK;
} }
rmw_ret_t rmw_take(const rmw_subscription_t *subscription, void *ros_message, bool *taken) extern "C" rmw_ret_t rmw_take(const rmw_subscription_t *subscription, void *ros_message, bool *taken)
{ {
return rmw_take_int(subscription, ros_message, taken, nullptr); return rmw_take_int(subscription, ros_message, taken, nullptr);
} }
rmw_ret_t rmw_take_with_info(const rmw_subscription_t *subscription, void *ros_message, bool *taken, rmw_message_info_t *message_info) extern "C" rmw_ret_t rmw_take_with_info(const rmw_subscription_t *subscription, void *ros_message, bool *taken, rmw_message_info_t *message_info)
{ {
return rmw_take_int(subscription, ros_message, taken, message_info); return rmw_take_int(subscription, ros_message, taken, message_info);
} }
@ -899,7 +897,7 @@ extern "C"
return ret; return ret;
} }
rmw_guard_condition_t *rmw_create_guard_condition() extern "C" rmw_guard_condition_t *rmw_create_guard_condition()
{ {
rmw_guard_condition_t *guard_condition_handle = new rmw_guard_condition_t; rmw_guard_condition_t *guard_condition_handle = new rmw_guard_condition_t;
guard_condition_handle->implementation_identifier = adlink_cyclonedds_identifier; guard_condition_handle->implementation_identifier = adlink_cyclonedds_identifier;
@ -907,7 +905,7 @@ extern "C"
return guard_condition_handle; return guard_condition_handle;
} }
rmw_ret_t rmw_destroy_guard_condition(rmw_guard_condition_t *guard_condition) extern "C" rmw_ret_t rmw_destroy_guard_condition(rmw_guard_condition_t *guard_condition)
{ {
RET_NULL(guard_condition); RET_NULL(guard_condition);
delete static_cast<CddsGuardCondition *>(guard_condition->data); delete static_cast<CddsGuardCondition *>(guard_condition->data);
@ -915,14 +913,14 @@ extern "C"
return RMW_RET_OK; return RMW_RET_OK;
} }
rmw_ret_t rmw_trigger_guard_condition(const rmw_guard_condition_t *guard_condition_handle) extern "C" rmw_ret_t rmw_trigger_guard_condition(const rmw_guard_condition_t *guard_condition_handle)
{ {
RET_WRONG_IMPLID(guard_condition_handle); RET_WRONG_IMPLID(guard_condition_handle);
condition_set_trigger(static_cast<CddsGuardCondition *>(guard_condition_handle->data), 1); condition_set_trigger(static_cast<CddsGuardCondition *>(guard_condition_handle->data), 1);
return RMW_RET_OK; return RMW_RET_OK;
} }
rmw_wait_set_t *rmw_create_wait_set(size_t max_conditions) extern "C" rmw_wait_set_t *rmw_create_wait_set(size_t max_conditions)
{ {
(void)max_conditions; (void)max_conditions;
rmw_wait_set_t * wait_set = rmw_wait_set_allocate(); rmw_wait_set_t * wait_set = rmw_wait_set_allocate();
@ -950,7 +948,7 @@ extern "C"
return nullptr; return nullptr;
} }
rmw_ret_t rmw_destroy_wait_set(rmw_wait_set_t * wait_set) extern "C" rmw_ret_t rmw_destroy_wait_set(rmw_wait_set_t * wait_set)
{ {
RET_WRONG_IMPLID(wait_set); RET_WRONG_IMPLID(wait_set);
auto result = RMW_RET_OK; auto result = RMW_RET_OK;
@ -973,7 +971,7 @@ extern "C"
return false; return false;
} }
rmw_ret_t rmw_wait(rmw_subscriptions_t *subs, rmw_guard_conditions_t *gcs, rmw_services_t *srvs, rmw_clients_t *cls, rmw_wait_set_t *wait_set, const rmw_time_t *wait_timeout) extern "C" rmw_ret_t rmw_wait(rmw_subscriptions_t *subs, rmw_guard_conditions_t *gcs, rmw_services_t *srvs, rmw_clients_t *cls, rmw_wait_set_t *wait_set, const rmw_time_t *wait_timeout)
{ {
RET_NULL(wait_set); RET_NULL(wait_set);
CddsWaitset *ws = static_cast<CddsWaitset *>(wait_set->data); CddsWaitset *ws = static_cast<CddsWaitset *>(wait_set->data);
@ -1068,14 +1066,14 @@ extern "C"
return RMW_RET_OK; return RMW_RET_OK;
} }
rmw_ret_t rmw_take_response(const rmw_client_t *client, rmw_request_id_t *request_header, void *ros_response, bool *taken) extern "C" rmw_ret_t rmw_take_response(const rmw_client_t *client, rmw_request_id_t *request_header, void *ros_response, bool *taken)
{ {
RET_WRONG_IMPLID(client); RET_WRONG_IMPLID(client);
auto info = static_cast<CddsClient *>(client->data); auto info = static_cast<CddsClient *>(client->data);
return rmw_take_response_request(&info->client, request_header, ros_response, taken, info->client.pub->pubiid); return rmw_take_response_request(&info->client, request_header, ros_response, taken, info->client.pub->pubiid);
} }
rmw_ret_t rmw_take_request(const rmw_service_t *service, rmw_request_id_t *request_header, void *ros_request, bool *taken) extern "C" rmw_ret_t rmw_take_request(const rmw_service_t *service, rmw_request_id_t *request_header, void *ros_request, bool *taken)
{ {
RET_WRONG_IMPLID(service); RET_WRONG_IMPLID(service);
auto info = static_cast<CddsService *>(service->data); auto info = static_cast<CddsService *>(service->data);
@ -1094,7 +1092,7 @@ extern "C"
} }
} }
rmw_ret_t rmw_send_response(const rmw_service_t *service, rmw_request_id_t *request_header, void *ros_response) extern "C" rmw_ret_t rmw_send_response(const rmw_service_t *service, rmw_request_id_t *request_header, void *ros_response)
{ {
RET_WRONG_IMPLID(service); RET_WRONG_IMPLID(service);
RET_NULL(request_header); RET_NULL(request_header);
@ -1106,7 +1104,7 @@ extern "C"
return rmw_send_response_request(&info->service, &header, ros_response); return rmw_send_response_request(&info->service, &header, ros_response);
} }
rmw_ret_t rmw_send_request(const rmw_client_t *client, const void *ros_request, int64_t *sequence_id) extern "C" rmw_ret_t rmw_send_request(const rmw_client_t *client, const void *ros_request, int64_t *sequence_id)
{ {
static std::atomic_uint next_request_id; static std::atomic_uint next_request_id;
RET_WRONG_IMPLID(client); RET_WRONG_IMPLID(client);
@ -1236,7 +1234,7 @@ extern "C"
cs->sub->node->own_writers.erase(cs->pub->pubiid); cs->sub->node->own_writers.erase(cs->pub->pubiid);
} }
rmw_client_t *rmw_create_client(const rmw_node_t *node, const rosidl_service_type_support_t *type_supports, const char *service_name, const rmw_qos_profile_t *qos_policies) extern "C" rmw_client_t *rmw_create_client(const rmw_node_t *node, const rosidl_service_type_support_t *type_supports, const char *service_name, const rmw_qos_profile_t *qos_policies)
{ {
CddsClient *info = new CddsClient(); CddsClient *info = new CddsClient();
if (rmw_init_cs(&info->client, node, type_supports, service_name, qos_policies, false) != RMW_RET_OK) { if (rmw_init_cs(&info->client, node, type_supports, service_name, qos_policies, false) != RMW_RET_OK) {
@ -1258,7 +1256,7 @@ extern "C"
return nullptr; return nullptr;
} }
rmw_ret_t rmw_destroy_client(rmw_node_t *node, rmw_client_t *client) extern "C" rmw_ret_t rmw_destroy_client(rmw_node_t *node, rmw_client_t *client)
{ {
RET_WRONG_IMPLID(node); RET_WRONG_IMPLID(node);
RET_WRONG_IMPLID(client); RET_WRONG_IMPLID(client);
@ -1269,7 +1267,7 @@ extern "C"
return RMW_RET_OK; return RMW_RET_OK;
} }
rmw_service_t *rmw_create_service(const rmw_node_t *node, const rosidl_service_type_support_t *type_supports, const char *service_name, const rmw_qos_profile_t *qos_policies) extern "C" rmw_service_t *rmw_create_service(const rmw_node_t *node, const rosidl_service_type_support_t *type_supports, const char *service_name, const rmw_qos_profile_t *qos_policies)
{ {
CddsService *info = new CddsService(); CddsService *info = new CddsService();
if (rmw_init_cs(&info->service, node, type_supports, service_name, qos_policies, true) != RMW_RET_OK) { if (rmw_init_cs(&info->service, node, type_supports, service_name, qos_policies, true) != RMW_RET_OK) {
@ -1291,7 +1289,7 @@ extern "C"
return nullptr; return nullptr;
} }
rmw_ret_t rmw_destroy_service(rmw_node_t *node, rmw_service_t *service) extern "C" rmw_ret_t rmw_destroy_service(rmw_node_t *node, rmw_service_t *service)
{ {
RET_WRONG_IMPLID(node); RET_WRONG_IMPLID(node);
RET_WRONG_IMPLID(service); RET_WRONG_IMPLID(service);
@ -1308,7 +1306,7 @@ extern "C"
/////////// /////////// /////////// ///////////
///////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////
rmw_ret_t rmw_get_node_names(const rmw_node_t *node, rcutils_string_array_t *node_names) extern "C" rmw_ret_t rmw_get_node_names(const rmw_node_t *node, rcutils_string_array_t *node_names)
{ {
#if 0 // NIY #if 0 // NIY
RET_WRONG_IMPLID(node); RET_WRONG_IMPLID(node);
@ -1347,7 +1345,7 @@ extern "C"
#endif #endif
} }
rmw_ret_t rmw_get_topic_names_and_types(const rmw_node_t *node, rcutils_allocator_t *allocator, bool no_demangle, rmw_names_and_types_t *topic_names_and_types) extern "C" rmw_ret_t rmw_get_topic_names_and_types(const rmw_node_t *node, rcutils_allocator_t *allocator, bool no_demangle, rmw_names_and_types_t *topic_names_and_types)
{ {
#if 0 // NIY #if 0 // NIY
RET_NULL(allocator); RET_NULL(allocator);
@ -1463,7 +1461,7 @@ extern "C"
#endif #endif
} }
rmw_ret_t rmw_get_service_names_and_types(const rmw_node_t *node, rcutils_allocator_t *allocator, rmw_names_and_types_t *service_names_and_types) extern "C" rmw_ret_t rmw_get_service_names_and_types(const rmw_node_t *node, rcutils_allocator_t *allocator, rmw_names_and_types_t *service_names_and_types)
{ {
#if 0 // NIY #if 0 // NIY
if (!allocator) { if (!allocator) {
@ -1590,7 +1588,7 @@ extern "C"
#endif #endif
} }
rmw_ret_t rmw_service_server_is_available(const rmw_node_t * node, const rmw_client_t * client, bool * is_available) extern "C" rmw_ret_t rmw_service_server_is_available(const rmw_node_t * node, const rmw_client_t * client, bool * is_available)
{ {
#if 0 // NIY #if 0 // NIY
if (!node) { if (!node) {
@ -1687,7 +1685,7 @@ extern "C"
#endif #endif
} }
rmw_ret_t rmw_count_publishers(const rmw_node_t *node, const char *topic_name, size_t *count) extern "C" rmw_ret_t rmw_count_publishers(const rmw_node_t *node, const char *topic_name, size_t *count)
{ {
#if 0 #if 0
// safechecks // safechecks
@ -1727,7 +1725,7 @@ extern "C"
#endif #endif
} }
rmw_ret_t rmw_count_subscribers(const rmw_node_t *node, const char *topic_name, size_t *count) extern "C" rmw_ret_t rmw_count_subscribers(const rmw_node_t *node, const char *topic_name, size_t *count)
{ {
#if 0 #if 0
// safechecks // safechecks
@ -1766,4 +1764,3 @@ extern "C"
return RMW_RET_TIMEOUT; return RMW_RET_TIMEOUT;
#endif #endif
} }
} // extern "C"