Minimal Dependency Injection Framework for C++
Single file library for implementing the dependency injection pattern
dip Namespace Reference

Dependency injection pattern. More...

Classes

struct  Injector
 Custom injector. More...
 
struct  instance
 Injected instance of a service. More...
 
struct  instance_set
 Set of injected instances of a service. More...
 

Functions

template<class Service >
void inject (const Injector< Service > &injector)
 Inject a service provider using a custom injector. More...
 
template<class Service , class Provider , typename... _Args>
void inject_transient (_Args &&...args)
 Inject a transient instance to a Service. More...
 
template<class Service , class Provider , typename... _Args>
void inject_singleton (_Args &&...args)
 Inject a singleton instance to a Service. More...
 
template<class Service , class Provider , typename... _Args>
void inject_thread_singleton (_Args &&...args)
 Inject a per-thread singleton instance to a Service. More...
 
template<class Service >
void add (const Injector< Service > &injector)
 Inject a service provider using a custom injector. More...
 
template<class Service , class Provider , typename... _Args>
void add_transient (_Args &&...args)
 Inject a transient instance to a Service. More...
 
template<class Service , class Provider , typename... _Args>
void add_singleton (_Args &&...args)
 Inject a singleton instance to a Service. More...
 
template<class Service , class Provider , typename... _Args>
void add_thread_singleton (_Args &&...args)
 Inject a per-thread singleton instance to a Service. More...
 

Detailed Description

Dependency injection pattern.

Function Documentation

◆ add()

template<class Service >
void dip::add ( const Injector< Service > &  injector)
inline

Inject a service provider using a custom injector.

Note
To be consumed using dip::instance_set<Service>
Template Parameters
ServiceInjectable service
Parameters
injectorService injector

◆ add_singleton()

template<class Service , class Provider , typename... _Args>
void dip::add_singleton ( _Args &&...  args)
inline

Inject a singleton instance to a Service.

Note
To be consumed using dip::instance_set<Service>
Template Parameters
ServiceInjectable service
ProviderService provider
_ArgsConstructor argument types
Parameters
argsConstructor arguments

◆ add_thread_singleton()

template<class Service , class Provider , typename... _Args>
void dip::add_thread_singleton ( _Args &&...  args)
inline

Inject a per-thread singleton instance to a Service.

Note
To be consumed using dip::instance_set<Service>
Template Parameters
ServiceInjectable service
ProviderService provider
_ArgsConstructor argument types
Parameters
argsConstructor arguments

◆ add_transient()

template<class Service , class Provider , typename... _Args>
void dip::add_transient ( _Args &&...  args)
inline

Inject a transient instance to a Service.

Note
To be consumed using dip::instance_set<Service>
Template Parameters
ServiceInjectable service
ProviderService provider
_ArgsConstructor argument types
Parameters
argsConstructor arguments

◆ inject()

template<class Service >
void dip::inject ( const Injector< Service > &  injector)
inline

Inject a service provider using a custom injector.

Note
To be consumed using dip::instance<Service>
Template Parameters
ServiceInjectable service
Parameters
injectorService injector

◆ inject_singleton()

template<class Service , class Provider , typename... _Args>
void dip::inject_singleton ( _Args &&...  args)
inline

Inject a singleton instance to a Service.

Note
To be consumed using dip::instance<Service>
Template Parameters
ServiceInjectable service
ProviderService provider
_ArgsConstructor argument types
Parameters
argsConstructor arguments

◆ inject_thread_singleton()

template<class Service , class Provider , typename... _Args>
void dip::inject_thread_singleton ( _Args &&...  args)
inline

Inject a per-thread singleton instance to a Service.

Template Parameters
ServiceInjectable service
ProviderService provider
_ArgsConstructor argument types
Parameters
argsConstructor arguments

◆ inject_transient()

template<class Service , class Provider , typename... _Args>
void dip::inject_transient ( _Args &&...  args)
inline

Inject a transient instance to a Service.

Note
To be consumed using dip::instance<Service>
Template Parameters
ServiceInjectable service
ProviderService provider
_ArgsConstructor argument types
Parameters
argsConstructor arguments