| #pragma once |
| |
| #include "data_types.hpp" |
| |
| #include <string> |
| |
| namespace phosphor |
| { |
| namespace dbus |
| { |
| namespace monitoring |
| { |
| namespace detail |
| { |
| |
| /** @brief Map format strings to undecorated C++ types. */ |
| template <typename T> |
| struct GetFormatType |
| { |
| }; |
| template <> |
| struct GetFormatType<bool> |
| { |
| static constexpr auto format = "=%d"; |
| }; |
| template <> |
| struct GetFormatType<char> |
| { |
| static constexpr auto format = "=%hhd"; |
| }; |
| template <> |
| struct GetFormatType<short int> |
| { |
| static constexpr auto format = "=%hd"; |
| }; |
| template <> |
| struct GetFormatType<int> |
| { |
| static constexpr auto format = "=%d"; |
| }; |
| template <> |
| struct GetFormatType<long int> |
| { |
| static constexpr auto format = "=%ld"; |
| }; |
| template <> |
| struct GetFormatType<long long int> |
| { |
| static constexpr auto format = "=%lld"; |
| }; |
| template <> |
| struct GetFormatType<unsigned char> |
| { |
| static constexpr auto format = "=%hhd"; |
| }; |
| template <> |
| struct GetFormatType<unsigned short int> |
| { |
| static constexpr auto format = "=%hd"; |
| }; |
| template <> |
| struct GetFormatType<unsigned int> |
| { |
| static constexpr auto format = "=%d"; |
| }; |
| template <> |
| struct GetFormatType<unsigned long int> |
| { |
| static constexpr auto format = "=%ld"; |
| }; |
| template <> |
| struct GetFormatType<unsigned long long int> |
| { |
| static constexpr auto format = "=%lld"; |
| }; |
| template <> |
| struct GetFormatType<std::string> |
| { |
| static constexpr auto format = "=%s"; |
| }; |
| template <> |
| struct GetFormatType<char*> |
| { |
| static constexpr auto format = "=%s"; |
| }; |
| template <> |
| struct GetFormatType<const char*> |
| { |
| static constexpr auto format = "=%s"; |
| }; |
| |
| } // namespace detail |
| |
| /** @brief Get the format string for a C++ type. */ |
| template <typename T> |
| struct GetFormat |
| { |
| static constexpr auto format = |
| detail::GetFormatType<DowncastType<T>>::format; |
| }; |
| |
| } // namespace monitoring |
| } // namespace dbus |
| } // namespace phosphor |