|  | #pragma once | 
|  |  | 
|  | #include "data_types.hpp" | 
|  |  | 
|  | namespace phosphor | 
|  | { | 
|  | namespace dbus | 
|  | { | 
|  | namespace monitoring | 
|  | { | 
|  | namespace detail | 
|  | { | 
|  |  | 
|  | /** @brief Map format strings to undecorated C++ types. */ | 
|  | template <typename T> struct GetFormatType | 
|  | { | 
|  |  | 
|  | }; | 
|  | 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 |