Sauce-0.10.1: sauce::internal::NewBinding< Dependency, Scope, Constructor, Allocator > Class Template Reference

Sauce-0.10.1 A C++ Dependency Injection Framework

- Main Page
- Classes
- Files

- Class List
- Class Hierarchy
- Class Members

Classes | Public Types | Public Member Functions | Friends | List of all members
sauce::internal::NewBinding< Dependency, Scope, Constructor, Allocator > Class Template Reference
Inheritance diagram for sauce::internal::NewBinding< Dependency, Scope, Constructor, Allocator >:
[legend]
Collaboration diagram for sauce::internal::NewBinding< Dependency, Scope, Constructor, Allocator >:
[legend]

## Public Types
typedef ResolvedBinding < Dependency >::BindingPtr | BindingPtr
Public Types inherited from sauce::internal::Binding< Dependency, Scope >
typedef Key< Dependency > ::Normalized | Dependency
typedef Key< Dependency >::Ptr | IfacePtr
typedef ResolvedBinding < Dependency >::BindingPtr | BindingPtr
Public Types inherited from sauce::internal::ResolvedBinding< Dependency >
typedef Key< Dependency >::Ptr | IfacePtr
typedef sauce::shared_ptr < ResolvedBinding< Dependency > > | BindingPtr

## Public Member Functions
void | inject (IfacePtr &injected, BindingPtr binding, InjectorPtr injector) const
| Inject an Iface.
void | dispose (Iface *iface) const
Public Member Functions inherited from sauce::internal::Binding< Dependency, Scope >
std::string | getName () const
| The dynamic name of this binding.
void | setName (std::string const name)
| Set the dynamic name of this binding.
Public Member Functions inherited from sauce::internal::ResolvedBinding< Dependency >
NamedTypeId | getKey () const
| The TypeId of the Dependency template parameter.
virtual void | validateAcyclic (sauce::shared_ptr< Injector >, TypeIds &) const =0
| Establish that further dependencies do not introduce cycles with ones already accumulated.
virtual void | get (IfacePtr &, BindingPtr, sauce::shared_ptr< Injector >) const =0
| Get an Iface, using the given injector to provide dependencies.
Public Member Functions inherited from sauce::internal::OpaqueBinding
virtual bool | isModifier () const
| Does this binding modify an existing value?
virtual void | eagerlyInject (OpaqueBindingPtr, sauce::shared_ptr< Injector >) const =0
| Provide, but do not return the hidden interface.

## Friends
class | NewBindingFriend

## Additional Inherited Members
Protected Member Functions inherited from sauce::internal::InjectorFriend
template<typename Dependency >
void | validateAcyclicHelper (InjectorPtr injector, TypeIds &ids, std::string const name) const
template<typename Dependency >
void | injectHelper (typename Key< Dependency >::Ptr &injected, InjectorPtr injector, std::string const name) const
template<typename Dependency >
void | cache (InjectorPtr injector, typename Key< Dependency >::Ptr injected, i::TypeId scope) const
template<typename Dependency >
bool | probe (InjectorPtr injector, typename Key< Dependency >::Ptr &injected, i::TypeId scope) const

## Member Function Documentation

template<typename Dependency , typename Scope , typename Constructor , typename Allocator >

void sauce::internal::NewBinding< Dependency, Scope, Constructor, Allocator >::inject | ( | IfacePtr & | injected,
|  | BindingPtr | binding,
|  | InjectorPtr | injector
| ) |  | const
| inlinevirtual

Inject an Iface.

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

Implements sauce::internal::Binding< Dependency, Scope >.

{
typename InjectParameters::Passed passed(*this, injector);
Deleter deleter(sauce::static_pointer_cast<NewBinding_>(binding));
ImplPtr impl(applyConstructor<InjectParameters, Constructor, Allocator>(passed), deleter);
SelfInjector<Impl> selfInjector;
selfInjector.setSelf(impl);
typedef Named<Impl, typename i::Key<Dependency>::Name> NormalizedImpl;
this->template injectHelper<NormalizedImpl>(impl, injector, this->getName());
injected = sauce::static_pointer_cast<Iface>(impl);
}

Here is the call graph for this function:

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

- sauce/internal/new_binding.h