Website Summary Files Commits Branches @commit @diff @stats
path: root / Utills / si_14.06 / task2 / ValueArray
diff options
context:
space:
mode:
2 files changed, 98 insertions, 0 deletions
-rw-r--r--Utills/si_14.06/task2/ValueArray/ValueArray.cpp72
-rw-r--r--Utills/si_14.06/task2/ValueArray/ValueArray.h26
diff --git a/Utills/si_14.06/task2/ValueArray/ValueArray.cpp b/Utills/si_14.06/task2/ValueArray/ValueArray.cpp
new file mode 100644
index 0000000..8e06a95
--- /dev/null
+++ b/Utills/si_14.06/task2/ValueArray/ValueArray.cpp
@@ -0,0 +1,72 @@
+#include <iostream>
+#include "ValueArray.h"
+#include "../Values/Date/Date.h"
+#include "../Values/Time/Time.h"
+#include "../Values/String/StringValue.h"
+#include "../Values/DateTime/DateTime.h"
+
+void ValueArray::print() const
+{
+ std::cout << "[";
+ for (int i = 0; i < arr.size(); i++)
+ {
+ std::cout << arr[i]->toString();
+
+ if (i != arr.size() - 1)
+ std::cout << ", ";
+
+ }
+ std::cout << "]";
+}
+
+
+void ValueArray::free()
+{
+ for (int i = 0; i < arr.size(); i++)
+ delete arr[i];
+ arr.clear();
+}
+
+void ValueArray::copyFrom(const ValueArray& other)
+{
+ arr.resize(other.arr.size());
+
+ for (int i = 0; i < arr.size(); i++)
+ arr[i] = other.arr[i]->clone();
+}
+
+void ValueArray::addDate(const std::string& name, unsigned day, unsigned month, unsigned year)
+{
+ arr.push_back(new Date(name, day, month, year));
+}
+void ValueArray::addTime(const std::string& name, unsigned hours, unsigned mins)
+{
+ arr.push_back(new Time(name, hours, mins));
+}
+void ValueArray::addString(const std::string& name, const std::string& value)
+{
+ arr.push_back(new StringValue(name,value));
+}
+void ValueArray::addDateTime(const std::string& name, unsigned day, unsigned month, unsigned year, unsigned hours, unsigned mins)
+{
+ arr.push_back(new DateTime(name, day, month, year, hours, mins));
+}
+
+ValueArray::ValueArray(const ValueArray& other)
+{
+ copyFrom(other);
+}
+ValueArray& ValueArray::operator= (const ValueArray& other)
+{
+ if (this != &other)
+ {
+ free();
+ copyFrom(other);
+ }
+ return *this;
+}
+
+ValueArray::~ValueArray()
+{
+ free();
+} \ No newline at end of file
diff --git a/Utills/si_14.06/task2/ValueArray/ValueArray.h b/Utills/si_14.06/task2/ValueArray/ValueArray.h
new file mode 100644
index 0000000..39bdcbc
--- /dev/null
+++ b/Utills/si_14.06/task2/ValueArray/ValueArray.h
@@ -0,0 +1,26 @@
+#pragma once
+
+#include <vector>
+#include "../Values/ValueBase/Value.h"
+
+class ValueArray
+{
+ std::vector<Value*> arr;
+
+ void copyFrom(const ValueArray& other);
+ void free();
+
+public:
+ void print() const;
+
+ ValueArray() = default;
+ ValueArray(const ValueArray& other);
+ ValueArray& operator=(const ValueArray& other);
+
+ //factory pattern ?
+ void addDate(const std::string& name, unsigned day, unsigned month, unsigned year);
+ void addTime(const std::string& name, unsigned hours, unsigned mins);
+ void addString(const std::string& name, const std::string& value);
+ void addDateTime(const std::string& name, unsigned day, unsigned month, unsigned year, unsigned hours, unsigned mins);
+ ~ValueArray();
+}; \ No newline at end of file