/src/gdal/port/cpl_mem_cache.h
Line | Count | Source |
1 | | /* |
2 | | * LRUCache11 - a templated C++11 based LRU cache class that allows |
3 | | * specification of |
4 | | * key, value and optionally the map container type (defaults to |
5 | | * std::unordered_map) |
6 | | * By using the std::map and a linked list of keys it allows O(1) insert, delete |
7 | | * and |
8 | | * refresh operations. |
9 | | * |
10 | | * This is a header-only library and all you need is the LRUCache11.hpp file |
11 | | * |
12 | | * Github: https://github.com/mohaps/lrucache11 |
13 | | * |
14 | | * This is a follow-up to the LRUCache project - |
15 | | * https://github.com/mohaps/lrucache |
16 | | * |
17 | | * Copyright (c) 2012-22 SAURAV MOHAPATRA <mohaps@gmail.com> |
18 | | * |
19 | | * Permission to use, copy, modify, and distribute this software for any |
20 | | * purpose with or without fee is hereby granted, provided that the above |
21 | | * copyright notice and this permission notice appear in all copies. |
22 | | * |
23 | | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
24 | | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
25 | | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
26 | | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
27 | | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
28 | | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
29 | | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
30 | | */ |
31 | | |
32 | | /*! @cond Doxygen_Suppress */ |
33 | | |
34 | | #pragma once |
35 | | #include <algorithm> |
36 | | #include <cstdint> |
37 | | #include <list> |
38 | | #include <mutex> |
39 | | #include <stdexcept> |
40 | | #include <unordered_map> |
41 | | |
42 | | namespace lru11 |
43 | | { |
44 | | /* |
45 | | * a noop lockable concept that can be used in place of std::mutex |
46 | | */ |
47 | | class NullLock |
48 | | { |
49 | | public: |
50 | | void lock() |
51 | 33.1k | { |
52 | 33.1k | } |
53 | | |
54 | | void unlock() |
55 | 33.1k | { |
56 | 33.1k | } |
57 | | |
58 | | bool try_lock() |
59 | 0 | { |
60 | 0 | return true; |
61 | 0 | } |
62 | | }; |
63 | | |
64 | | #if defined(__clang__) |
65 | | #pragma clang diagnostic push |
66 | | #pragma clang diagnostic ignored "-Wweak-vtables" |
67 | | #endif |
68 | | |
69 | | /** |
70 | | * error raised when a key not in cache is passed to get() |
71 | | */ |
72 | | class KeyNotFound : public std::invalid_argument |
73 | | { |
74 | | public: |
75 | | KeyNotFound() : std::invalid_argument("key_not_found") |
76 | 0 | { |
77 | 0 | } |
78 | | }; |
79 | | |
80 | | #if defined(__clang__) |
81 | | #pragma clang diagnostic pop |
82 | | #endif |
83 | | |
84 | | template <typename K, typename V> struct KeyValuePair |
85 | | { |
86 | | public: |
87 | | K key; |
88 | | V value; |
89 | | |
90 | 0 | KeyValuePair(const K &k, const V &v) : key(k), value(v) |
91 | 0 | { |
92 | 0 | } Unexecuted instantiation: lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry> >::KeyValuePair(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<OGRGML_SRSCacheEntry> const&) Unexecuted instantiation: lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >::KeyValuePair(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > const&) Unexecuted instantiation: lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >::KeyValuePair(GDALThreadSafeDataset const* const&, std::__1::shared_ptr<GDALDataset> const&) Unexecuted instantiation: lru11::KeyValuePair<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > > >::KeyValuePair(unsigned long const&, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > > const&) |
93 | | |
94 | 0 | KeyValuePair(const K &k, V &&v) : key(k), value(std::move(v)) |
95 | 0 | { |
96 | 0 | } Unexecuted instantiation: lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >::KeyValuePair(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> >&&) Unexecuted instantiation: lru11::KeyValuePair<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >::KeyValuePair(OSRProjTLSCache::EPSGCacheKey const&, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>&&) Unexecuted instantiation: lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >::KeyValuePair(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>&&) Unexecuted instantiation: lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >::KeyValuePair(unsigned long long const&, cpl::NonCopyableVector<unsigned char>&&) Unexecuted instantiation: lru11::KeyValuePair<int, std::__1::pair<unsigned long long, unsigned long long> >::KeyValuePair(int const&, std::__1::pair<unsigned long long, unsigned long long>&&) |
97 | | |
98 | | private: |
99 | | KeyValuePair(const KeyValuePair &) = delete; |
100 | | KeyValuePair &operator=(const KeyValuePair &) = delete; |
101 | | }; |
102 | | |
103 | | /** |
104 | | * The LRU Cache class templated by |
105 | | * Key - key type |
106 | | * Value - value type |
107 | | * MapType - an associative container like std::unordered_map |
108 | | * LockType - a lock type derived from the Lock class (default: |
109 | | *NullLock = no synchronization) |
110 | | * |
111 | | * The default NullLock based template is not thread-safe, however passing |
112 | | *Lock=std::mutex will make it |
113 | | * thread-safe |
114 | | */ |
115 | | template <class Key, class Value, class Lock = NullLock, |
116 | | class Map = std::unordered_map< |
117 | | Key, typename std::list<KeyValuePair<Key, Value>>::iterator>> |
118 | | class Cache final |
119 | | { |
120 | | public: |
121 | | typedef KeyValuePair<Key, Value> node_type; |
122 | | typedef std::list<KeyValuePair<Key, Value>> list_type; |
123 | | typedef Map map_type; |
124 | | typedef Lock lock_type; |
125 | | using Guard = std::lock_guard<lock_type>; |
126 | | |
127 | | /** |
128 | | * the max size is the hard limit of keys and (maxSize + elasticity) is the |
129 | | * soft limit |
130 | | * the cache is allowed to grow till maxSize + elasticity and is pruned back |
131 | | * to maxSize keys |
132 | | * set maxSize = 0 for an unbounded cache (but in that case, you're better |
133 | | * off using a std::unordered_map directly anyway! :) |
134 | | */ |
135 | | explicit Cache(size_t maxSize = 64, size_t elasticity = 10) |
136 | 2.43k | : maxSize_(maxSize), elasticity_(elasticity) |
137 | 2.43k | { |
138 | 2.43k | } lru11::Cache<unsigned long long, cpl::NonCopyableVector<unsigned char>, lru11::NullLock, std::__1::unordered_map<unsigned long long, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >, void*>, std::__1::hash<unsigned long long>, std::__1::equal_to<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >, void*> > > > >::Cache(unsigned long, unsigned long) Line | Count | Source | 136 | 2.42k | : maxSize_(maxSize), elasticity_(elasticity) | 137 | 2.42k | { | 138 | 2.42k | } |
Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*> > > > >::Cache(unsigned long, unsigned long) Unexecuted instantiation: lru11::Cache<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>, lru11::NullLock, std::__1::unordered_map<OSRProjTLSCache::EPSGCacheKey, std::__1::__list_iterator<lru11::KeyValuePair<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*>, OSRProjTLSCache::EPSGCacheKeyHasher, std::__1::equal_to<OSRProjTLSCache::EPSGCacheKey>, std::__1::allocator<std::__1::pair<OSRProjTLSCache::EPSGCacheKey const, std::__1::__list_iterator<lru11::KeyValuePair<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*> > > > >::Cache(unsigned long, unsigned long) Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*> > > > >::Cache(unsigned long, unsigned long) Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry>, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry> >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry> >, void*> > > > >::Cache(unsigned long, unsigned long) Unexecuted instantiation: lru11::Cache<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset>, lru11::NullLock, std::__1::unordered_map<GDALThreadSafeDataset const*, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*>, std::__1::hash<GDALThreadSafeDataset const*>, std::__1::equal_to<GDALThreadSafeDataset const*>, std::__1::allocator<std::__1::pair<GDALThreadSafeDataset const* const, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*> > > > >::Cache(unsigned long, unsigned long) Unexecuted instantiation: lru11::Cache<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > >, lru11::NullLock, std::__1::unordered_map<unsigned long, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > > >, void*>, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > > >, void*> > > > >::Cache(unsigned long, unsigned long) lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >, void*> > > > >::Cache(unsigned long, unsigned long) Line | Count | Source | 136 | 6 | : maxSize_(maxSize), elasticity_(elasticity) | 137 | 6 | { | 138 | 6 | } |
Unexecuted instantiation: lru11::Cache<int, std::__1::pair<unsigned long long, unsigned long long>, lru11::NullLock, std::__1::unordered_map<int, std::__1::__list_iterator<lru11::KeyValuePair<int, std::__1::pair<unsigned long long, unsigned long long> >, void*>, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::__list_iterator<lru11::KeyValuePair<int, std::__1::pair<unsigned long long, unsigned long long> >, void*> > > > >::Cache(unsigned long, unsigned long) |
139 | | |
140 | 2.42k | ~Cache() = default; lru11::Cache<unsigned long long, cpl::NonCopyableVector<unsigned char>, lru11::NullLock, std::__1::unordered_map<unsigned long long, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >, void*>, std::__1::hash<unsigned long long>, std::__1::equal_to<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >, void*> > > > >::~Cache() Line | Count | Source | 140 | 2.42k | ~Cache() = default; |
Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*> > > > >::~Cache() Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*> > > > >::~Cache() Unexecuted instantiation: lru11::Cache<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>, lru11::NullLock, std::__1::unordered_map<OSRProjTLSCache::EPSGCacheKey, std::__1::__list_iterator<lru11::KeyValuePair<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*>, OSRProjTLSCache::EPSGCacheKeyHasher, std::__1::equal_to<OSRProjTLSCache::EPSGCacheKey>, std::__1::allocator<std::__1::pair<OSRProjTLSCache::EPSGCacheKey const, std::__1::__list_iterator<lru11::KeyValuePair<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*> > > > >::~Cache() Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry>, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry> >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry> >, void*> > > > >::~Cache() Unexecuted instantiation: lru11::Cache<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > >, lru11::NullLock, std::__1::unordered_map<unsigned long, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > > >, void*>, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > > >, void*> > > > >::~Cache() Unexecuted instantiation: lru11::Cache<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset>, lru11::NullLock, std::__1::unordered_map<GDALThreadSafeDataset const*, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*>, std::__1::hash<GDALThreadSafeDataset const*>, std::__1::equal_to<GDALThreadSafeDataset const*>, std::__1::allocator<std::__1::pair<GDALThreadSafeDataset const* const, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*> > > > >::~Cache() Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >, void*> > > > >::~Cache() Unexecuted instantiation: lru11::Cache<int, std::__1::pair<unsigned long long, unsigned long long>, lru11::NullLock, std::__1::unordered_map<int, std::__1::__list_iterator<lru11::KeyValuePair<int, std::__1::pair<unsigned long long, unsigned long long> >, void*>, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::__list_iterator<lru11::KeyValuePair<int, std::__1::pair<unsigned long long, unsigned long long> >, void*> > > > >::~Cache() |
141 | | |
142 | | size_t size() const |
143 | | { |
144 | | Guard g(lock_); |
145 | | return cache_.size(); |
146 | | } |
147 | | |
148 | | bool empty() const |
149 | 0 | { |
150 | 0 | Guard g(lock_); |
151 | 0 | return cache_.empty(); |
152 | 0 | } Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*> > > > >::empty() const Unexecuted instantiation: lru11::Cache<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset>, lru11::NullLock, std::__1::unordered_map<GDALThreadSafeDataset const*, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*>, std::__1::hash<GDALThreadSafeDataset const*>, std::__1::equal_to<GDALThreadSafeDataset const*>, std::__1::allocator<std::__1::pair<GDALThreadSafeDataset const* const, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*> > > > >::empty() const |
153 | | |
154 | | void clear() |
155 | 4.84k | { |
156 | 4.84k | Guard g(lock_); |
157 | 4.84k | cache_.clear(); |
158 | 4.84k | keys_.clear(); |
159 | 4.84k | } lru11::Cache<unsigned long long, cpl::NonCopyableVector<unsigned char>, lru11::NullLock, std::__1::unordered_map<unsigned long long, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >, void*>, std::__1::hash<unsigned long long>, std::__1::equal_to<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >, void*> > > > >::clear() Line | Count | Source | 155 | 4.84k | { | 156 | 4.84k | Guard g(lock_); | 157 | 4.84k | cache_.clear(); | 158 | 4.84k | keys_.clear(); | 159 | 4.84k | } |
Unexecuted instantiation: lru11::Cache<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>, lru11::NullLock, std::__1::unordered_map<OSRProjTLSCache::EPSGCacheKey, std::__1::__list_iterator<lru11::KeyValuePair<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*>, OSRProjTLSCache::EPSGCacheKeyHasher, std::__1::equal_to<OSRProjTLSCache::EPSGCacheKey>, std::__1::allocator<std::__1::pair<OSRProjTLSCache::EPSGCacheKey const, std::__1::__list_iterator<lru11::KeyValuePair<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*> > > > >::clear() Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*> > > > >::clear() |
160 | | |
161 | | void insert(const Key &k, const Value &v) |
162 | 0 | { |
163 | 0 | Guard g(lock_); |
164 | 0 | const auto iter = cache_.find(k); |
165 | 0 | if (iter != cache_.end()) |
166 | 0 | { |
167 | 0 | iter->second->value = v; |
168 | 0 | keys_.splice(keys_.begin(), keys_, iter->second); |
169 | 0 | return; |
170 | 0 | } |
171 | | |
172 | 0 | keys_.emplace_front(k, v); |
173 | 0 | cache_[k] = keys_.begin(); |
174 | 0 | prune(); |
175 | 0 | } Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry>, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry> >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry> >, void*> > > > >::insert(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<OGRGML_SRSCacheEntry> const&) Unexecuted instantiation: lru11::Cache<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset>, lru11::NullLock, std::__1::unordered_map<GDALThreadSafeDataset const*, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*>, std::__1::hash<GDALThreadSafeDataset const*>, std::__1::equal_to<GDALThreadSafeDataset const*>, std::__1::allocator<std::__1::pair<GDALThreadSafeDataset const* const, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*> > > > >::insert(GDALThreadSafeDataset const* const&, std::__1::shared_ptr<GDALDataset> const&) Unexecuted instantiation: lru11::Cache<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > >, lru11::NullLock, std::__1::unordered_map<unsigned long, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > > >, void*>, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > > >, void*> > > > >::insert(unsigned long const&, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > > const&) Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >, void*> > > > >::insert(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > const&) |
176 | | |
177 | | Value &insert(const Key &k, Value &&v) |
178 | 0 | { |
179 | 0 | Guard g(lock_); |
180 | 0 | const auto iter = cache_.find(k); |
181 | 0 | if (iter != cache_.end()) |
182 | 0 | { |
183 | 0 | iter->second->value = std::move(v); |
184 | 0 | keys_.splice(keys_.begin(), keys_, iter->second); |
185 | 0 | return keys_.front().value; |
186 | 0 | } |
187 | | |
188 | 0 | keys_.emplace_front(k, std::move(v)); |
189 | 0 | cache_[k] = keys_.begin(); |
190 | 0 | prune(); |
191 | 0 | return keys_.front().value; |
192 | 0 | } Unexecuted instantiation: lru11::Cache<unsigned long long, cpl::NonCopyableVector<unsigned char>, lru11::NullLock, std::__1::unordered_map<unsigned long long, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >, void*>, std::__1::hash<unsigned long long>, std::__1::equal_to<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >, void*> > > > >::insert(unsigned long long const&, cpl::NonCopyableVector<unsigned char>&&) Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*> > > > >::insert(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> >&&) Unexecuted instantiation: lru11::Cache<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>, lru11::NullLock, std::__1::unordered_map<OSRProjTLSCache::EPSGCacheKey, std::__1::__list_iterator<lru11::KeyValuePair<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*>, OSRProjTLSCache::EPSGCacheKeyHasher, std::__1::equal_to<OSRProjTLSCache::EPSGCacheKey>, std::__1::allocator<std::__1::pair<OSRProjTLSCache::EPSGCacheKey const, std::__1::__list_iterator<lru11::KeyValuePair<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*> > > > >::insert(OSRProjTLSCache::EPSGCacheKey const&, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>&&) Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*> > > > >::insert(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>&&) Unexecuted instantiation: lru11::Cache<int, std::__1::pair<unsigned long long, unsigned long long>, lru11::NullLock, std::__1::unordered_map<int, std::__1::__list_iterator<lru11::KeyValuePair<int, std::__1::pair<unsigned long long, unsigned long long> >, void*>, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::__list_iterator<lru11::KeyValuePair<int, std::__1::pair<unsigned long long, unsigned long long> >, void*> > > > >::insert(int const&, std::__1::pair<unsigned long long, unsigned long long>&&) |
193 | | |
194 | | bool tryGet(const Key &kIn, Value &vOut) |
195 | 0 | { |
196 | 0 | Guard g(lock_); |
197 | 0 | const auto iter = cache_.find(kIn); |
198 | 0 | if (iter == cache_.end()) |
199 | 0 | { |
200 | 0 | return false; |
201 | 0 | } |
202 | 0 | keys_.splice(keys_.begin(), keys_, iter->second); |
203 | 0 | vOut = iter->second->value; |
204 | 0 | return true; |
205 | 0 | } Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry>, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry> >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry> >, void*> > > > >::tryGet(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<OGRGML_SRSCacheEntry>&) Unexecuted instantiation: lru11::Cache<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset>, lru11::NullLock, std::__1::unordered_map<GDALThreadSafeDataset const*, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*>, std::__1::hash<GDALThreadSafeDataset const*>, std::__1::equal_to<GDALThreadSafeDataset const*>, std::__1::allocator<std::__1::pair<GDALThreadSafeDataset const* const, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*> > > > >::tryGet(GDALThreadSafeDataset const* const&, std::__1::shared_ptr<GDALDataset>&) Unexecuted instantiation: lru11::Cache<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > >, lru11::NullLock, std::__1::unordered_map<unsigned long, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > > >, void*>, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > > >, void*> > > > >::tryGet(unsigned long const&, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > >&) Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >, void*> > > > >::tryGet(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > >&) Unexecuted instantiation: lru11::Cache<int, std::__1::pair<unsigned long long, unsigned long long>, lru11::NullLock, std::__1::unordered_map<int, std::__1::__list_iterator<lru11::KeyValuePair<int, std::__1::pair<unsigned long long, unsigned long long> >, void*>, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::__list_iterator<lru11::KeyValuePair<int, std::__1::pair<unsigned long long, unsigned long long> >, void*> > > > >::tryGet(int const&, std::__1::pair<unsigned long long, unsigned long long>&) |
206 | | |
207 | | /** |
208 | | * The const reference returned here is only |
209 | | * guaranteed to be valid till the next insert/delete |
210 | | */ |
211 | | const Value &get(const Key &k) |
212 | | { |
213 | | Guard g(lock_); |
214 | | const auto iter = cache_.find(k); |
215 | | if (iter == cache_.end()) |
216 | | { |
217 | | throw KeyNotFound(); |
218 | | } |
219 | | keys_.splice(keys_.begin(), keys_, iter->second); |
220 | | return iter->second->value; |
221 | | } |
222 | | |
223 | | Value *getPtr(const Key &k) |
224 | 1.50k | { |
225 | 1.50k | Guard g(lock_); |
226 | 1.50k | const auto iter = cache_.find(k); |
227 | 1.50k | if (iter == cache_.end()) |
228 | 1.50k | { |
229 | 1.50k | return nullptr; |
230 | 1.50k | } |
231 | 0 | keys_.splice(keys_.begin(), keys_, iter->second); |
232 | 0 | return &(iter->second->value); |
233 | 1.50k | } lru11::Cache<unsigned long long, cpl::NonCopyableVector<unsigned char>, lru11::NullLock, std::__1::unordered_map<unsigned long long, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >, void*>, std::__1::hash<unsigned long long>, std::__1::equal_to<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >, void*> > > > >::getPtr(unsigned long long const&) Line | Count | Source | 224 | 1.50k | { | 225 | 1.50k | Guard g(lock_); | 226 | 1.50k | const auto iter = cache_.find(k); | 227 | 1.50k | if (iter == cache_.end()) | 228 | 1.50k | { | 229 | 1.50k | return nullptr; | 230 | 1.50k | } | 231 | 0 | keys_.splice(keys_.begin(), keys_, iter->second); | 232 | 0 | return &(iter->second->value); | 233 | 1.50k | } |
Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*> > > > >::getPtr(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) Unexecuted instantiation: lru11::Cache<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>, lru11::NullLock, std::__1::unordered_map<OSRProjTLSCache::EPSGCacheKey, std::__1::__list_iterator<lru11::KeyValuePair<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*>, OSRProjTLSCache::EPSGCacheKeyHasher, std::__1::equal_to<OSRProjTLSCache::EPSGCacheKey>, std::__1::allocator<std::__1::pair<OSRProjTLSCache::EPSGCacheKey const, std::__1::__list_iterator<lru11::KeyValuePair<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*> > > > >::getPtr(OSRProjTLSCache::EPSGCacheKey const&) Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*> > > > >::getPtr(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) |
234 | | |
235 | | /** |
236 | | * returns a copy of the stored object (if found) |
237 | | */ |
238 | | Value getCopy(const Key &k) |
239 | | { |
240 | | return get(k); |
241 | | } |
242 | | |
243 | | bool remove(const Key &k) |
244 | 0 | { |
245 | 0 | Guard g(lock_); |
246 | 0 | auto iter = cache_.find(k); |
247 | 0 | if (iter == cache_.end()) |
248 | 0 | { |
249 | 0 | return false; |
250 | 0 | } |
251 | 0 | keys_.erase(iter->second); |
252 | 0 | cache_.erase(iter); |
253 | 0 | return true; |
254 | 0 | } Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*> > > > >::remove(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) Unexecuted instantiation: lru11::Cache<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset>, lru11::NullLock, std::__1::unordered_map<GDALThreadSafeDataset const*, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*>, std::__1::hash<GDALThreadSafeDataset const*>, std::__1::equal_to<GDALThreadSafeDataset const*>, std::__1::allocator<std::__1::pair<GDALThreadSafeDataset const* const, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*> > > > >::remove(GDALThreadSafeDataset const* const&) Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >, void*> > > > >::remove(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) |
255 | | |
256 | | bool contains(const Key &k) |
257 | 26.7k | { |
258 | 26.7k | Guard g(lock_); |
259 | 26.7k | return cache_.find(k) != cache_.end(); |
260 | 26.7k | } lru11::Cache<unsigned long long, cpl::NonCopyableVector<unsigned char>, lru11::NullLock, std::__1::unordered_map<unsigned long long, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >, void*>, std::__1::hash<unsigned long long>, std::__1::equal_to<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >, void*> > > > >::contains(unsigned long long const&) Line | Count | Source | 257 | 26.7k | { | 258 | 26.7k | Guard g(lock_); | 259 | 26.7k | return cache_.find(k) != cache_.end(); | 260 | 26.7k | } |
Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*> > > > >::contains(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) Unexecuted instantiation: lru11::Cache<int, std::__1::pair<unsigned long long, unsigned long long>, lru11::NullLock, std::__1::unordered_map<int, std::__1::__list_iterator<lru11::KeyValuePair<int, std::__1::pair<unsigned long long, unsigned long long> >, void*>, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::__list_iterator<lru11::KeyValuePair<int, std::__1::pair<unsigned long long, unsigned long long> >, void*> > > > >::contains(int const&) |
261 | | |
262 | | bool getOldestEntry(Key &kOut, Value &vOut) |
263 | | { |
264 | | Guard g(lock_); |
265 | | if (keys_.empty()) |
266 | | { |
267 | | return false; |
268 | | } |
269 | | kOut = keys_.back().key; |
270 | | vOut = keys_.back().value; |
271 | | return true; |
272 | | } |
273 | | |
274 | | bool removeAndRecycleOldestEntry(Value &vOut) |
275 | | { |
276 | | Guard g(lock_); |
277 | | if (keys_.empty()) |
278 | | { |
279 | | return false; |
280 | | } |
281 | | vOut = std::move(keys_.back().value); |
282 | | cache_.erase(keys_.back().key); |
283 | | keys_.pop_back(); |
284 | | return true; |
285 | | } |
286 | | |
287 | | size_t getMaxSize() const |
288 | | { |
289 | | return maxSize_; |
290 | | } |
291 | | |
292 | | size_t getElasticity() const |
293 | | { |
294 | | return elasticity_; |
295 | | } |
296 | | |
297 | | size_t getMaxAllowedSize() const |
298 | | { |
299 | | return maxSize_ + elasticity_; |
300 | | } |
301 | | |
302 | | template <typename F> void cwalk(F &f) const |
303 | 0 | { |
304 | 0 | Guard g(lock_); |
305 | 0 | std::for_each(keys_.begin(), keys_.end(), f); |
306 | 0 | } Unexecuted instantiation: gdalthreadsafedataset.cpp:void lru11::Cache<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset>, lru11::NullLock, std::__1::unordered_map<GDALThreadSafeDataset const*, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*>, std::__1::hash<GDALThreadSafeDataset const*>, std::__1::equal_to<GDALThreadSafeDataset const*>, std::__1::allocator<std::__1::pair<GDALThreadSafeDataset const* const, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*> > > > >::cwalk<GDALThreadLocalDatasetCache::~GDALThreadLocalDatasetCache()::$_0 const>(GDALThreadLocalDatasetCache::~GDALThreadLocalDatasetCache()::$_0 const&) const Unexecuted instantiation: vrtmultidim.cpp:void lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >, void*> > > > >::cwalk<VRTMDArraySourceFromArray::~VRTMDArraySourceFromArray()::$_0>(VRTMDArraySourceFromArray::~VRTMDArraySourceFromArray()::$_0&) const |
307 | | |
308 | | Cache(Cache &&other) |
309 | | : cache_(std::move(other.cache_)), keys_(std::move(other.keys_)), |
310 | | maxSize_(other.maxSize_), elasticity_(other.elasticity_) |
311 | | { |
312 | | } |
313 | | |
314 | | protected: |
315 | | size_t prune() |
316 | 0 | { |
317 | 0 | size_t maxAllowed = maxSize_ + elasticity_; |
318 | 0 | if (maxSize_ == 0 || cache_.size() <= maxAllowed) |
319 | 0 | { /* ERO: changed < to <= */ |
320 | 0 | return 0; |
321 | 0 | } |
322 | 0 | size_t count = 0; |
323 | 0 | while (cache_.size() > maxSize_) |
324 | 0 | { |
325 | 0 | cache_.erase(keys_.back().key); |
326 | 0 | keys_.pop_back(); |
327 | 0 | ++count; |
328 | 0 | } |
329 | 0 | return count; |
330 | 0 | } Unexecuted instantiation: lru11::Cache<unsigned long long, cpl::NonCopyableVector<unsigned char>, lru11::NullLock, std::__1::unordered_map<unsigned long long, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >, void*>, std::__1::hash<unsigned long long>, std::__1::equal_to<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long long, cpl::NonCopyableVector<unsigned char> >, void*> > > > >::prune() Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<OGRProjCT, std::__1::default_delete<OGRProjCT> > >, void*> > > > >::prune() Unexecuted instantiation: lru11::Cache<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>, lru11::NullLock, std::__1::unordered_map<OSRProjTLSCache::EPSGCacheKey, std::__1::__list_iterator<lru11::KeyValuePair<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*>, OSRProjTLSCache::EPSGCacheKeyHasher, std::__1::equal_to<OSRProjTLSCache::EPSGCacheKey>, std::__1::allocator<std::__1::pair<OSRProjTLSCache::EPSGCacheKey const, std::__1::__list_iterator<lru11::KeyValuePair<OSRProjTLSCache::EPSGCacheKey, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*> > > > >::prune() Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter>, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<PJconsts, OSRProjTLSCache::OSRPJDeleter> >, void*> > > > >::prune() Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry>, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry> >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<OGRGML_SRSCacheEntry> >, void*> > > > >::prune() Unexecuted instantiation: lru11::Cache<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset>, lru11::NullLock, std::__1::unordered_map<GDALThreadSafeDataset const*, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*>, std::__1::hash<GDALThreadSafeDataset const*>, std::__1::equal_to<GDALThreadSafeDataset const*>, std::__1::allocator<std::__1::pair<GDALThreadSafeDataset const* const, std::__1::__list_iterator<lru11::KeyValuePair<GDALThreadSafeDataset const*, std::__1::shared_ptr<GDALDataset> >, void*> > > > >::prune() Unexecuted instantiation: lru11::Cache<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > >, lru11::NullLock, std::__1::unordered_map<unsigned long, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > > >, void*>, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::__list_iterator<lru11::KeyValuePair<unsigned long, std::__1::shared_ptr<std::__1::vector<double, std::__1::allocator<double> > > >, void*> > > > >::prune() Unexecuted instantiation: lru11::Cache<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > >, lru11::NullLock, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >, void*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__list_iterator<lru11::KeyValuePair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::shared_ptr<VRTArrayDatasetWrapper>, std::__1::unordered_set<void const*, std::__1::hash<void const*>, std::__1::equal_to<void const*>, std::__1::allocator<void const*> > > >, void*> > > > >::prune() Unexecuted instantiation: lru11::Cache<int, std::__1::pair<unsigned long long, unsigned long long>, lru11::NullLock, std::__1::unordered_map<int, std::__1::__list_iterator<lru11::KeyValuePair<int, std::__1::pair<unsigned long long, unsigned long long> >, void*>, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::__list_iterator<lru11::KeyValuePair<int, std::__1::pair<unsigned long long, unsigned long long> >, void*> > > > >::prune() |
331 | | |
332 | | private: |
333 | | // Disallow copying. |
334 | | Cache(const Cache &) = delete; |
335 | | Cache &operator=(const Cache &) = delete; |
336 | | |
337 | | mutable Lock lock_{}; |
338 | | Map cache_{}; |
339 | | list_type keys_{}; |
340 | | size_t maxSize_; |
341 | | size_t elasticity_; |
342 | | }; |
343 | | |
344 | | } // namespace lru11 |
345 | | |
346 | | /*! @endcond */ |