aboutsummaryrefslogtreecommitdiff
path: root/src/DI/alloc_functor.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/DI/alloc_functor.hpp')
-rw-r--r--src/DI/alloc_functor.hpp84
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"