Sauce-0.10.1
A C++ Dependency Injection Framework
opaque_binding.h
1 #ifndef SAUCE_INTERNAL_OPAQUE_BINDING_H_
2 #define SAUCE_INTERNAL_OPAQUE_BINDING_H_
3 
4 #include <string>
5 #include <vector>
6 
7 #include <sauce/memory.h>
8 #include <sauce/internal/type_id.h>
9 
10 namespace sauce {
11 
12 class Injector;
13 
14 namespace internal {
15 
16 class OpaqueBinding;
17 
18 typedef sauce::shared_ptr<OpaqueBinding> OpaqueBindingPtr;
19 
34 public:
35 
36  virtual ~OpaqueBinding() {}
37 
41  virtual std::string getName() const = 0;
42 
46  virtual void setName(std::string) = 0;
47 
51  virtual NamedTypeId getKey() const = 0;
52 
58  virtual bool isModifier() const {
59  return false;
60  }
61 
65  virtual TypeId getScopeKey() const = 0;
66 
73  virtual void eagerlyInject(OpaqueBindingPtr, sauce::shared_ptr<Injector>) const = 0;
74 
78  virtual void setDynamicDependencyNames(std::vector<std::string> const &) = 0;
79 
80 };
81 
82 }
83 
84 namespace i = ::sauce::internal;
85 
86 }
87 
88 #endif // SAUCE_INTERNAL_OPAQUE_BINDING_H_
virtual TypeId getScopeKey() const =0
The TypeId of the (hidden) scope.
Definition: binder.h:317
virtual std::string getName() const =0
The dynamic name of this binding.
virtual void eagerlyInject(OpaqueBindingPtr, sauce::shared_ptr< Injector >) const =0
Provide, but do not return the hidden interface.
virtual NamedTypeId getKey() const =0
The NamedTypeId of the (hidden) provided interface.
An opaque binding.
Definition: opaque_binding.h:33
A TypeSignature equipped with specific helper methods dealing in the hidden type. ...
Definition: type_id.h:34
Definition: binder.h:21
virtual void setName(std::string)=0
Set the dynamic name of this binding.
virtual bool isModifier() const
Does this binding modify an existing value?
Definition: opaque_binding.h:58
virtual void setDynamicDependencyNames(std::vector< std::string > const &)=0
Accept the list of dynamic dependency names this binding was created with.