Sauce-0.10.1
A C++ Dependency Injection Framework
Public Types | Public Member Functions | Friends | List of all members
sauce::AbstractProvider< Dependency > Class Template Referenceabstract

An interface for including custom factories in an Injector. More...

#include <sauce/provider.h>

Inheritance diagram for sauce::AbstractProvider< Dependency >:
Inheritance graph
[legend]
Collaboration diagram for sauce::AbstractProvider< Dependency >:
Collaboration graph
[legend]

Public Types

typedef Abstract RequestsSelfInjection
 
- Public Types inherited from sauce::Provider< Dependency >
typedef i::Key< Dependency >::Iface Provides
 Indicates to template magic that this type exposes sauce::shared_ptr<Provides> get().
 

Public Member Functions

void setSelf (sauce::weak_ptr< Abstract > weak)
 
sauce::shared_ptr< Iface > get ()
 Provide an Iface. More...
 
virtual i::Key< Dependency >::Ptr get ()=0
 Provide an Iface. More...
 

Friends

class i::DisposalDeleter< Iface, Abstract >
 

Detailed Description

template<typename Dependency>
class sauce::AbstractProvider< Dependency >

An interface for including custom factories in an Injector.

Constructor & Destructor Documentation

◆ ~AbstractProvider()

template<typename Dependency >
virtual sauce::AbstractProvider< Dependency >::~AbstractProvider ( )
inlinevirtual
66{}

Member Function Documentation

◆ get()

template<typename Dependency >
sauce::shared_ptr< Iface > sauce::AbstractProvider< Dependency >::get ( )
inlinevirtual

Provide an Iface.

A naked instance pointer is obtained with provide(), and wrapped in a shared_ptr. It is also given a custom deleter, to dispose of the naked pointer with dispose(Iface *).

Implements sauce::Provider< Dependency >.

79 {
80 sauce::shared_ptr<Abstract> self = weak.lock();
81 assert(self.get() == this);
82 Deleter deleter(sauce::static_pointer_cast<Abstract>(self));
83 return sauce::shared_ptr<Iface>(provide(), deleter);
84 }

◆ setSelf()

template<typename Dependency >
void sauce::AbstractProvider< Dependency >::setSelf ( sauce::weak_ptr< Abstract weak)
inline
68 {
69 assert(weak.lock().get() == this);
70 this->weak = weak;
71 }

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