Cleanup standard formatters

This commit is contained in:
Victor Zverovich
2025-05-04 13:02:02 -07:00
parent 1312b4a162
commit b43b2f9537
5 changed files with 13 additions and 19 deletions

View File

@ -467,8 +467,7 @@ template <typename T> constexpr const char* narrow(const T*) { return nullptr; }
constexpr FMT_ALWAYS_INLINE const char* narrow(const char* s) { return s; } constexpr FMT_ALWAYS_INLINE const char* narrow(const char* s) { return s; }
template <typename Char> template <typename Char>
FMT_CONSTEXPR auto compare(const Char* s1, const Char* s2, std::size_t n) FMT_CONSTEXPR auto compare(const Char* s1, const Char* s2, size_t n) -> int {
-> int {
if (!is_constant_evaluated() && sizeof(Char) == 1) return memcmp(s1, s2, n); if (!is_constant_evaluated() && sizeof(Char) == 1) return memcmp(s1, s2, n);
for (; n != 0; ++s1, ++s2, --n) { for (; n != 0; ++s1, ++s2, --n) {
if (*s1 < *s2) return -1; if (*s1 < *s2) return -1;

View File

@ -2274,7 +2274,7 @@ inline auto write_significand(Char* out, UInt significand, int significand_size,
int floating_size = significand_size - integral_size; int floating_size = significand_size - integral_size;
for (int i = floating_size / 2; i > 0; --i) { for (int i = floating_size / 2; i > 0; --i) {
out -= 2; out -= 2;
write2digits(out, static_cast<std::size_t>(significand % 100)); write2digits(out, static_cast<size_t>(significand % 100));
significand /= 100; significand /= 100;
} }
if (floating_size % 2 != 0) { if (floating_size % 2 != 0) {

View File

@ -45,12 +45,11 @@ template <typename T> class is_set {
}; };
// C array overload // C array overload
template <typename T, std::size_t N> template <typename T, size_t N>
auto range_begin(const T (&arr)[N]) -> const T* { auto range_begin(const T (&arr)[N]) -> const T* {
return arr; return arr;
} }
template <typename T, std::size_t N> template <typename T, size_t N> auto range_end(const T (&arr)[N]) -> const T* {
auto range_end(const T (&arr)[N]) -> const T* {
return arr + N; return arr + N;
} }
@ -208,7 +207,7 @@ template <typename Char, typename... T>
using result_t = std::tuple<formatter<remove_cvref_t<T>, Char>...>; using result_t = std::tuple<formatter<remove_cvref_t<T>, Char>...>;
using std::get; using std::get;
template <typename Tuple, typename Char, std::size_t... Is> template <typename Tuple, typename Char, size_t... Is>
auto get_formatters(index_sequence<Is...>) auto get_formatters(index_sequence<Is...>)
-> result_t<Char, decltype(get<Is>(std::declval<Tuple>()))...>; -> result_t<Char, decltype(get<Is>(std::declval<Tuple>()))...>;
} // namespace tuple } // namespace tuple
@ -219,7 +218,7 @@ template <typename R> struct range_reference_type_impl {
using type = decltype(*detail::range_begin(std::declval<R&>())); using type = decltype(*detail::range_begin(std::declval<R&>()));
}; };
template <typename T, std::size_t N> struct range_reference_type_impl<T[N]> { template <typename T, size_t N> struct range_reference_type_impl<T[N]> {
using type = T&; using type = T&;
}; };

View File

@ -123,10 +123,6 @@ auto write_escaped_alternative(OutputIt out, const T& v) -> OutputIt {
#if FMT_CPP_LIB_VARIANT #if FMT_CPP_LIB_VARIANT
template <typename T>
using variant_index_sequence =
std::make_index_sequence<std::variant_size<T>::value>;
template <typename> struct is_variant_like_ : std::false_type {}; template <typename> struct is_variant_like_ : std::false_type {};
template <typename... Types> template <typename... Types>
struct is_variant_like_<std::variant<Types...>> : std::true_type {}; struct is_variant_like_<std::variant<Types...>> : std::true_type {};
@ -138,8 +134,8 @@ template <typename Variant, typename Char> class is_variant_formattable {
check(std::index_sequence<Is...>); check(std::index_sequence<Is...>);
public: public:
static constexpr const bool value = static constexpr const bool value = decltype(check(
decltype(check(variant_index_sequence<Variant>{}))::value; std::make_index_sequence<std::variant_size<Variant>::value>()))::value;
}; };
#endif // FMT_CPP_LIB_VARIANT #endif // FMT_CPP_LIB_VARIANT
@ -318,7 +314,7 @@ template <size_t N, typename Char>
struct formatter<std::bitset<N>, Char> struct formatter<std::bitset<N>, Char>
: nested_formatter<basic_string_view<Char>, Char> { : nested_formatter<basic_string_view<Char>, Char> {
private: private:
// This is functor because C++11 doesn't support generic lambdas. // This is a functor because C++11 doesn't support generic lambdas.
struct writer { struct writer {
const std::bitset<N>& bs; const std::bitset<N>& bs;

View File

@ -66,14 +66,14 @@ using rwresult = int;
// On Windows the count argument to read and write is unsigned, so convert // On Windows the count argument to read and write is unsigned, so convert
// it from size_t preventing integer overflow. // it from size_t preventing integer overflow.
inline unsigned convert_rwcount(std::size_t count) { inline unsigned convert_rwcount(size_t count) {
return count <= UINT_MAX ? static_cast<unsigned>(count) : UINT_MAX; return count <= UINT_MAX ? static_cast<unsigned>(count) : UINT_MAX;
} }
#elif FMT_USE_FCNTL #elif FMT_USE_FCNTL
// Return type of read and write functions. // Return type of read and write functions.
using rwresult = ssize_t; using rwresult = ssize_t;
inline std::size_t convert_rwcount(std::size_t count) { return count; } inline size_t convert_rwcount(size_t count) { return count; }
#endif #endif
} // namespace } // namespace
@ -266,7 +266,7 @@ long long file::size() const {
# endif # endif
} }
std::size_t file::read(void* buffer, std::size_t count) { size_t file::read(void* buffer, size_t count) {
rwresult result = 0; rwresult result = 0;
FMT_RETRY(result, FMT_POSIX_CALL(read(fd_, buffer, convert_rwcount(count)))); FMT_RETRY(result, FMT_POSIX_CALL(read(fd_, buffer, convert_rwcount(count))));
if (result < 0) if (result < 0)
@ -274,7 +274,7 @@ std::size_t file::read(void* buffer, std::size_t count) {
return detail::to_unsigned(result); return detail::to_unsigned(result);
} }
std::size_t file::write(const void* buffer, std::size_t count) { size_t file::write(const void* buffer, size_t count) {
rwresult result = 0; rwresult result = 0;
FMT_RETRY(result, FMT_POSIX_CALL(write(fd_, buffer, convert_rwcount(count)))); FMT_RETRY(result, FMT_POSIX_CALL(write(fd_, buffer, convert_rwcount(count))));
if (result < 0) if (result < 0)