From a4760e939fe40138e6591093a3ec128ab0d29962 Mon Sep 17 00:00:00 2001
From: bunnei <bunneidev@gmail.com>
Date: Tue, 2 May 2017 00:07:46 -0400
Subject: common: Add a generic interface for logging telemetry fields.

---
 src/common/telemetry.cpp | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 src/common/telemetry.cpp

(limited to 'src/common/telemetry.cpp')

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
-- 
cgit v1.2.3-70-g09d2