remove compile error when gcc 7

This commit is contained in:
YuSheng T 2019-05-03 17:42:03 +08:00 committed by eboasson
parent 315d39a2ec
commit f7de5522d7
3 changed files with 30 additions and 26 deletions

View file

@ -21,6 +21,7 @@
#include <cassert> #include <cassert>
#include <string> #include <string>
#include <functional>
#include "rcutils/logging_macros.h" #include "rcutils/logging_macros.h"

View file

@ -18,6 +18,7 @@
#include <array> #include <array>
#include <string> #include <string>
#include <vector> #include <vector>
#include <string.h>
#include <type_traits> #include <type_traits>
class cycser { class cycser {
@ -60,7 +61,7 @@ public:
SIMPLE (float); SIMPLE (float);
SIMPLE (double); SIMPLE (double);
#undef SIMPLE #undef SIMPLE
inline void serialize (bool x) { inline void serialize (bool x) {
serialize (static_cast<unsigned char> (x)); serialize (static_cast<unsigned char> (x));
} }
@ -103,7 +104,7 @@ public:
template<class T> inline void serializeA (const T *x, size_t cnt) { template<class T> inline void serializeA (const T *x, size_t cnt) {
for (size_t i = 0; i < cnt; i++) serialize (x[i]); for (size_t i = 0; i < cnt; i++) serialize (x[i]);
} }
template<class T> inline void serialize (const std::vector<T>& x) template<class T> inline void serialize (const std::vector<T>& x)
{ {
serialize (static_cast<uint32_t> (x.size ())); serialize (static_cast<uint32_t> (x.size ()));
@ -123,7 +124,7 @@ public:
private: private:
inline void resize (size_t n) { dst.resize (n + 4); } inline void resize (size_t n) { dst.resize (n + 4); }
inline unsigned char *data () { return dst.data () + 4; } inline unsigned char *data () { return dst.data () + 4; }
std::vector<unsigned char>& dst; std::vector<unsigned char>& dst;
size_t off; size_t off;
}; };
@ -166,7 +167,7 @@ public:
SIMPLE (float); SIMPLE (float);
SIMPLE (double); SIMPLE (double);
#undef SIMPLE #undef SIMPLE
inline void deserialize (bool& x) { inline void deserialize (bool& x) {
unsigned char z; deserialize (z); x = (z != 0); unsigned char z; deserialize (z); x = (z != 0);
} }
@ -204,7 +205,7 @@ public:
template<class T> inline void deserializeA (T *x, size_t cnt) { template<class T> inline void deserializeA (T *x, size_t cnt) {
for (size_t i = 0; i < cnt; i++) deserialize (x[i]); for (size_t i = 0; i < cnt; i++) deserialize (x[i]);
} }
template<class T> inline void deserialize (std::vector<T>& x) { template<class T> inline void deserialize (std::vector<T>& x) {
const uint32_t sz = deserialize32 (); const uint32_t sz = deserialize32 ();
x.resize (sz); x.resize (sz);
@ -219,7 +220,7 @@ public:
template<class T, size_t S> inline void deserialize (std::array<T, S>& x) { template<class T, size_t S> inline void deserialize (std::array<T, S>& x) {
deserializeA (x.data (), x.size ()); deserializeA (x.data (), x.size ());
} }
private: private:
inline void align (size_t a) inline void align (size_t a)
{ {

View file

@ -36,6 +36,8 @@
#include <mutex> #include <mutex>
#include <unordered_set> #include <unordered_set>
#include <algorithm>
#include <atomic>
#include "rcutils/logging_macros.h" #include "rcutils/logging_macros.h"
@ -260,7 +262,7 @@ static void unref_ppant ()
/////////// NODES /////////// /////////// NODES ///////////
/////////// /////////// /////////// ///////////
///////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////
extern "C" rmw_node_t *rmw_create_node (rmw_context_t *context __attribute__ ((unused)), 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 (rmw_context_t *context __attribute__ ((unused)), 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);
@ -285,11 +287,11 @@ extern "C" rmw_node_t *rmw_create_node (rmw_context_t *context __attribute__ ((u
RET_ALLOC_X (node_handle, goto fail_node_handle); RET_ALLOC_X (node_handle, goto fail_node_handle);
node_handle->implementation_identifier = eclipse_cyclonedds_identifier; node_handle->implementation_identifier = eclipse_cyclonedds_identifier;
node_handle->data = node_impl; node_handle->data = node_impl;
node_handle->name = static_cast<const char *> (rmw_allocate (sizeof (char) * strlen (name) + 1)); node_handle->name = static_cast<const char *> (rmw_allocate (sizeof (char) * strlen (name) + 1));
RET_ALLOC_X (node_handle->name, goto fail_node_handle_name); RET_ALLOC_X (node_handle->name, goto fail_node_handle_name);
memcpy (const_cast<char *> (node_handle->name), name, strlen (name) + 1); memcpy (const_cast<char *> (node_handle->name), name, strlen (name) + 1);
node_handle->namespace_ = static_cast<const char *> (rmw_allocate (sizeof (char) * strlen (namespace_) + 1)); node_handle->namespace_ = static_cast<const char *> (rmw_allocate (sizeof (char) * strlen (namespace_) + 1));
RET_ALLOC_X (node_handle->namespace_, goto fail_node_handle_namespace); RET_ALLOC_X (node_handle->namespace_, goto fail_node_handle_namespace);
memcpy (const_cast<char *> (node_handle->namespace_), namespace_, strlen (namespace_) + 1); memcpy (const_cast<char *> (node_handle->namespace_), namespace_, strlen (namespace_) + 1);
@ -345,7 +347,7 @@ extern "C" const rmw_guard_condition_t *rmw_node_get_graph_guard_condition (cons
/////////// (DE)SERIALIZATION /////////// /////////// (DE)SERIALIZATION ///////////
/////////// /////////// /////////// ///////////
///////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////
extern "C" rmw_ret_t rmw_serialize (const void *ros_message, const rosidl_message_type_support_t *type_support, rmw_serialized_message_t *serialized_message) extern "C" rmw_ret_t rmw_serialize (const void *ros_message, const rosidl_message_type_support_t *type_support, rmw_serialized_message_t *serialized_message)
{ {
(void) ros_message; (void) type_support; (void) serialized_message; (void) ros_message; (void) type_support; (void) serialized_message;
@ -365,7 +367,7 @@ extern "C" rmw_ret_t rmw_deserialize (const rmw_serialized_message_t *serialized
/////////// PUBLICATIONS /////////// /////////// PUBLICATIONS ///////////
/////////// /////////// /////////// ///////////
///////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////
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);
@ -455,8 +457,8 @@ static dds_qos_t *create_readwrite_qos (const rmw_qos_profile_t *qos_policies, b
dds_qset_ignorelocal (qos, DDS_IGNORELOCAL_PARTICIPANT); dds_qset_ignorelocal (qos, DDS_IGNORELOCAL_PARTICIPANT);
} }
return qos; return qos;
} }
static CddsPublisher *create_cdds_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) static CddsPublisher *create_cdds_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)
{ {
RET_WRONG_IMPLID_X (node, return nullptr); RET_WRONG_IMPLID_X (node, return nullptr);
@ -758,7 +760,7 @@ extern "C" rmw_guard_condition_t *rmw_create_guard_condition (rmw_context_t *con
guard_condition_handle->implementation_identifier = eclipse_cyclonedds_identifier; guard_condition_handle->implementation_identifier = eclipse_cyclonedds_identifier;
guard_condition_handle->data = gcond_impl; guard_condition_handle->data = gcond_impl;
return guard_condition_handle; return guard_condition_handle;
fail_guardcond: fail_guardcond:
unref_ppant (); unref_ppant ();
fail_ppant: fail_ppant:
@ -812,8 +814,8 @@ extern "C" rmw_wait_set_t *rmw_create_wait_set (size_t max_conditions)
gcdds.waitsets.insert (ws); gcdds.waitsets.insert (ws);
} }
return wait_set; return wait_set;
fail_waitset: fail_waitset:
fail_ws: fail_ws:
RMW_TRY_DESTRUCTOR_FROM_WITHIN_FAILURE (ws->~CddsWaitset (), ws); RMW_TRY_DESTRUCTOR_FROM_WITHIN_FAILURE (ws->~CddsWaitset (), ws);
fail_placement_new: fail_placement_new:
@ -894,7 +896,7 @@ extern "C" rmw_ret_t rmw_wait (rmw_subscriptions_t *subs, rmw_guard_conditions_t
} }
ws->inuse = true; ws->inuse = true;
} }
if (require_reattach (ws->subs, subs ? subs->subscriber_count : 0, subs ? subs->subscribers : nullptr) || if (require_reattach (ws->subs, subs ? subs->subscriber_count : 0, subs ? subs->subscribers : nullptr) ||
require_reattach (ws->gcs, gcs ? gcs->guard_condition_count : 0, gcs ? gcs->guard_conditions : nullptr) || require_reattach (ws->gcs, gcs ? gcs->guard_condition_count : 0, gcs ? gcs->guard_conditions : nullptr) ||
require_reattach (ws->srvs, srvs ? srvs->service_count : 0, srvs ? srvs->services : nullptr) || require_reattach (ws->srvs, srvs ? srvs->service_count : 0, srvs ? srvs->services : nullptr) ||
@ -920,7 +922,7 @@ extern "C" rmw_ret_t rmw_wait (rmw_subscriptions_t *subs, rmw_guard_conditions_t
#undef ATTACH #undef ATTACH
ws->trigs.reserve (nelems + 1); ws->trigs.reserve (nelems + 1);
} }
const dds_duration_t timeout = const dds_duration_t timeout =
(wait_timeout == NULL) ? DDS_NEVER : (dds_duration_t) wait_timeout->sec * 1000000000 + wait_timeout->nsec; (wait_timeout == NULL) ? DDS_NEVER : (dds_duration_t) wait_timeout->sec * 1000000000 + wait_timeout->nsec;
const dds_return_t ntrig = dds_waitset_wait (ws->waitseth, ws->trigs.data (), ws->trigs.capacity (), timeout); const dds_return_t ntrig = dds_waitset_wait (ws->waitseth, ws->trigs.data (), ws->trigs.capacity (), timeout);
@ -953,12 +955,12 @@ extern "C" rmw_ret_t rmw_wait (rmw_subscriptions_t *subs, rmw_guard_conditions_t
DETACH (CddsClient, cls, client, client.sub->rdcondh, (void) x); DETACH (CddsClient, cls, client, client.sub->rdcondh, (void) x);
#undef DETACH #undef DETACH
} }
{ {
std::lock_guard<std::mutex> lock (ws->lock); std::lock_guard<std::mutex> lock (ws->lock);
ws->inuse = false; ws->inuse = false;
} }
return (ws->trigs.size () == 0) ? RMW_RET_TIMEOUT : RMW_RET_OK; return (ws->trigs.size () == 0) ? RMW_RET_TIMEOUT : RMW_RET_OK;
} }
@ -992,14 +994,14 @@ static rmw_ret_t rmw_take_response_request (CddsCS *cs, rmw_request_id_t *reques
*taken = false; *taken = false;
return RMW_RET_OK; return RMW_RET_OK;
} }
extern "C" 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);
} }
extern "C" 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);
@ -1057,7 +1059,7 @@ static const rosidl_service_type_support_t *get_service_typesupport (const rosid
return nullptr; return nullptr;
} }
} }
static rmw_ret_t rmw_init_cs (CddsCS *cs, const rmw_node_t *node, const rosidl_service_type_support_t *type_supports, const char *service_name, const rmw_qos_profile_t *qos_policies, bool is_service) static rmw_ret_t rmw_init_cs (CddsCS *cs, const rmw_node_t *node, const rosidl_service_type_support_t *type_supports, const char *service_name, const rmw_qos_profile_t *qos_policies, bool is_service)
{ {
RET_WRONG_IMPLID (node); RET_WRONG_IMPLID (node);
@ -1093,7 +1095,7 @@ static rmw_ret_t rmw_init_cs (CddsCS *cs, const rmw_node_t *node, const rosidl_s
auto pub_st = create_sertopic (pubtopic_name.c_str (), type_support->typesupport_identifier, pub_type_support, true); auto pub_st = create_sertopic (pubtopic_name.c_str (), type_support->typesupport_identifier, pub_type_support, true);
auto sub_st = create_sertopic (subtopic_name.c_str (), type_support->typesupport_identifier, sub_type_support, true); auto sub_st = create_sertopic (subtopic_name.c_str (), type_support->typesupport_identifier, sub_type_support, true);
dds_qos_t *qos; dds_qos_t *qos;
if ((pubtopic = dds_create_topic_arbitrary (gcdds.ppant, pub_st, pubtopic_name.c_str (), nullptr, nullptr, nullptr)) < 0) { if ((pubtopic = dds_create_topic_arbitrary (gcdds.ppant, pub_st, pubtopic_name.c_str (), nullptr, nullptr, nullptr)) < 0) {
RMW_SET_ERROR_MSG ("failed to create topic"); RMW_SET_ERROR_MSG ("failed to create topic");
@ -1226,7 +1228,7 @@ extern "C" rmw_ret_t rmw_destroy_service (rmw_node_t *node, rmw_service_t *servi
/////////// INTROSPECTION /////////// /////////// INTROSPECTION ///////////
/////////// /////////// /////////// ///////////
///////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////
extern "C" rmw_ret_t rmw_get_node_names (const rmw_node_t *node, rcutils_string_array_t *node_names, rcutils_string_array_t *node_namespaces) extern "C" rmw_ret_t rmw_get_node_names (const rmw_node_t *node, rcutils_string_array_t *node_names, rcutils_string_array_t *node_namespaces)
{ {
#if 0 // NIY #if 0 // NIY
@ -1605,7 +1607,7 @@ extern "C" rmw_ret_t rmw_service_server_is_available (const rmw_node_t * node, c
return RMW_RET_TIMEOUT; return RMW_RET_TIMEOUT;
#endif #endif
} }
extern "C" 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