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