solinject  1.0.0
C++17 Dependency Injection header-only library
sol::di::impl::RegisteredServices Class Reference

Registered DI services collection. More...

#include <RegisteredServices.hpp>

Public Types

template<class T >
using Factory = typename IServiceTyped< T >::Factory
 Factory function that accepts a reference to a DI container and returns a pointer to an instance of a service. More...
 
template<class T >
using ServicePtr = typename IServiceTyped< T >::ServicePtr
 Pointer to an instance of a service. More...
 
using DIServicePtr = std::shared_ptr< IService >
 Pointer to a DI service instance.
 
using RegisteredServicesMap = std::map< std::type_index, std::vector< DIServicePtr > >
 Map of registered DI services.
 

Public Member Functions

 RegisteredServices ()
 Default constructor.
 
 RegisteredServices (RegisteredServicesMap services)
 Constructor. More...
 
 RegisteredServices (const RegisteredServices &other)
 Copy constructor.
 
 RegisteredServices (RegisteredServices &&other)
 Move constructor.
 
RegisteredServicesoperator= (RegisteredServices other)
 Copy-assignment operator.
 
RegisteredServicesoperator= (RegisteredServices &&other)
 Move-assignment operator.
 
void Merge (RegisteredServices other)
 Merges other RegisteredServices instance into this instance. More...
 
template<class T >
void RegisterSingletonService (Factory< T > factory)
 Registers a service with singleton lifetime. More...
 
template<class T >
void RegisterSingletonService (ServicePtr< T > instance)
 Registers a service with singleton lifetime. More...
 
template<class T >
void RegisterTransientService (Factory< T > factory)
 Registers a service with transient lifetime. More...
 
template<class T >
void RegisterSharedService (Factory< T > factory)
 Registers a service with shared lifetime. More...
 
void RegisterService (std::type_index type, DIServicePtr diService)
 Registers a service. More...
 
template<class T >
ServicePtr< T > GetRequiredService (const Container &container) const
 Resolves a required service. More...
 
template<class T >
ServicePtr< T > GetService (const Container &container) const
 Resolves an optional service. More...
 
template<class T >
std::vector< ServicePtr< T > > GetServices (const Container &container) const
 Resolves services. More...
 

Friends

void swap (RegisteredServices &a, RegisteredServices &b)
 Swaps two RegisteredServices instances.
 

Detailed Description

Registered DI services collection.

Member Typedef Documentation

◆ Factory

template<class T >
using sol::di::impl::RegisteredServices::Factory = typename IServiceTyped<T>::Factory

Factory function that accepts a reference to a DI container and returns a pointer to an instance of a service.

Template Parameters
Tservice type

◆ ServicePtr

Pointer to an instance of a service.

Template Parameters
Tservice type

Constructor & Destructor Documentation

◆ RegisteredServices()

sol::di::impl::RegisteredServices::RegisteredServices ( RegisteredServicesMap  services)
inline

Constructor.

Parameters
servicesmap of DI services

Member Function Documentation

◆ GetRequiredService()

template<class T >
ServicePtr<T> sol::di::impl::RegisteredServices::GetRequiredService ( const Container container) const
inline

Resolves a required service.

Template Parameters
Tservice type
Parameters
[in]containerDI container
Returns
Pointer to an instance of the service
Exceptions
sol::di::exc::ServiceNotRegisteredException

◆ GetService()

template<class T >
ServicePtr<T> sol::di::impl::RegisteredServices::GetService ( const Container container) const
inline

Resolves an optional service.

Template Parameters
Tservice type
Parameters
[in]containerDI container
Returns
Pointer to an instance of the service or nullptr if the service is not registered

◆ GetServices()

template<class T >
std::vector<ServicePtr<T> > sol::di::impl::RegisteredServices::GetServices ( const Container container) const
inline

Resolves services.

Template Parameters
Tthe service type
Parameters
[in]containerDI container
Returns
std::vector of pointers to service instances or empty vector if the service is not registered

◆ Merge()

void sol::di::impl::RegisteredServices::Merge ( RegisteredServices  other)
inline

Merges other RegisteredServices instance into this instance.

Parameters
otherother RegisteredServices instance

◆ RegisterService()

void sol::di::impl::RegisteredServices::RegisterService ( std::type_index  type,
DIServicePtr  diService 
)
inline

Registers a service.

Parameters
typeservice type
diServicepointer to a DI service instance
Warning
This method is intended for use by the ContainerBuilder class only

◆ RegisterSharedService()

template<class T >
void sol::di::impl::RegisteredServices::RegisterSharedService ( Factory< T >  factory)
inline

Registers a service with shared lifetime.

Parameters
factoryfactory function
Template Parameters
Tservice type

◆ RegisterSingletonService() [1/2]

template<class T >
void sol::di::impl::RegisteredServices::RegisterSingletonService ( Factory< T >  factory)
inline

Registers a service with singleton lifetime.

Parameters
factoryfactory function
Template Parameters
Tservice type

◆ RegisterSingletonService() [2/2]

template<class T >
void sol::di::impl::RegisteredServices::RegisterSingletonService ( ServicePtr< T >  instance)
inline

Registers a service with singleton lifetime.

Parameters
instancepointer to an instance of the service
Template Parameters
Tservice type

◆ RegisterTransientService()

template<class T >
void sol::di::impl::RegisteredServices::RegisterTransientService ( Factory< T >  factory)
inline

Registers a service with transient lifetime.

Parameters
factoryfactory function
Template Parameters
Tservice type

The documentation for this class was generated from the following file: