di namespace
Dependency injection framework.
The di namespace provides a lightweight DI container:
- Service registration and resolution
- Lifetime management
- Type-safe service access
- Configuration injection
- Testing support with mock services
Namespaces
- namespace testing
Classes
- class ServiceContainer
- class ServiceContainerException
Enums
- enum class ServiceLifetime { Transient, Singleton, Scoped }
Typedefs
-
template<typename T>using ServiceFactory = std::function<std::shared_ptr<T>()>
- using injector_config = di::config
-
template<typename T>using shared = std::shared_ptr<T>
-
template<typename T>using unique = std::unique_ptr<T>
Functions
- auto get_service_container() -> ServiceContainer&
- auto operator<<(std::ostream& os, ServiceLifetime lifetime) -> std::ostream&
-
template<typename T, typename... Args>auto make_factory() -> auto
-
template<typename Interface, typename Implementation>auto bind_interface() -> auto
-
template<typename Interface, typename Implementation>auto bind_singleton() -> auto
-
template<typename T>auto bind_instance(std::shared_ptr<T> instance) -> auto
-
template<typename... Bindings>auto make_injector(Bindings && ... bindings) -> auto
Variables
- auto singleton constexpr
- auto unique_scope constexpr
Enum documentation
enum class liarsdice:: di:: ServiceLifetime
#include <liarsdice/di/service_container.hpp>
Typedef documentation
#include <liarsdice/di/service_container.hpp>
template<typename T>
using liarsdice:: di:: ServiceFactory = std::function<std::shared_ptr<T>()>
using liarsdice:: di:: injector_config = di::config
#include <liarsdice/di/container.hpp>
#include <liarsdice/di/container.hpp>
template<typename T>
using liarsdice:: di:: shared = std::shared_ptr<T>
#include <liarsdice/di/container.hpp>
template<typename T>
using liarsdice:: di:: unique = std::unique_ptr<T>
Function documentation
ServiceContainer& liarsdice:: di:: get_service_container()
#include <liarsdice/di/service_container.hpp>
std::ostream& liarsdice:: di:: operator<<(std::ostream& os,
ServiceLifetime lifetime)
#include <liarsdice/di/service_container.hpp>
#include <liarsdice/di/container.hpp>
template<typename T, typename... Args>
auto liarsdice:: di:: make_factory()
#include <liarsdice/di/container.hpp>
template<typename Interface, typename Implementation>
auto liarsdice:: di:: bind_interface()
#include <liarsdice/di/container.hpp>
template<typename Interface, typename Implementation>
auto liarsdice:: di:: bind_singleton()
#include <liarsdice/di/container.hpp>
template<typename T>
auto liarsdice:: di:: bind_instance(std::shared_ptr<T> instance)
#include <liarsdice/di/container.hpp>
template<typename... Bindings>
auto liarsdice:: di:: make_injector(Bindings && ... bindings)
Variable documentation
auto liarsdice:: di:: singleton constexpr
#include <liarsdice/di/container.hpp>
auto liarsdice:: di:: unique_scope constexpr
#include <liarsdice/di/container.hpp>