lsnes rr2-β24
[lsnes.git] / src / library / memtracker.cpp
blob21ee5cdc88558106c8159e1e418082c256e164d4
1 #include "memtracker.hpp"
3 void memtracker::operator()(const char* category, ssize_t change)
5 if(invalid) return;
6 std::string cat = category;
7 threads::alock h(mut);
8 if(change > 0) {
9 if(data.count(cat))
10 data[cat] = data[cat] + change;
11 else
12 data[cat] = change;
13 } else if(change < 0 && data.count(cat)) {
14 if(data[cat] <= (size_t)-change)
15 data[cat] = 0;
16 else
17 data[cat] = data[cat] + change;
21 void memtracker::reset(const char* category, size_t value)
23 if(invalid) return;
24 std::string cat = category;
25 threads::alock h(mut);
26 data[cat] = value;
29 std::map<std::string, size_t> memtracker::report()
31 std::map<std::string, size_t> ret;
32 if(!invalid) {
33 threads::alock h(mut);
34 ret = data;
36 return ret;
39 memtracker::memtracker()
41 invalid = false;
43 memtracker::~memtracker()
45 invalid = true;
48 memtracker& memtracker::singleton()
50 static memtracker x;
51 return x;