From da5f91a0ce15351a82beb061c3ccc965164529bc Mon Sep 17 00:00:00 2001 From: claiff Date: Thu, 6 Oct 2022 12:26:45 +0300 Subject: create settings on start --- src/message/builder/cc.cpp | 2 +- src/message/builder/cc.hpp | 10 ++-- src/message/builder/date.hpp | 4 +- src/message/builder/from.hpp | 4 +- src/message/builder/mail_to.cpp | 2 +- src/message/builder/mail_to.hpp | 10 ++-- src/message/builder/subject.hpp | 4 +- src/message/builder/text.hpp | 4 +- src/message/builder/types/idecorator.hpp | 82 -------------------------------- 9 files changed, 20 insertions(+), 102 deletions(-) delete mode 100644 src/message/builder/types/idecorator.hpp (limited to 'src/message/builder') diff --git a/src/message/builder/cc.cpp b/src/message/builder/cc.cpp index 3cf3276..b186167 100644 --- a/src/message/builder/cc.cpp +++ b/src/message/builder/cc.cpp @@ -2,7 +2,7 @@ namespace smtp::message::builder { - Cc::Cc( manage::MailsSet const& mail_to ) + Cc::Cc( general::MailsSet const& mail_to ) : mMailTo( mail_to ) { diff --git a/src/message/builder/cc.hpp b/src/message/builder/cc.hpp index 9eee0a7..e990310 100644 --- a/src/message/builder/cc.hpp +++ b/src/message/builder/cc.hpp @@ -1,21 +1,21 @@ #pragma once -#include "types/idecorator.hpp" +#include "general/idecorator.hpp" #include "types/imessage_builder.hpp" -#include "management/general.hpp" +#include "general/struct.hpp" namespace smtp::message::builder { - class Cc : public types::IDecorator + class Cc : public general::IDecorator { public: - explicit Cc( manage::MailsSet const& mail_to ); + explicit Cc( general::MailsSet const& mail_to ); ~Cc() override = default; std::string Get() const override; private: bool IsFirstElement( std::string const& cc ) const; - manage::MailsSet const& mMailTo; + general::MailsSet const& mMailTo; }; } diff --git a/src/message/builder/date.hpp b/src/message/builder/date.hpp index 31908ac..38e9bc2 100644 --- a/src/message/builder/date.hpp +++ b/src/message/builder/date.hpp @@ -1,11 +1,11 @@ #pragma once -#include "types/idecorator.hpp" +#include "general/idecorator.hpp" #include "types/imessage_builder.hpp" namespace smtp::message::builder { - class Date : public types::IDecorator + class Date : public general::IDecorator { public: Date() = default; diff --git a/src/message/builder/from.hpp b/src/message/builder/from.hpp index d1f0b21..8f67c46 100644 --- a/src/message/builder/from.hpp +++ b/src/message/builder/from.hpp @@ -1,11 +1,11 @@ #pragma once -#include "types/idecorator.hpp" +#include "general/idecorator.hpp" #include "types/imessage_builder.hpp" namespace smtp::message::builder { - class From : public types::IDecorator + class From : public general::IDecorator { public: explicit From( std::string const& mail_to ); diff --git a/src/message/builder/mail_to.cpp b/src/message/builder/mail_to.cpp index 3ef7e0e..342829c 100644 --- a/src/message/builder/mail_to.cpp +++ b/src/message/builder/mail_to.cpp @@ -2,7 +2,7 @@ namespace smtp::message::builder { - MailTo::MailTo( manage::MailsSet const& mails ) + MailTo::MailTo( general::MailsSet const& mails ) : mMailTo( mails ) { diff --git a/src/message/builder/mail_to.hpp b/src/message/builder/mail_to.hpp index 626f210..7d2fa32 100644 --- a/src/message/builder/mail_to.hpp +++ b/src/message/builder/mail_to.hpp @@ -1,21 +1,21 @@ #pragma once -#include "types/idecorator.hpp" +#include "general/idecorator.hpp" #include "types/imessage_builder.hpp" -#include "management/general.hpp" +#include "general/struct.hpp" namespace smtp::message::builder { - class MailTo : public types::IDecorator + class MailTo : public general::IDecorator { public: - explicit MailTo( manage::MailsSet const& mails ); + explicit MailTo( general::MailsSet const& mails ); ~MailTo() override = default; std::string Get() const override; private: std::string GetFirstMail() const; - manage::MailsSet const& mMailTo; + general::MailsSet const& mMailTo; }; } diff --git a/src/message/builder/subject.hpp b/src/message/builder/subject.hpp index 8153bc8..22e5b3b 100644 --- a/src/message/builder/subject.hpp +++ b/src/message/builder/subject.hpp @@ -1,11 +1,11 @@ #pragma once -#include "types/idecorator.hpp" +#include "general/idecorator.hpp" #include "types/imessage_builder.hpp" namespace smtp::message::builder { - class Subject : public types::IDecorator + class Subject : public general::IDecorator { public: explicit Subject( std::string const& subject ); diff --git a/src/message/builder/text.hpp b/src/message/builder/text.hpp index 9715656..8deb14a 100644 --- a/src/message/builder/text.hpp +++ b/src/message/builder/text.hpp @@ -1,11 +1,11 @@ #pragma once -#include "types/idecorator.hpp" +#include "general/idecorator.hpp" #include "types/imessage_builder.hpp" namespace smtp::message::builder { - class Text : public types::IDecorator + class Text : public general::IDecorator { public: explicit Text( std::string const& text ); diff --git a/src/message/builder/types/idecorator.hpp b/src/message/builder/types/idecorator.hpp deleted file mode 100644 index 19284ac..0000000 --- a/src/message/builder/types/idecorator.hpp +++ /dev/null @@ -1,82 +0,0 @@ -#pragma once - -#include - -namespace smtp::message::builder::types -{ - -/** - * @brief Базовый интерфейс описания декоратора - * @details См. https://refactoring.guru/ru/design-patterns/decorator - * @tparam T Тип декорируемого класса, T должен обладать возможностью наследования (в том числе виртуальный деструктор) - */ - template < typename T, typename TPointerType = std::shared_ptr > class IDecorator : public T - { - public: - using PointerType = TPointerType; - using Type = IDecorator; - - ~IDecorator() override = default; - - /** - * @brief Установить указатель на декорируемый класс - * @details По возможности используйте метод Apply() как наиболее универсальный - * @param base Указатель на декорируемый класс - */ - void SetBase( PointerType const& base ) noexcept - { - mBase = base; - } - - void SetBase( PointerType&& base ) noexcept - { - mBase = std::move( base ); - } - - /** - * @brief Установить указатель на декорируемый класс (цепочка обязанностей) - * @details См. https://refactoring.guru/ru/design-patterns/chain-of-responsibility/cpp/example - * @details Цепь вызовов: декоратор1 -> декоратор2 -> базовый класс - * @param base_or_decorator Указатель на декорируемый класс или целевой декоратор - */ - Type& Apply( PointerType const& base_or_decorator ) noexcept - { - if( !base_or_decorator ) - { - return *this; - } - - SetBase( base_or_decorator ); - return GetApplyResult(); - } - - Type& Apply( PointerType&& base_or_decorator ) noexcept - { - if( !base_or_decorator ) - { - return *this; - } - - SetBase( std::move( base_or_decorator ) ); - return GetApplyResult(); - } - - private: - Type& GetApplyResult() noexcept - { - auto as_decorator = dynamic_cast< Type * >( mBase.get() ); - if( as_decorator ) - { - return *as_decorator; - } - - return *this; - } - - protected: - PointerType mBase; - }; - - template < typename T, typename TDeleter = std::default_delete > using IDecoratorUnique = IDecorator >; - -} // namespace sbis::devices::generic::types -- cgit v1.2.3