diff options
Diffstat (limited to 'src/DI/alloc_functor.hpp')
| -rw-r--r-- | src/DI/alloc_functor.hpp | 84 | 
1 files changed, 0 insertions, 84 deletions
| diff --git a/src/DI/alloc_functor.hpp b/src/DI/alloc_functor.hpp deleted file mode 100644 index ea40b22..0000000 --- a/src/DI/alloc_functor.hpp +++ /dev/null @@ -1,84 +0,0 @@ -#pragma once - -#include "DI/allocation.hpp" -#include "DI/compressed_pair.hpp" - -#include <memory> -#include <type_traits> -#include <utility> - -template <typename Return> -struct InvokeReturnWrapper -{ -	template <typename... Args> -	static auto call(Args &&...args) -> Return; -}; - -/** - * Holds a functor and a allocator. - */ -template <class Function, class Allocator, class FunctionSignature> -class AllocFunctor; - -template <class Function, class Allocator, class Return, class... Args> -class AllocFunctor<Function, Allocator, Return(Args...)> -{ -public: -	using Target = Function; -	using Alloc = Allocator; - -	explicit AllocFunctor(Target &&function); - -	explicit AllocFunctor(const Target &function, const Alloc &allocator); - -	explicit AllocFunctor(const Target &function, Alloc &&allocator); - -	explicit AllocFunctor(Target &&function, Alloc &&allocator); - -	auto operator()(Args &&...args) -> Return; - -	[[nodiscard]] auto target() const -> const Target &; - -	[[nodiscard]] auto get_allocator() const -> const Alloc &; - -	[[nodiscard]] auto clone() const -> AllocFunctor *; - -	void destroy() noexcept; - -	static void destroy_and_delete(AllocFunctor *functor); - -private: -	CompressedPair<Function, Allocator> _function; -}; - -/** - * Holds a functor and a allocator. - */ -template <class Function, class FB> -class DefaultAllocFunctor; - -template <class Function, class Return, class... Args> -class DefaultAllocFunctor<Function, Return(Args...)> -{ -public: -	using Target = Function; - -	explicit DefaultAllocFunctor(Target &&function); - -	explicit DefaultAllocFunctor(const Target &function); - -	auto operator()(Args &&...args) -> Return; - -	auto target() const -> const Target &; - -	auto clone() const -> DefaultAllocFunctor *; - -	void destroy() noexcept; - -	static void destroy_and_delete(DefaultAllocFunctor *function); - -private: -	Function _function; -}; - -#include "alloc_functor.tpp" | 
