mirror-chatterino2/src/util/DebugCount.hpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

112 lines
2.2 KiB
C++
Raw Normal View History

2018-04-06 16:37:30 +02:00
#pragma once
#include "common/UniqueAccess.hpp"
2018-04-06 16:37:30 +02:00
#include <QMap>
#include <QString>
#include <mutex>
#include <typeinfo>
2018-04-06 16:37:30 +02:00
namespace chatterino {
2018-04-06 16:37:30 +02:00
class DebugCount
{
public:
static void increase(const QString &name)
{
auto counts = counts_.access();
auto it = counts->find(name);
if (it == counts->end())
{
counts->insert(name, 1);
2018-04-06 16:37:30 +02:00
}
else
{
reinterpret_cast<int64_t &>(it.value())++;
}
}
static void set(const QString &name, const int64_t &amount)
{
auto counts = counts_.access();
auto it = counts->find(name);
if (it == counts->end())
{
counts->insert(name, amount);
}
else
{
reinterpret_cast<int64_t &>(it.value()) = amount;
}
}
static void increase(const QString &name, const int64_t &amount)
{
auto counts = counts_.access();
auto it = counts->find(name);
if (it == counts->end())
{
counts->insert(name, amount);
}
else
{
reinterpret_cast<int64_t &>(it.value()) += amount;
}
}
2018-04-06 16:37:30 +02:00
static void decrease(const QString &name)
{
auto counts = counts_.access();
auto it = counts->find(name);
if (it == counts->end())
{
counts->insert(name, -1);
2018-04-06 16:37:30 +02:00
}
else
{
reinterpret_cast<int64_t &>(it.value())--;
}
}
static void decrease(const QString &name, const int64_t &amount)
{
auto counts = counts_.access();
auto it = counts->find(name);
if (it == counts->end())
{
counts->insert(name, -amount);
}
else
{
reinterpret_cast<int64_t &>(it.value()) -= amount;
}
}
2018-04-06 16:37:30 +02:00
static QString getDebugText()
{
auto counts = counts_.access();
2018-04-06 16:37:30 +02:00
QString text;
for (auto it = counts->begin(); it != counts->end(); it++)
{
2018-04-06 16:37:30 +02:00
text += it.key() + ": " + QString::number(it.value()) + "\n";
}
return text;
}
2018-04-06 16:37:30 +02:00
QString toString()
{
return "";
2018-04-06 16:37:30 +02:00
}
2018-07-06 19:23:47 +02:00
private:
static UniqueAccess<QMap<QString, int64_t>> counts_;
2018-04-06 16:37:30 +02:00
};
2018-04-06 16:37:30 +02:00
} // namespace chatterino