mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-14 12:10:34 +00:00
Add copy constructor, move constructor and move assignment operator. Fix memory leak
This commit is contained in:
parent
5d679a3eef
commit
755dd7901f
@ -48,7 +48,6 @@ public:
|
|||||||
// Verify that the version of the library that we linked against is
|
// Verify that the version of the library that we linked against is
|
||||||
// compatible with the version of the headers we compiled against.
|
// compatible with the version of the headers we compiled against.
|
||||||
GOOGLE_PROTOBUF_VERIFY_VERSION;
|
GOOGLE_PROTOBUF_VERIFY_VERSION;
|
||||||
monitor_.New();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
~Serdes_Monitor_Pvt()
|
~Serdes_Monitor_Pvt()
|
||||||
@ -56,6 +55,36 @@ public:
|
|||||||
// google::protobuf::ShutdownProtobufLibrary();
|
// google::protobuf::ShutdownProtobufLibrary();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline Serdes_Monitor_Pvt(Serdes_Monitor_Pvt&& other) //!< Copy constructor
|
||||||
|
{
|
||||||
|
this->monitor_ = other.monitor_;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Serdes_Monitor_Pvt& operator=(const Serdes_Monitor_Pvt& rhs) //!< Copy assignment operator
|
||||||
|
{
|
||||||
|
// Only do assignment if RHS is a different object from this.
|
||||||
|
if (this != &rhs)
|
||||||
|
{
|
||||||
|
// Deallocate, allocate new space, copy values...
|
||||||
|
this->monitor_ = rhs.monitor_;
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Serdes_Monitor_Pvt(const Serdes_Monitor_Pvt& other) //!< Move constructor
|
||||||
|
{
|
||||||
|
this->monitor_ = std::move(other.monitor_);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Serdes_Monitor_Pvt& operator=(Serdes_Monitor_Pvt&& other) //!< Move assignment operator
|
||||||
|
{
|
||||||
|
if (this != &other)
|
||||||
|
{
|
||||||
|
this->monitor_ = std::move(other.monitor_);
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
inline std::string createProtobuffer(const Monitor_Pvt& monitor) //!< Serialization into a string
|
inline std::string createProtobuffer(const Monitor_Pvt& monitor) //!< Serialization into a string
|
||||||
{
|
{
|
||||||
monitor_.Clear();
|
monitor_.Clear();
|
||||||
@ -91,6 +120,8 @@ public:
|
|||||||
monitor_.set_hdop(monitor.hdop);
|
monitor_.set_hdop(monitor.hdop);
|
||||||
monitor_.set_vdop(monitor.vdop);
|
monitor_.set_vdop(monitor.vdop);
|
||||||
|
|
||||||
|
monitor_.CheckInitialized();
|
||||||
|
|
||||||
monitor_.SerializeToString(&data);
|
monitor_.SerializeToString(&data);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,6 @@ public:
|
|||||||
// Verify that the version of the library that we linked against is
|
// Verify that the version of the library that we linked against is
|
||||||
// compatible with the version of the headers we compiled against.
|
// compatible with the version of the headers we compiled against.
|
||||||
GOOGLE_PROTOBUF_VERIFY_VERSION;
|
GOOGLE_PROTOBUF_VERIFY_VERSION;
|
||||||
observables.New();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
~Serdes_Gnss_Synchro()
|
~Serdes_Gnss_Synchro()
|
||||||
@ -58,6 +57,36 @@ public:
|
|||||||
google::protobuf::ShutdownProtobufLibrary();
|
google::protobuf::ShutdownProtobufLibrary();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline Serdes_Gnss_Synchro(Serdes_Gnss_Synchro&& other) //!< Copy constructor
|
||||||
|
{
|
||||||
|
this->observables = other.observables;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Serdes_Gnss_Synchro& operator=(const Serdes_Gnss_Synchro& rhs) //!< Copy assignment operator
|
||||||
|
{
|
||||||
|
// Only do assignment if RHS is a different object from this.
|
||||||
|
if (this != &rhs)
|
||||||
|
{
|
||||||
|
// Deallocate, allocate new space, copy values...
|
||||||
|
this->observables = rhs.observables;
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Serdes_Gnss_Synchro(const Serdes_Gnss_Synchro& other) //!< Move constructor
|
||||||
|
{
|
||||||
|
this->observables = std::move(other.observables);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Serdes_Gnss_Synchro& operator=(Serdes_Gnss_Synchro&& other) //!< Move assignment operator
|
||||||
|
{
|
||||||
|
if (this != &other)
|
||||||
|
{
|
||||||
|
this->observables = std::move(other.observables);
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
inline std::string createProtobuffer(const std::vector<Gnss_Synchro>& vgs) //!< Serialization into a string
|
inline std::string createProtobuffer(const std::vector<Gnss_Synchro>& vgs) //!< Serialization into a string
|
||||||
{
|
{
|
||||||
observables.Clear();
|
observables.Clear();
|
||||||
@ -101,6 +130,8 @@ public:
|
|||||||
obs->set_rx_time(gs.RX_time);
|
obs->set_rx_time(gs.RX_time);
|
||||||
obs->set_flag_valid_pseudorange(gs.Flag_valid_pseudorange);
|
obs->set_flag_valid_pseudorange(gs.Flag_valid_pseudorange);
|
||||||
obs->set_interp_tow_ms(gs.interp_TOW_ms);
|
obs->set_interp_tow_ms(gs.interp_TOW_ms);
|
||||||
|
|
||||||
|
obs->CheckInitialized();
|
||||||
}
|
}
|
||||||
observables.SerializeToString(&data);
|
observables.SerializeToString(&data);
|
||||||
return data;
|
return data;
|
||||||
|
Loading…
Reference in New Issue
Block a user