Coverage Report

Created: 2025-12-31 06:48

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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 */