Sauce-0.10.1: sauce/internal/opaque_binding.h Source File

Sauce-0.10.1 A C++ Dependency Injection Framework

- Main Page
- Classes
- Files

- File List

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
33 class OpaqueBinding {
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_