From 0fb8ef8f79beb3958f9875beba983eabd0759ef5 Mon Sep 17 00:00:00 2001 From: Victor Zverovich Date: Sat, 27 Mar 2021 19:05:39 -0700 Subject: [PATCH] Inline trivial argument handling functions --- include/fmt/core.h | 72 ++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/include/fmt/core.h b/include/fmt/core.h index 235d7657..69a67acf 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -1146,36 +1146,40 @@ struct unformattable {}; template struct arg_mapper { using char_type = typename Context::char_type; - FMT_CONSTEXPR int map(signed char val) { return val; } - FMT_CONSTEXPR unsigned map(unsigned char val) { return val; } - FMT_CONSTEXPR int map(short val) { return val; } - FMT_CONSTEXPR unsigned map(unsigned short val) { return val; } - FMT_CONSTEXPR int map(int val) { return val; } - FMT_CONSTEXPR unsigned map(unsigned val) { return val; } - FMT_CONSTEXPR long_type map(long val) { return val; } - FMT_CONSTEXPR ulong_type map(unsigned long val) { return val; } - FMT_CONSTEXPR long long map(long long val) { return val; } - FMT_CONSTEXPR unsigned long long map(unsigned long long val) { return val; } - FMT_CONSTEXPR int128_t map(int128_t val) { return val; } - FMT_CONSTEXPR uint128_t map(uint128_t val) { return val; } - FMT_CONSTEXPR bool map(bool val) { return val; } + FMT_CONSTEXPR FMT_INLINE int map(signed char val) { return val; } + FMT_CONSTEXPR FMT_INLINE unsigned map(unsigned char val) { return val; } + FMT_CONSTEXPR FMT_INLINE int map(short val) { return val; } + FMT_CONSTEXPR FMT_INLINE unsigned map(unsigned short val) { return val; } + FMT_CONSTEXPR FMT_INLINE int map(int val) { return val; } + FMT_CONSTEXPR FMT_INLINE unsigned map(unsigned val) { return val; } + FMT_CONSTEXPR FMT_INLINE long_type map(long val) { return val; } + FMT_CONSTEXPR FMT_INLINE ulong_type map(unsigned long val) { return val; } + FMT_CONSTEXPR FMT_INLINE long long map(long long val) { return val; } + FMT_CONSTEXPR FMT_INLINE unsigned long long map(unsigned long long val) { + return val; + } + FMT_CONSTEXPR FMT_INLINE int128_t map(int128_t val) { return val; } + FMT_CONSTEXPR FMT_INLINE uint128_t map(uint128_t val) { return val; } + FMT_CONSTEXPR FMT_INLINE bool map(bool val) { return val; } template ::value)> - FMT_CONSTEXPR char_type map(T val) { + FMT_CONSTEXPR FMT_INLINE char_type map(T val) { static_assert( std::is_same::value || std::is_same::value, "mixing character types is disallowed"); return val; } - FMT_CONSTEXPR float map(float val) { return val; } - FMT_CONSTEXPR double map(double val) { return val; } - FMT_CONSTEXPR long double map(long double val) { return val; } + FMT_CONSTEXPR FMT_INLINE float map(float val) { return val; } + FMT_CONSTEXPR FMT_INLINE double map(double val) { return val; } + FMT_CONSTEXPR FMT_INLINE long double map(long double val) { return val; } - FMT_CONSTEXPR const char_type* map(char_type* val) { return val; } - FMT_CONSTEXPR const char_type* map(const char_type* val) { return val; } + FMT_CONSTEXPR FMT_INLINE const char_type* map(char_type* val) { return val; } + FMT_CONSTEXPR FMT_INLINE const char_type* map(const char_type* val) { + return val; + } template ::value)> - FMT_CONSTEXPR basic_string_view map(const T& val) { + FMT_CONSTEXPR FMT_INLINE basic_string_view map(const T& val) { static_assert(std::is_same>::value, "mixing character types is disallowed"); return to_string_view(val); @@ -1185,7 +1189,7 @@ template struct arg_mapper { std::is_constructible, T>::value && !is_string::value && !has_formatter::value && !has_fallback_formatter::value)> - FMT_CONSTEXPR basic_string_view map(const T& val) { + FMT_CONSTEXPR FMT_INLINE basic_string_view map(const T& val) { return basic_string_view(val); } template < @@ -1195,29 +1199,29 @@ template struct arg_mapper { !std::is_constructible, T>::value && !is_string::value && !has_formatter::value && !has_fallback_formatter::value)> - FMT_CONSTEXPR basic_string_view map(const T& val) { + FMT_CONSTEXPR FMT_INLINE basic_string_view map(const T& val) { return std_string_view(val); } - FMT_CONSTEXPR const char* map(const signed char* val) { + FMT_CONSTEXPR FMT_INLINE const char* map(const signed char* val) { static_assert(std::is_same::value, "invalid string type"); return reinterpret_cast(val); } - FMT_CONSTEXPR const char* map(const unsigned char* val) { + FMT_CONSTEXPR FMT_INLINE const char* map(const unsigned char* val) { static_assert(std::is_same::value, "invalid string type"); return reinterpret_cast(val); } - FMT_CONSTEXPR const char* map(signed char* val) { + FMT_CONSTEXPR FMT_INLINE const char* map(signed char* val) { const auto* const_val = val; return map(const_val); } - FMT_CONSTEXPR const char* map(unsigned char* val) { + FMT_CONSTEXPR FMT_INLINE const char* map(unsigned char* val) { const auto* const_val = val; return map(const_val); } - FMT_CONSTEXPR const void* map(void* val) { return val; } - FMT_CONSTEXPR const void* map(const void* val) { return val; } - FMT_CONSTEXPR const void* map(std::nullptr_t val) { return val; } + FMT_CONSTEXPR FMT_INLINE const void* map(void* val) { return val; } + FMT_CONSTEXPR FMT_INLINE const void* map(const void* val) { return val; } + FMT_CONSTEXPR FMT_INLINE const void* map(std::nullptr_t val) { return val; } // We use SFINAE instead of a const T* parameter to avoid conflicting with // the C array overload. @@ -1232,7 +1236,7 @@ template struct arg_mapper { } template - FMT_CONSTEXPR auto map(const T (&values)[N]) -> const T (&)[N] { + FMT_CONSTEXPR FMT_INLINE auto map(const T (&values)[N]) -> const T (&)[N] { return values; } @@ -1240,7 +1244,7 @@ template struct arg_mapper { FMT_ENABLE_IF(std::is_enum::value && !has_formatter::value && !has_fallback_formatter::value)> - FMT_CONSTEXPR auto map(const T& val) + FMT_CONSTEXPR FMT_INLINE auto map(const T& val) -> decltype(std::declval().map( static_cast::type>(val))) { return map(static_cast::type>(val)); @@ -1249,12 +1253,12 @@ template struct arg_mapper { FMT_ENABLE_IF(!is_string::value && !is_char::value && (has_formatter::value || has_fallback_formatter::value))> - FMT_CONSTEXPR const T& map(const T& val) { + FMT_CONSTEXPR FMT_INLINE const T& map(const T& val) { return val; } template - FMT_CONSTEXPR auto map(const named_arg& val) + FMT_CONSTEXPR FMT_INLINE auto map(const named_arg& val) -> decltype(std::declval().map(val.value)) { return map(val.value); } @@ -1456,7 +1460,7 @@ FMT_CONSTEXPR basic_format_arg make_arg(const T& value) { // another (not recommended). template -FMT_CONSTEXPR value make_arg(const T& val) { +FMT_CONSTEXPR FMT_INLINE value make_arg(const T& val) { const auto& arg = arg_mapper().map(val); static_assert( !std::is_same::value,