aboutsummaryrefslogtreecommitdiff
path: root/src/common/telemetry.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2017-05-02 00:07:46 -0400
committerbunnei <bunneidev@gmail.com>2017-05-24 19:16:21 -0400
commita4760e939fe40138e6591093a3ec128ab0d29962 (patch)
treece2fd1c5e5bbf5741465e1dffb195d38c9893838 /src/common/telemetry.cpp
parentc291db72e74fa1514bfe6706b8a2004bbe2b31e7 (diff)
common: Add a generic interface for logging telemetry fields.
Diffstat (limited to 'src/common/telemetry.cpp')
-rw-r--r--src/common/telemetry.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/common/telemetry.cpp b/src/common/telemetry.cpp
new file mode 100644
index 0000000000..bf1f548865
--- /dev/null
+++ b/src/common/telemetry.cpp
@@ -0,0 +1,40 @@
+// Copyright 2017 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include <algorithm>
+#include "common/telemetry.h"
+
+namespace Telemetry {
+
+void FieldCollection::Accept(VisitorInterface& visitor) const {
+ for (const auto& field : fields) {
+ field.second->Accept(visitor);
+ }
+}
+
+void FieldCollection::AddField(std::unique_ptr<FieldInterface> field) {
+ fields[field->GetName()] = std::move(field);
+}
+
+template <class T>
+void Field<T>::Accept(VisitorInterface& visitor) const {
+ visitor.Visit(*this);
+}
+
+template class Field<bool>;
+template class Field<double>;
+template class Field<float>;
+template class Field<u8>;
+template class Field<u16>;
+template class Field<u32>;
+template class Field<u64>;
+template class Field<s8>;
+template class Field<s16>;
+template class Field<s32>;
+template class Field<s64>;
+template class Field<std::string>;
+template class Field<const char*>;
+template class Field<std::chrono::microseconds>;
+
+} // namespace Telemetry