From b4e603d6018a0b43ad3ce9d3a1900ce784a2d07b Mon Sep 17 00:00:00 2001 From: angeld55 Date: Wed, 16 Jun 2021 16:56:02 +0300 Subject: utills --- Utills/si_14.06/task2/ValueArray/ValueArray.cpp | 72 +++++++++++++++++++++++++ Utills/si_14.06/task2/ValueArray/ValueArray.h | 26 +++++++++ 2 files changed, 98 insertions(+) create mode 100644 Utills/si_14.06/task2/ValueArray/ValueArray.cpp create mode 100644 Utills/si_14.06/task2/ValueArray/ValueArray.h (limited to 'Utills/si_14.06/task2/ValueArray') 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 +#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 +#include "../Values/ValueBase/Value.h" + +class ValueArray +{ + std::vector 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 -- cgit v1.3.1-23-gd82d