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 >:

## 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. More...
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. More...
virtual void | get (IfacePtr &, BindingPtr, sauce::shared_ptr< Injector >) const =0
| Get an Iface, using the given injector to provide dependencies. More...
Public Member Functions inherited from sauce::internal::OpaqueBinding
virtual bool | isModifier () const
| Does this binding modify an existing value? More...
virtual void | eagerlyInject (OpaqueBindingPtr, sauce::shared_ptr< Injector >) const =0
| Provide, but do not return the hidden interface. More...

## 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
| inline virtual

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 >.

123 {
124 typename InjectParameters::Passed passed(*this, injector);
125 Deleter deleter(sauce::static_pointer_cast<NewBinding_>(binding));
126 ImplPtr impl(applyConstructor<InjectParameters, Constructor, Allocator>(passed), deleter);
127 SelfInjector<Impl> selfInjector;
128 selfInjector.setSelf(impl);
129 typedef Named<Impl, typename i::Key<Dependency>::Name> NormalizedImpl;
130 this->template injectHelper<NormalizedImpl>(impl, injector, this->getName());
131 injected = sauce::static_pointer_cast<Iface>(impl);
132 }
sauce::internal::Binding< Dependency, Scope >::getName
std::string getName() const
The dynamic name of this binding.
Definition: binding.h:103

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

- sauce/internal/new_binding.h