From: Romain Forlot Date: Fri, 12 May 2017 12:46:19 +0000 (+0200) Subject: Use raw pointer to point on parent object. X-Git-Tag: 3.99.1~58 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=6f872acf6a3a6c3a7a1a1885e5e66bb7231660b2;p=apps%2Flow-level-can-service.git Use raw pointer to point on parent object. Shared pointer on value is a wrong way because once they is no more object refering to a parent then the pointer on it is destoyed. Not a big deal here but we better have to use raw pointer. Change-Id: I58deeb9e82c446ea135be87c11f405da54cc5bff Signed-off-by: Romain Forlot --- diff --git a/CAN-binder/low-can-binding/can/can-message-definition.cpp b/CAN-binder/low-can-binding/can/can-message-definition.cpp index 407ed41..04f9424 100644 --- a/CAN-binder/low-can-binding/can/can-message-definition.cpp +++ b/CAN-binder/low-can-binding/can/can-message-definition.cpp @@ -67,7 +67,7 @@ can_message_definition_t::can_message_definition_t( { for(auto& sig: can_signals_) { - sig->set_parent(std::make_shared(*this)); + sig->set_parent(this); } } @@ -97,7 +97,7 @@ std::vector >& can_message_definition_t::get_can_s return can_signals_; } -void can_message_definition_t::set_parent(std::shared_ptr parent) +void can_message_definition_t::set_parent(can_message_set_t* parent) { parent_= parent; } diff --git a/CAN-binder/low-can-binding/can/can-message-definition.hpp b/CAN-binder/low-can-binding/can/can-message-definition.hpp index 0e7e5ee..0c7d7c1 100644 --- a/CAN-binder/low-can-binding/can/can-message-definition.hpp +++ b/CAN-binder/low-can-binding/can/can-message-definition.hpp @@ -37,7 +37,7 @@ class can_message_set_t; class can_message_definition_t { private: - std::shared_ptr parent_; /*!< parent_ - Pointer to the CAN message set holding this CAN message definition */ + can_message_set_t* parent_; /*!< parent_ - Pointer to the CAN message set holding this CAN message definition */ std::string bus_; /*!< bus_ - Address of CAN bus device. */ uint32_t id_; /*!< id_ - The ID of the message.*/ can_message_format_t format_; /*!< format_ - the format of the message's ID.*/ @@ -62,6 +62,6 @@ public: uint32_t get_id() const; std::vector >& get_can_signals(); - void set_parent(std::shared_ptr parent); + void set_parent(can_message_set_t* parent); void set_last_value(const can_message_t& cm); }; diff --git a/CAN-binder/low-can-binding/can/can-message-set.cpp b/CAN-binder/low-can-binding/can/can-message-set.cpp index 46dc448..9216f3a 100644 --- a/CAN-binder/low-can-binding/can/can-message-set.cpp +++ b/CAN-binder/low-can-binding/can/can-message-set.cpp @@ -28,7 +28,7 @@ can_message_set_t::can_message_set_t( { for(auto& cmd : can_messages_definition_) { - cmd->set_parent(std::make_shared(*this)); + cmd->set_parent(this); } } diff --git a/CAN-binder/low-can-binding/can/can-signals.cpp b/CAN-binder/low-can-binding/can/can-signals.cpp index 04d328b..6a68214 100644 --- a/CAN-binder/low-can-binding/can/can-signals.cpp +++ b/CAN-binder/low-can-binding/can/can-signals.cpp @@ -89,7 +89,7 @@ utils::socketcan_bcm_t can_signal_t::get_socket() const return socket_; } -std::shared_ptr can_signal_t::get_message() const +can_message_definition_t* can_signal_t::get_message() const { return parent_; } @@ -195,7 +195,7 @@ float can_signal_t::get_last_value() const return last_value_; } -void can_signal_t::set_parent(std::shared_ptr parent) +void can_signal_t::set_parent(can_message_definition_t* parent) { parent_ = parent; } diff --git a/CAN-binder/low-can-binding/can/can-signals.hpp b/CAN-binder/low-can-binding/can/can-signals.hpp index 62fbbe7..79f56db 100644 --- a/CAN-binder/low-can-binding/can/can-signals.hpp +++ b/CAN-binder/low-can-binding/can/can-signals.hpp @@ -75,7 +75,7 @@ typedef uint64_t (*SignalEncoder)(can_signal_t* signal, class can_signal_t { private: - std::shared_ptr parent_; /*!< parent_ - pointer to the parent message definition holding this signal*/ + can_message_definition_t* parent_; /*!< parent_ - pointer to the parent message definition holding this signal*/ utils::socketcan_bcm_t socket_; /*!< socket_ - Specific BCM socket that filter the signal read from CAN device */ std::string generic_name_; /*!< generic_name_ - The name of the signal to be output.*/ static std::string prefix_; /*!< prefix_ - generic_name_ will be prefixed with it. It has to reflect the used protocol. @@ -129,7 +129,7 @@ public: bool received); utils::socketcan_bcm_t get_socket() const; - std::shared_ptr get_message() const; + can_message_definition_t* get_message() const; const std::string& get_generic_name() const; const std::string get_name() const; const std::string& get_prefix() const; @@ -151,7 +151,7 @@ public: bool get_received() const; float get_last_value() const; - void set_parent(std::shared_ptr parent); + void set_parent(can_message_definition_t* parent); void set_prefix(std::string val); void set_received(bool r); void set_last_value(float val);