|
|
@ -16,8 +16,6 @@
|
|
|
|
#include <unordered_set>
|
|
|
|
#include <unordered_set>
|
|
|
|
|
|
|
|
|
|
|
|
#include <boost/foreach.hpp>
|
|
|
|
#include <boost/foreach.hpp>
|
|
|
|
#include <boost/unordered_set.hpp>
|
|
|
|
|
|
|
|
#include <boost/unordered_map.hpp>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace memusage
|
|
|
|
namespace memusage
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -148,8 +146,6 @@ static inline size_t DynamicUsage(const std::shared_ptr<X>& p)
|
|
|
|
return p ? MallocUsage(sizeof(X)) + MallocUsage(sizeof(stl_shared_counter)) : 0;
|
|
|
|
return p ? MallocUsage(sizeof(X)) + MallocUsage(sizeof(stl_shared_counter)) : 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Boost data structures
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template<typename X>
|
|
|
|
template<typename X>
|
|
|
|
struct unordered_node : private X
|
|
|
|
struct unordered_node : private X
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -157,18 +153,6 @@ private:
|
|
|
|
void* ptr;
|
|
|
|
void* ptr;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
template<typename X, typename Y>
|
|
|
|
|
|
|
|
static inline size_t DynamicUsage(const boost::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 boost::unordered_map<X, Y, Z>& m)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return MallocUsage(sizeof(unordered_node<std::pair<const X, Y> >)) * m.size() + MallocUsage(sizeof(void*) * m.bucket_count());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template<typename X, typename Y>
|
|
|
|
template<typename X, typename Y>
|
|
|
|
static inline size_t DynamicUsage(const std::unordered_set<X, Y>& s)
|
|
|
|
static inline size_t DynamicUsage(const std::unordered_set<X, Y>& s)
|
|
|
|
{
|
|
|
|
{
|
|
|
|