From f40ba2852b082d0a7e3b5069221141a511483011 Mon Sep 17 00:00:00 2001 From: Fabian Sauter Date: Mon, 2 May 2022 14:33:03 +0200 Subject: [PATCH] Enum class fix for fmt 8.x Since fmt 8.0.0 enum classes are not being implicitly converted to int any more. Refference: https://github.com/fmtlib/fmt/issues/1841 Signed-off-by: Fabian Sauter --- single_include/kompute/Kompute.hpp | 36 ++++++++++++++++++++++++++++++ src/include/kompute/Tensor.hpp | 36 ++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/single_include/kompute/Kompute.hpp b/single_include/kompute/Kompute.hpp index f1cf7bd37..ebba78628 100755 --- a/single_include/kompute/Kompute.hpp +++ b/single_include/kompute/Kompute.hpp @@ -598,6 +598,8 @@ static const char* KOMPUTE_LOG_TAG = "KomputeLog"; #endif #include +#include +#include #include @@ -2368,3 +2370,37 @@ class Manager }; } // End namespace kp + +/** + * fmt fromater for kp::Tensor::TensorDataTypes. + */ +template <> struct fmt::formatter: formatter { + template + auto format(kp::Tensor::TensorDataTypes dt, FormatContext& ctx) { + std::string name = "unknown"; + switch (dt) { + case kp::Tensor::TensorDataTypes::eBool: name = "eBool"; break; + case kp::Tensor::TensorDataTypes::eDouble: name = "eDouble"; break; + case kp::Tensor::TensorDataTypes::eFloat: name = "eFloat"; break; + case kp::Tensor::TensorDataTypes::eInt: name = "eInt"; break; + case kp::Tensor::TensorDataTypes::eUnsignedInt: name = "eUnsignedInt"; break; + } + return formatter::format(name, ctx); + } +}; + +/** + * fmt fromater for kp::Tensor::TensorTypes. + */ +template <> struct fmt::formatter: formatter { + template + auto format(kp::Tensor::TensorTypes dt, FormatContext& ctx) { + std::string name = "unknown"; + switch (dt) { + case kp::Tensor::TensorTypes::eDevice: name = "eDevice"; break; + case kp::Tensor::TensorTypes::eHost: name = "eHost"; break; + case kp::Tensor::TensorTypes::eStorage: name = "eStorage"; break; + } + return formatter::format(name, ctx); + } +}; diff --git a/src/include/kompute/Tensor.hpp b/src/include/kompute/Tensor.hpp index 021ed2bd6..3b562564c 100644 --- a/src/include/kompute/Tensor.hpp +++ b/src/include/kompute/Tensor.hpp @@ -2,6 +2,8 @@ #pragma once #include "kompute/Core.hpp" +#include +#include namespace kp { @@ -339,3 +341,37 @@ class TensorT : public Tensor }; } // End namespace kp + +/** + * fmt fromater for kp::Tensor::TensorDataTypes. + */ +template <> struct fmt::formatter: formatter { + template + auto format(kp::Tensor::TensorDataTypes dt, FormatContext& ctx) { + std::string name = "unknown"; + switch (dt) { + case kp::Tensor::TensorDataTypes::eBool: name = "eBool"; break; + case kp::Tensor::TensorDataTypes::eDouble: name = "eDouble"; break; + case kp::Tensor::TensorDataTypes::eFloat: name = "eFloat"; break; + case kp::Tensor::TensorDataTypes::eInt: name = "eInt"; break; + case kp::Tensor::TensorDataTypes::eUnsignedInt: name = "eUnsignedInt"; break; + } + return formatter::format(name, ctx); + } +}; + +/** + * fmt fromater for kp::Tensor::TensorTypes. + */ +template <> struct fmt::formatter: formatter { + template + auto format(kp::Tensor::TensorTypes dt, FormatContext& ctx) { + std::string name = "unknown"; + switch (dt) { + case kp::Tensor::TensorTypes::eDevice: name = "eDevice"; break; + case kp::Tensor::TensorTypes::eHost: name = "eHost"; break; + case kp::Tensor::TensorTypes::eStorage: name = "eStorage"; break; + } + return formatter::format(name, ctx); + } +};