aboutsummaryrefslogtreecommitdiff
path: root/week12/Exercise3/Pager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'week12/Exercise3/Pager.cpp')
-rw-r--r--week12/Exercise3/Pager.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/week12/Exercise3/Pager.cpp b/week12/Exercise3/Pager.cpp
new file mode 100644
index 0000000..18beb4b
--- /dev/null
+++ b/week12/Exercise3/Pager.cpp
@@ -0,0 +1,59 @@
+#include "Pager.h"
+#include <iostream>
+#include <cstring>
+#include <fstream>
+
+void Pager::free() {
+ delete[] fileName;
+}
+
+void Pager::copyFrom(const Pager& other) {
+ this->fileName = new char[strlen(other.fileName) + 1];
+ strcpy(this->fileName, other.fileName);
+}
+
+Pager::Pager() {
+ this->fileName = nullptr;
+}
+
+Pager::~Pager() {
+ free();
+}
+
+Pager::Pager(const Pager& other) {
+ copyFrom(other);
+}
+
+Pager& Pager::operator=(const Pager& other) {
+ if (this != &other) {
+ free();
+ copyFrom(other);
+ }
+ return *this;
+}
+
+Pager::Pager(Pager&& other) {
+ this->fileName = other.fileName;
+ other.fileName = nullptr;
+}
+
+Pager& Pager::operator=(Pager&& other) {
+ if (this != &other) {
+ free();
+
+ this->fileName = other.fileName;
+ other.fileName = nullptr;
+ }
+ return *this;
+}
+
+void Pager::Show() {
+ std::ofstream outFile(fileName);
+ if (!outFile.is_open()) {
+ throw "Coudldn't open file!";
+ }
+
+ outFile << textMessage << std::endl;
+
+ outFile.close();
+}