diff options
| author | Pieter Wuille <[email protected]> | 2017-04-21 05:26:23 -0700 |
|---|---|---|
| committer | Pieter Wuille <[email protected]> | 2017-04-21 05:26:23 -0700 |
| commit | 344a2c4122db5ae309e6dddc99b3e136fd307238 (patch) | |
| tree | cf3a108b7ea6642d11d679c4144286768f457983 /src/memusage.h | |
| parent | Merge #10228: build: regenerate bitcoin-config.h as necessary (diff) | |
| download | discoin-344a2c4122db5ae309e6dddc99b3e136fd307238.tar.xz discoin-344a2c4122db5ae309e6dddc99b3e136fd307238.zip | |
Add support for std::unordered_{map,set} to memusage.h
Diffstat (limited to 'src/memusage.h')
| -rw-r--r-- | src/memusage.h | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/memusage.h b/src/memusage.h index 81e870295..b69acafff 100644 --- a/src/memusage.h +++ b/src/memusage.h @@ -12,6 +12,8 @@ #include <map> #include <set> #include <vector> +#include <unordered_map> +#include <unordered_set> #include <boost/foreach.hpp> #include <boost/unordered_set.hpp> @@ -149,7 +151,7 @@ static inline size_t DynamicUsage(const std::shared_ptr<X>& p) // Boost data structures template<typename X> -struct boost_unordered_node : private X +struct unordered_node : private X { private: void* ptr; @@ -158,13 +160,25 @@ private: template<typename X, typename Y> static inline size_t DynamicUsage(const boost::unordered_set<X, Y>& s) { - return MallocUsage(sizeof(boost_unordered_node<X>)) * s.size() + MallocUsage(sizeof(void*) * s.bucket_count()); + return MallocUsage(sizeof(unordered_node<X>)) * s.size() + MallocUsage(sizeof(void*) * s.bucket_count()); } template<typename X, typename Y, typename Z> static inline size_t DynamicUsage(const boost::unordered_map<X, Y, Z>& m) { - return MallocUsage(sizeof(boost_unordered_node<std::pair<const X, Y> >)) * m.size() + MallocUsage(sizeof(void*) * m.bucket_count()); + return MallocUsage(sizeof(unordered_node<std::pair<const X, Y> >)) * m.size() + MallocUsage(sizeof(void*) * m.bucket_count()); +} + +template<typename X, typename Y> +static inline size_t DynamicUsage(const std::unordered_set<X, Y>& s) +{ + return MallocUsage(sizeof(unordered_node<X>)) * s.size() + MallocUsage(sizeof(void*) * s.bucket_count()); +} + +template<typename X, typename Y, typename Z> +static inline size_t DynamicUsage(const std::unordered_map<X, Y, Z>& m) +{ + return MallocUsage(sizeof(unordered_node<std::pair<const X, Y> >)) * m.size() + MallocUsage(sizeof(void*) * m.bucket_count()); } } |