1 #ifndef SAUCE_INTERNAL_SCOPE_CACHE_H_
2 #define SAUCE_INTERNAL_SCOPE_CACHE_H_
4 #include <sauce/internal/key.h>
5 #include <sauce/internal/type_id.h>
10 template<
typename Dependency>
14 void operator()(
void * smartPtrPtr)
const {
15 delete static_cast<SmartPtr *
>(smartPtrPtr);
20 typedef sauce::shared_ptr<void> CachedPtr;
21 typedef std::map<TypeId, CachedPtr> Cache;
33 template<
typename Dependency>
36 typedef typename Key<Normalized>::Ptr SmartPtr;
53 static_cast<void *>(
new SmartPtr(pointer)),
56 cache.insert(std::make_pair(typeIdOf<Normalized>(), cachedPtr));
65 template<
typename Dependency>
68 typedef typename Key<Normalized>::Ptr SmartPtr;
70 Cache::const_iterator cachedPtr = cache.find(typeIdOf<Normalized>());
71 if (cachedPtr == cache.end()) {
75 out = *
static_cast<SmartPtr *
>(cachedPtr->second.get());
82 namespace i = ::sauce::internal;
86 #endif // SAUCE_INTERNAL_SCOPE_CACHE_H_
Definition: scope_cache.h:11
Definition: scope_cache.h:19
void put(typename Key< Dependency >::Ptr pointer)
Insert a dependency into the cache.
Definition: scope_cache.h:34
A complete specification of a dependency request.
Definition: key.h:15