Summary Files Commits Branches @commit @diff @stats
path: root / src / message.cpp
diff options
context:
space:
mode:
Commit61c4f3192d742be4c9a7a5f5e2bf84e42b9a6306 (patch)
Author
 Syndamia <kamen@syndamia.com>
2025-07-03 15:10:16 +0300
Committer
 Syndamia <kamen@syndamia.com>
2025-07-03 15:10:16 +0300
Filesd51120b6863f9d0d1669d95d66c2d547c8cd87bd /src/message.cpp
iso-tp-parser-carista-61c4f3192d742be4c9a7a5f5e2bf84e42b9a6306.tar
iso-tp-parser-carista-61c4f3192d742be4c9a7a5f5e2bf84e42b9a6306.tar.gz
iso-tp-parser-carista-61c4f3192d742be4c9a7a5f5e2bf84e42b9a6306.zip
Parentdb6384c470fe5660bf474aa49f46b00b893c4b3e (diff)
chore(message): Implement rule of 4 and move implementations from header to source
1 files changed, 31 insertions, 3 deletions
-rw-r--r--src/message.cpp34
diff --git a/src/message.cpp b/src/message.cpp
index af3168c..ee1d8fe 100644
--- a/src/message.cpp
+++ b/src/message.cpp
@@ -1,15 +1,43 @@
#include <cstring>
#include "message.h"
+/* Private */
+
+void Message::free() {
+ delete[] this->msg;
+}
+
+void Message::copyFrom(const Message& other) {
+ this->can_id = other.can_id;
+ this->size = other.size;
+ this->received = other.received;
+
+ this->msg = new unsigned char[this->size];
+ std::memcpy(this->msg, other.msg, this->size);
+}
+
+/* Public */
+
Message::Message(unsigned int can_id, const Frame& first_frame) : can_id(can_id), received(0) {
this->size = first_frame.get_size();
this->msg = new unsigned char[this->size];
this->receive_frame(first_frame);
}
-Message::Message(const Message& rhs) : can_id(rhs.can_id), size(rhs.size), received(rhs.received) {
- this->msg = new unsigned char[this->size];
- std::memcpy(this->msg, rhs.msg, this->size);
+Message::~Message() {
+ this->free();
+}
+
+Message::Message(const Message& other) {
+ this->copyFrom(other);
+}
+
+Message& Message::operator=(const Message& other) {
+ if (this != &other) {
+ this->free();
+ this->copyFrom(other);
+ }
+ return *this;
}
void Message::receive_frame(const Frame& f) {