From 70b21e90d7be4d892b7d17440d64630e7ee1a575 Mon Sep 17 00:00:00 2001 From: HampusM Date: Thu, 3 Mar 2022 19:17:48 +0100 Subject: refactor: improve factories --- src/DI/container.hpp | 2 +- src/DI/function_wrapper.hpp | 2 +- src/DI/function_wrapper.tpp | 5 +++++ src/DI/type_traits.hpp | 4 ++-- src/interfaces/bounds.hpp | 4 +--- src/interfaces/matrix.hpp | 4 +--- src/interfaces/randomization.hpp | 5 ++--- src/interfaces/vector2.hpp | 4 +--- 8 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/DI/container.hpp b/src/DI/container.hpp index 2dd194f..93722b6 100644 --- a/src/DI/container.hpp +++ b/src/DI/container.hpp @@ -34,7 +34,7 @@ public: template BindingBuilder bind(); - template >> + template >> std::shared_ptr get() const; template >> diff --git a/src/DI/function_wrapper.hpp b/src/DI/function_wrapper.hpp index e4b6779..716668c 100644 --- a/src/DI/function_wrapper.hpp +++ b/src/DI/function_wrapper.hpp @@ -9,7 +9,7 @@ template class FunctionWrapper : public IWrapper { public: - explicit FunctionWrapper(Interface func) : _func(func) {} + explicit FunctionWrapper(Interface func) noexcept; [[nodiscard]] Interface get() const; diff --git a/src/DI/function_wrapper.tpp b/src/DI/function_wrapper.tpp index 4e09957..920c7f2 100644 --- a/src/DI/function_wrapper.tpp +++ b/src/DI/function_wrapper.tpp @@ -2,6 +2,11 @@ #include "function_wrapper.hpp" +template +FunctionWrapper::FunctionWrapper(Interface func) noexcept : _func(func) +{ +} + template Interface FunctionWrapper::get() const { diff --git a/src/DI/type_traits.hpp b/src/DI/type_traits.hpp index a852a4f..e4b6640 100644 --- a/src/DI/type_traits.hpp +++ b/src/DI/type_traits.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include template struct is_func : public std::false_type // NOLINT(readability-identifier-naming) @@ -8,7 +8,7 @@ struct is_func : public std::false_type // NOLINT(readability-identifier-naming) }; template -struct is_func> : public std::true_type +struct is_func : public std::true_type { }; diff --git a/src/interfaces/bounds.hpp b/src/interfaces/bounds.hpp index 7e920cf..b431874 100644 --- a/src/interfaces/bounds.hpp +++ b/src/interfaces/bounds.hpp @@ -2,7 +2,6 @@ #include "interfaces/vector2.hpp" -#include #include enum CoordsValidation @@ -39,5 +38,4 @@ struct IBoundsOptions unsigned int height; }; -using IBoundsFactory = - std::function(const IBoundsOptions &options)>; +using IBoundsFactory = std::shared_ptr (*)(const IBoundsOptions &options); diff --git a/src/interfaces/matrix.hpp b/src/interfaces/matrix.hpp index ab5f40b..72d18d9 100644 --- a/src/interfaces/matrix.hpp +++ b/src/interfaces/matrix.hpp @@ -3,7 +3,6 @@ #include "interfaces/bounds.hpp" #include "interfaces/vector2.hpp" -#include #include template @@ -46,5 +45,4 @@ public: }; template -using IMatrixFactory = - std::function>(const IBounds &bounds)>; +using IMatrixFactory = std::shared_ptr> (*)(const IBounds &bounds); diff --git a/src/interfaces/randomization.hpp b/src/interfaces/randomization.hpp index 9eeec0a..12f6486 100644 --- a/src/interfaces/randomization.hpp +++ b/src/interfaces/randomization.hpp @@ -1,6 +1,5 @@ #pragma once -#include #include class ISeedGenerator @@ -11,7 +10,7 @@ public: [[nodiscard]] virtual unsigned int random_seed() const = 0; }; -using ISeedGeneratorFactory = std::function()>; +using ISeedGeneratorFactory = std::shared_ptr (*)(); /** * Pseudo-random unsigned integer generator. @@ -32,4 +31,4 @@ public: }; using IRandomNumberGeneratorFactory = - std::function(const unsigned int &seed)>; + std::shared_ptr (*)(const unsigned int &seed); diff --git a/src/interfaces/vector2.hpp b/src/interfaces/vector2.hpp index 569dc30..dfd369f 100644 --- a/src/interfaces/vector2.hpp +++ b/src/interfaces/vector2.hpp @@ -1,6 +1,5 @@ #pragma once -#include #include class IVector2 @@ -42,5 +41,4 @@ struct IVector2Options unsigned int y; }; -using IVector2Factory = - std::function(const IVector2Options &options)>; +using IVector2Factory = std::shared_ptr (*)(const IVector2Options &options); -- cgit v1.2.3-18-g5258