mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-26 22:06:35 +01:00
25 lines
1.1 KiB
Text
25 lines
1.1 KiB
Text
|
A C++ dependency injection framework.
|
||
|
|
||
|
The design and name are inspired by Google's excellent Guice framework,
|
||
|
but neither Google nor Guice is otherwise affiliated in any way.
|
||
|
|
||
|
In Sauce, one defines bindings that map interface types to
|
||
|
implementation types. Each binding is declared in the context of a
|
||
|
module which is used to organize and refer to collections of bindings
|
||
|
at a time. Modules may be function pointers, or classes providing a
|
||
|
certain operator(). Groups of modules may be used together, to avoid
|
||
|
duplicate bindings.
|
||
|
|
||
|
At runtime, one collects desired modules into a modules object, which
|
||
|
produces injectors. One can then ask an injector to provide a value
|
||
|
(instance) of a desired type (again supplied as a template parameter.)
|
||
|
When providing a value, implicit transitive dependencies are provided
|
||
|
as well. All values are exchanged with shared pointers
|
||
|
((std|std::tr1|boost)::shared_ptrs are supported) and the injector
|
||
|
takes care of disposing the value when the smart pointer deletes
|
||
|
itself.
|
||
|
|
||
|
Requesting the injector for an unbound type results in a runtime
|
||
|
exception. No RTTI is used (but we use a portable, homebrew version
|
||
|
of same.)
|