#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<double>
{
    static constexpr auto format = "=%lf";
};
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
