From 40d02748924aa7c48b04cf948204d8dacdfbbc74 Mon Sep 17 00:00:00 2001 From: HampusM Date: Sat, 30 Apr 2022 16:28:13 +0200 Subject: refactor: replace DI files with the yacppdic library --- src/DI/container.tpp | 82 ---------------------------------------------------- 1 file changed, 82 deletions(-) delete mode 100644 src/DI/container.tpp (limited to 'src/DI/container.tpp') diff --git a/src/DI/container.tpp b/src/DI/container.tpp deleted file mode 100644 index d81a0cc..0000000 --- a/src/DI/container.tpp +++ /dev/null @@ -1,82 +0,0 @@ -#pragma once - -#include "container.hpp" - -#include "function_wrapper.hpp" -#include "object_wrapper.hpp" - -#include - -template -BindingBuilder::BindingBuilder(Container *container) noexcept - : _container(container) -{ -} - -template -template -requires Abstract && std::derived_from -void BindingBuilder::to() noexcept -{ - using Wrapper = ObjectWrapper; - - auto wrapper = Container::WrapperPtr(new Wrapper(*_container)); - - _container->add( - ObjectType(), - std::dynamic_pointer_cast(wrapper) - ); -} - -template -template -requires IsFactory && std::constructible_from -void BindingBuilder::to_factory(FactoryFunc factory) noexcept -{ - using Wrapper = FunctionWrapper; - - auto wrapper = Container::WrapperPtr(new Wrapper(factory)); - - _container->add( - ObjectType(), - std::dynamic_pointer_cast(wrapper) - ); -} - -template -auto Container::bind() noexcept -> BindingBuilder -{ - return BindingBuilder(this); -} - -template -requires Abstract -auto Container::get() const noexcept -> std::unique_ptr -{ - ObjectType interface_type; - - if (_bindings.count(interface_type) == 0) - { - std::cerr - << "Error: Tried to get a item from the container using unbound interface '" - << interface_type.name() << "'" << std::endl; - exit(EXIT_FAILURE); - } - - auto wrapper = std::dynamic_pointer_cast>>( - _bindings.at(interface_type) - ); - - return wrapper->get(); -} - -template -requires IsFactory -auto Container::get() const noexcept -> AFactory -{ - auto wrapper = - std::dynamic_pointer_cast>(_bindings.at(ObjectType()) - ); - - return wrapper->get(); -} -- cgit v1.2.3-18-g5258