11 #include <QtCore/QString>
12 #include <QtCore/QVariant>
13 #include <QtCore/QSet>
14 #include <QtCore/QVariantMap>
18 #include "DependencyManager.h"
21 using EditStatFunction = std::function<QVariant(QVariant currentValue)>;
23 class StatTracker :
public Dependency {
26 QVariant getStat(
const QString& name);
27 void setStat(
const QString& name, int64_t value);
28 void updateStat(
const QString& name, int64_t mod);
29 void incrementStat(
const QString& name);
30 void decrementStat(
const QString& name);
32 using Mutex = std::mutex;
33 using Lock = std::lock_guard<Mutex>;
35 QHash<QString, int64_t> _stats;
40 CounterStat(QString name) : _name(name) {
41 DependencyManager::get<StatTracker>()->incrementStat(_name);
44 DependencyManager::get<StatTracker>()->decrementStat(_name);