aboutsummaryrefslogtreecommitdiff
path: root/week12/Exercise1/TextDocument.cpp
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2024-05-10 11:33:50 +0300
committerSyndamia <kamen@syndamia.com>2024-05-10 11:33:50 +0300
commit8dd9b39fa54a91030cdd5fe71973f78f7e8089e0 (patch)
tree1c08da5ccfb2ba78db7555ea79ff61a39a9b4c20 /week12/Exercise1/TextDocument.cpp
parent66a5cdf79a8324019d9d34055ad212ad52504e3c (diff)
downloadoop-2023-solutions-8dd9b39fa54a91030cdd5fe71973f78f7e8089e0.tar
oop-2023-solutions-8dd9b39fa54a91030cdd5fe71973f78f7e8089e0.tar.gz
oop-2023-solutions-8dd9b39fa54a91030cdd5fe71973f78f7e8089e0.zip
[w12] Solved exercises 1 and 3
Diffstat (limited to 'week12/Exercise1/TextDocument.cpp')
-rw-r--r--week12/Exercise1/TextDocument.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/week12/Exercise1/TextDocument.cpp b/week12/Exercise1/TextDocument.cpp
new file mode 100644
index 0000000..f5abf2c
--- /dev/null
+++ b/week12/Exercise1/TextDocument.cpp
@@ -0,0 +1,53 @@
+#include "TextDocument.h"
+#include <cstring>
+
+void TextDocument::free() {
+ delete[] text;
+}
+
+void TextDocument::copyFrom(const TextDocument& other) {
+ this->len = other.len;
+ this->text = new char[len + 1];
+ strcpy(this->text, other.text);
+}
+
+TextDocument::TextDocument() {
+ this->text = nullptr;
+}
+
+TextDocument::~TextDocument() {
+ free();
+}
+
+TextDocument::TextDocument(const TextDocument& other) {
+ copyFrom(other);
+}
+
+TextDocument& TextDocument::operator=(const TextDocument& other) {
+ if (this != &other) {
+ free();
+ copyFrom(other);
+ }
+ return *this;
+}
+
+TextDocument::TextDocument(TextDocument&& other) {
+ this->len = other.len;
+ this->text = other.text;
+ other.text = nullptr;
+}
+
+TextDocument& TextDocument::operator=(TextDocument&& other) {
+ if (this != &other) {
+ free();
+
+ this->len = other.len;
+ this->text = other.text;
+ other.text = nullptr;
+ }
+ return *this;
+}
+
+std::ostream& operator<<(std::ostream& ostr, const TextDocument& other) {
+ return ostr << other.text;
+}