#pragma once #include "common/UniqueAccess.hpp" #include #include #include #include namespace chatterino { 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); } else { reinterpret_cast(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(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(it.value()) += amount; } } static void decrease(const QString &name) { auto counts = counts_.access(); auto it = counts->find(name); if (it == counts->end()) { counts->insert(name, -1); } else { reinterpret_cast(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(it.value()) -= amount; } } static QString getDebugText() { auto counts = counts_.access(); QString text; for (auto it = counts->begin(); it != counts->end(); it++) { text += it.key() + ": " + QString::number(it.value()) + "\n"; } return text; } QString toString() { return ""; } private: static UniqueAccess> counts_; }; } // namespace chatterino