Commit Graph

2023 Commits

Author SHA1 Message Date
Victor Zverovich
8510838db1 Make format_specs not depend on code unit type 2024-01-17 07:50:52 -08:00
Vladislav Shchapov
470c4e6ca8
Fix scope for glibc ext for sec, min, and hour (#3812)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2024-01-16 13:54:19 -08:00
The Phantom Derpstorm
13ec66bf78
🛠 Add basic array safety functions and backwards-compatible result type (#3805) 2024-01-16 07:01:15 -08:00
Victor Zverovich
e954823531 Make fill independent on code unit type 2024-01-15 15:00:28 -08:00
Vladislav Shchapov
d249fd9f84
Workaround for gcc 6 (#3810)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2024-01-15 08:58:19 -08:00
Victor Zverovich
fe0d910a7d Replace multiple error reporting mechanisms with report_error 2024-01-15 07:23:06 -08:00
Victor Zverovich
f9294f0e60 Improve handling of format specs 2024-01-15 06:31:24 -08:00
Victor Zverovich
3647feaad5 Improve scan 2024-01-14 09:30:45 -08:00
Victor Zverovich
e420a58f24 Improve scan prototype 2024-01-14 08:51:33 -08:00
Victor Zverovich
ca37503f93 scan -> scan_to 2024-01-14 08:30:42 -08:00
Victor Zverovich
123e058eb3 Improve scan prototype 2024-01-14 08:11:13 -08:00
Victor Zverovich
f924d20dbd core-test -> base-test 2024-01-14 06:57:01 -08:00
Victor Zverovich
d70729215f Fix constness 2024-01-14 06:44:38 -08:00
Victor Zverovich
d0963d4823 Make ranges only depend on fmt/base.h 2024-01-13 09:54:19 -08:00
Vladislav Shchapov
21b0458291
Use std::allocator_traits (#3804)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2024-01-13 08:48:37 -08:00
Victor Zverovich
297b22f585 Remove <memory> dependency 2024-01-12 09:09:19 -08:00
Victor Zverovich
52174953bc Cleanup conseval detection 2024-01-12 05:59:22 -08:00
Victor Zverovich
fd87a23d34 Reduce memory dependency 2024-01-10 20:00:15 -08:00
Victor Zverovich
971f7ae768 Minor cleanup 2024-01-10 16:43:00 -08:00
Tristan Brindle
2595bf57b3 Fix formatting of ranges with begin()&/end()&
C++20 allows ranges to have lvalue-qualified begin() and end() member functions. fmt correctly handles this if begin() and end() are additionally const-qualifed (i.e. begin() const&), but not in the non-const case. For example:

https://godbolt.org/z/YfxaYz5r7

This patch fixes fmt's range detection to handle this case by testing calls to detail::ranges_begin()/end() with an lvalue T&, matching the behaviour in the const case.
2024-01-10 12:22:53 -08:00
Vladislav Shchapov
961df829b9 Fix buffer overflow if output iterator is std::back_insert_iterator and value is escaped (debug format)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2024-01-10 09:15:16 -08:00
Victor Zverovich
401f087394 Fix write_uintptr_fallback 2024-01-10 09:09:57 -08:00
Victor Zverovich
4331abed26 Move fmt::format to fmt/format.h 2024-01-10 06:43:12 -08:00
Victor Zverovich
79f1506fe3 Add base.h 2024-01-09 19:36:12 -08:00
Vertexwahn
8875cf96c2
Fix spelling: othewise ==> otherwise (#3791) 2024-01-09 10:32:46 -08:00
Victor Zverovich
fb66131efa Improve arg storage 2024-01-08 21:25:41 -08:00
Victor Zverovich
a5ae9ae19d Split standard context into a separate class and optimize 2024-01-08 07:08:49 -08:00
Victor Zverovich
23e8109d8d Remove buffer_appender 2024-01-07 22:03:02 -08:00
Victor Zverovich
df67df7b4c Add is_back_insert_iterator 2024-01-07 16:44:42 -08:00
Victor Zverovich
dbdfc99fa1 Don't crash if flush fails during unwinding 2024-01-07 14:55:16 -08:00
Victor Zverovich
0641b844ac Cleanup string traits 2024-01-05 19:31:04 -08:00
Victor Zverovich
c9d233c0a4 Decouple appender from back_insert_iterator 2024-01-03 06:16:00 -08:00
Victor Zverovich
e2ab9ab22b Add FMT_GLIBCXX_RELEASE 2024-01-02 16:15:23 -08:00
Victor Zverovich
63ce170853 Replace virtual dispatch with normal functions in buffers 2024-01-02 07:02:20 -08:00
Victor Zverovich
6c3b2d491e Fix constness 2024-01-01 19:50:36 -08:00
Victor Zverovich
068bf9bad8 Make visitation compatible with std::format 2024-01-01 17:31:36 -08:00
Victor Zverovich
50565f9853 Move misplaced join overloads to fmt/ranges.h 2024-01-01 16:28:59 -08:00
Victor Zverovich
0b39d67103 Remove detail::error_handler 2024-01-01 16:10:13 -08:00
Victor Zverovich
c142385033 Improve the pipe API 2024-01-01 15:55:37 -08:00
Victor Zverovich
ce3161887a Add overflow check 2024-01-01 09:17:10 -08:00
Victor Zverovich
e1aac42663 Implement hex specifier 2024-01-01 09:03:46 -08:00
Victor Zverovich
1705600be3 Remove optional 2024-01-01 09:03:46 -08:00
Victor Zverovich
d33731d202 Implement empty format specs 2024-01-01 07:54:02 -08:00
Victor Zverovich
c068c7c622 Add sentinel support 2024-01-01 07:25:01 -08:00
Bruce Mitchener
ebd5c8f994
Consistently use fmt:: when invoking format_to. (#3779)
This has been done partially in previous commits:

* 2ac6c5ca8b
* 258000064d
* ba50c19e82
* 5ab9d39253

A patch that includes the `std::error_code` changes here is
upstream in vcpkg, so that will be able to be removed when
updating to the next release.
2024-01-01 06:57:03 -08:00
Victor Zverovich
f5ca178c12 Complete scan_handler 2023-12-31 18:00:14 -08:00
Victor Zverovich
138a64bfb1 Privatization 2023-12-31 15:06:17 -08:00
Victor Zverovich
4aa24f54cd Implement visitor for scan 2023-12-31 09:53:24 -08:00
Victor Zverovich
e33c1568c3 Implement scan argument access 2023-12-31 08:49:29 -08:00
Victor Zverovich
23826669cf Cleanup error handling 2023-12-31 07:51:57 -08:00
Victor Zverovich
8e6b2541a6 Apply coding conventions 2023-12-30 16:07:35 -08:00
Victor Zverovich
5ddd0cad15 Add a visitor for scan arguments 2023-12-30 07:43:21 -08:00
Victor Zverovich
55190dadb5 Cleanup chrono test 2023-12-29 16:34:42 -08:00
Victor Zverovich
4a6f0be5b6 Improve scan test 2023-12-29 08:32:38 -08:00
Victor Zverovich
662d784157 Fix scan test 2023-12-29 08:21:10 -08:00
Victor Zverovich
d5823aae36 Ceci n'est pas une pipe 2023-12-29 08:11:29 -08:00
Victor Zverovich
d83c1b8d4a Add initial specifier support to scan 2023-12-29 07:30:56 -08:00
Victor Zverovich
bfba2f9e92 Improve iterator handling in scan 2023-12-29 06:34:49 -08:00
Victor Zverovich
a3bf40838f Initial range support in scan 2023-12-29 06:25:57 -08:00
Victor Zverovich
ea1066bbe3 Cleanup test 2023-12-28 16:56:42 -08:00
Victor Zverovich
be57ec7ec0 Fix chrono-test on platforms with 32-bit time_t 2023-12-28 16:36:18 -08:00
Victor Zverovich
47c8f63d02 Remove redundant specifier 2023-12-28 07:32:07 -08:00
Victor Zverovich
4cbf6182ea Remove peek 2023-12-25 10:47:45 -08:00
Victor Zverovich
88d19f5de9 Cleanup scan 2023-12-25 10:28:50 -08:00
Victor Zverovich
62529aad19 Apply coding conventions 2023-12-25 10:20:00 -08:00
Victor Zverovich
eef6dbafbf Refactor file layer in scan 2023-12-25 09:32:29 -08:00
Victor Zverovich
41c2433358 clang-format 2023-12-25 09:09:20 -08:00
Victor Zverovich
0a9d08fefd Simplify fallback 2023-12-25 09:00:03 -08:00
Victor Zverovich
e450b7aeb3 Implement locking 2023-12-25 08:48:45 -08:00
Victor Zverovich
c5a85f8d7d Handle end of input in scan 2023-12-25 07:18:23 -08:00
Victor Zverovich
c4f2de4933 Improve scan 2023-12-25 06:34:15 -08:00
Victor Zverovich
6f9a816786 Enable test 2023-12-23 10:14:27 -08:00
Victor Zverovich
e7875ae0fa Fix formatting of some nested ranges 2023-12-23 09:35:32 -08:00
Victor Zverovich
3eb3aef575 Fix handling of set_debug_format 2023-12-23 08:32:36 -08:00
Victor Zverovich
56d7a8c157 Simplify test 2023-12-23 07:02:58 -08:00
Victor Zverovich
44dd6c0e09 Add glibc support to scan 2023-12-22 13:43:20 -08:00
Victor Zverovich
3a0f4af4e9 Refactor file layer 2023-12-22 11:27:22 -08:00
Victor Zverovich
1ca1a4a7a9 Update scan test 2023-12-22 08:22:00 -08:00
Victor Zverovich
3a2c50d4ac Cleanup test 2023-12-19 15:28:10 -08:00
Victor Zverovich
18c43a214c Cleanup test 2023-12-19 13:46:48 -08:00
Vladislav Shchapov
6b07fff0d9
Make hex float test more stable on different libc (#3762)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2023-12-19 11:03:06 -08:00
Vladislav Shchapov
923005bd4f
Add stdlib version check for C++20 (#3754)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2023-12-17 08:33:17 -08:00
Victor Zverovich
afa85e46c3 Apply clang-format 2023-12-17 07:32:22 -08:00
js324
6025bd7c37
Add localized formatting to non-decimal presentation types of ints (#3750) 2023-12-15 07:51:25 -08:00
Kefu Chai
274ba2645b
allow format_as() to format reference (#3739)
before this change, format_as() is unable to format a type which
has `auto format_as() -> const another_type&`, and `another_type`
is formattable. because `format_as_result` maps the result type
as it is, and the compiler refuses to compile
`static_cast<T*>(nullptr)`, where T is a reference type. but
it would be handy if we could use `format_as()` to format types
which, for instance, owns / inherit from a formattable type, and
delegate the formatter to these variables instead without creating
a copy of them.

in this change:

* instruct `format_as_result` to map the
  result type to the decayed type, so that `type` can be the decayed
  type of result type, and this also enables `type` to be formattable,
  as long as the decayed type is formattable.
* corresponding test is added to format-test.cc

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2023-12-10 08:49:53 -08:00
Victor Zverovich
9048add999 Report out-of-range errors in chrono 2023-12-10 08:28:50 -08:00
Ikko Eltociear Ashimine
9a6fd11a56
Fix typo in gmock-gtest-all.cc (#3747)
syntetic -> synthetic
2023-12-09 08:13:20 -08:00
js324
573d74395b
error on bool arg w/ char pres_type (#3734) 2023-12-05 13:45:10 -08:00
Victor Zverovich
5d55375a8a Experiment with scan buffering 2023-12-03 08:09:36 -08:00
Ivan Shapovalov
71bd51e6c2
Implement %j specifier for std::chrono::duration (#3732)
This adds support for `%j` presentation type for duration types:

> "If the type being formatted is a specialization of duration, the decimal
number of days without padding."

Fixes #3643.
2023-12-03 07:29:58 -08:00
Victor Zverovich
f575089243 Simplify test 2023-12-01 08:52:42 -08:00
Félix-Antoine Constantin
99b9fbf8ef
Add formatter for std::source_location (#3730) 2023-11-30 10:05:56 -08:00
Victor Zverovich
04718008ab Minor cleanup 2023-11-30 07:43:31 -08:00
js324
b87ea22e29
Add native and generic representation for filesystem::path format spec (#3729) 2023-11-29 14:49:36 -08:00
Victor Zverovich
5cfd28d476 Experiment with FILE in scan 2023-11-26 10:01:42 -08:00
Corentin Schreiber
7f8d419115
Fix overflow in time_point formatting with large dates (#3727)
* Fix #3725 and rename fmt_safe_duration_cast to fmt_duration_cast
The function is now more generic and will handle all casts. It also
takes care of toggling safe vs unsafe casts using
FMT_SAFE_DURATION_CAST.

* Refactor fmt_duration_cast to put #ifdef inside the function

* Fix compilation error with FMT_USE_LOCAL_TIME
2023-11-25 08:36:55 -08:00
Victor Zverovich
ccc9ab7bf9 Include correct header 2023-11-25 08:23:41 -08:00
Victor Zverovich
c4283ec471 Fix a libc++ warning and move the test to the right place 2023-11-25 08:20:53 -08:00
Victor Zverovich
c3f9a73445 Apply coding conventions 2023-11-25 07:43:44 -08:00
Victor Zverovich
ffa5b14fe3 Make gtest-extra-test more portable 2023-11-24 10:09:21 -08:00
Victor Zverovich
bea7ecc710 Disable locale-specific tests on OpenBSD 2023-11-24 09:45:56 -08:00
Victor Zverovich
8a39388516 Fix the default locale in ostream_formatter 2023-11-24 09:24:43 -08:00
Victor Zverovich
c13753a70c Fix handling of invalid Unicode in precision 2023-11-18 08:36:11 -10:00
Ole Bøe
864a8b5f38
fix: support optional<T> with format_as(T) (#3713)
Formatting a std::optional<T> where T had a custom format_as(T) function failed to compile with clang,
due to set_debug_format being hidden by private inheritance. This fix makes the function available through a using clause.
2023-11-16 15:02:33 -08:00
Victor Zverovich
649fe0fc8b Fix handling of null strings with the s specifier 2023-11-15 17:03:01 -10:00
Victor Zverovich
19276d7325 Fix an inconsistentcy between to_string and format 2023-10-28 08:05:11 -07:00
June Liu
2ac6c5ca8b
Fix error C2668 on Windows with option /std:c++latest (#3680)
* Namespace-qualify to avoid ambiguity with std::format_to for format-test.cc

When build fmt with MSVC under option /std:c++latest, it failed due to `error 2668: 'std::format_to': ambiguous call to overloaded function`, so add namespace to qualify the call to format_to to avoid this issue.
2023-10-16 09:54:02 -07:00
Victor Zverovich
130cf54cbc Use a more sensible locale in tests 2023-10-08 10:49:21 -07:00
Victor Zverovich
8e0ca0589f Use a more sensible locale in tests 2023-10-08 09:21:02 -07:00
Victor Zverovich
bf497ac068 Cleanup test 2023-10-08 07:30:08 -07:00
Richard Kellnberger
bb8d50f04b
add a suffix for days and fix the one for minutes (#3664) 2023-10-07 12:45:34 -07:00
Giel van Schijndel
f76603f21e
fix: make std::bitset formattable again (#3660)
* fix: make std::bitset formattable again

It used to be formattable via operator<<(ostream&) implicitly. Make it
formattable again, but this time via formatter specialization.

* fix: make nested_formatter constexpr default constructible
2023-10-03 09:53:47 -07:00
Vladislav Shchapov
492a99c964
Fix error: 'char_traits<custom_char>' is deprecated: char_traits<T> for T not equal to char, wchar_t, char8_t, char16_t or char32_t is non-standard and is provided for a temporary period. It will be removed in LLVM 18, so please migrate off of it. [-Werror,-Wdeprecated-declarations] (#3634)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2023-09-18 15:46:17 -07:00
Victor Zverovich
0e01e46c11 Implement nested formatter 2023-09-18 14:21:21 -07:00
Dana Jansens
f6ca4ea199
Avoid a space in the UDL definition (#3610)
* Avoid a space in the UDL definition except on GCC before 4.9

Clang 18 has grown a warning about the space being deprecated which
is enabled by default in their nightly binaries. However GCC before 4.9
will reject the UDL definition unless there is a space there, so we need
to keep the space conditionally for it.

* Remove UDLs on GCC before 4.9 to simplify things

GCC before 4.9 rejects the syntax that is now
rejected on more modern compilers.

* Disable compile-error-test on GCC < 4.9

This avoids the UDL tests failing as GCC < 4.9 can not parse UDLs
without a space, but the space is malformed in modern compilers.
2023-09-18 08:09:42 -07:00
Gleb Mazovetskiy
a8a73da7e4
Add an option to avoid wchar APIs on Windows (#3636)
With this, fmt can be used on Windows 98 and the Original Xbox with:

    set(FMT_OS OFF)

It is not exposed as a CMake option but one can define it manually
in the fmt subproject, e.g.:

    target_compile_definitions(fmt PUBLIC FMT_WINDOWS_NO_WCHAR)

Fixes #3631
2023-09-17 08:49:51 -07:00
Vladislav Shchapov
016b1faede
Fix symbol leak (#3627)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2023-09-16 07:26:36 -07:00
Victor Zverovich
d4987546a4 Add an experimental nested formatter 2023-09-10 11:56:55 -07:00
Victor Zverovich
ca608547e5 Workaround a C++11 issue 2023-09-04 10:07:14 -07:00
Victor Zverovich
a79a979828 Cleanup ranges test 2023-09-04 09:19:40 -07:00
Victor Zverovich
457bb6a98f Merge the copyright comment since there are many contributors 2023-09-04 09:09:01 -07:00
Alex Guteniev
9b74160817
atomic_flag formatting (#3594) 2023-08-25 08:06:10 -07:00
Ben Deane
6c845f57e5
Fix formatted_size with FMT_COMPILE and format specs (#3588)
Addresses issue #3586
2023-08-15 06:45:48 -07:00
Zhanwei Wang
5a866fe852
Add formatter for std::atomic (#3574) 2023-08-14 08:34:31 -07:00
Vladislav Shchapov
e150ea0cc2 to_string supports types with format_as
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2023-08-13 08:39:52 -07:00
Victor Zverovich
d424862319 Fix fixed precision handling during rounding in long double 2023-08-07 13:56:53 -07:00
Vladislav Shchapov
aeb6ad4dd0
Added formatter for bit_reference-like types (#3570)
* Add test for std::vector<bool>::reference

Co-authored-by: Felix <felix-antoine.constantin@polymtl.ca>
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

* Add test for std::bitset<N>::reference

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

* Add test for const std::bitset<N>::reference and const std::vector<bool>::reference

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

* Add bit_reference-like formatter

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

* Use std::addressof

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

---------

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
Co-authored-by: Felix <felix-antoine.constantin@polymtl.ca>
2023-08-06 11:36:30 -07:00
5chmidti
8a4bec5cf5
fix ambiguous formatter lookup for flat_set (#3561) 2023-07-31 09:26:33 -07:00
Victor Zverovich
3dec65b7fd Use replacement character in path 2023-07-22 09:07:28 -07:00
Victor Zverovich
ac0ab8eff3 Improve path formatter 2023-07-20 17:49:12 -07:00
Victor Zverovich
e475859042 Fix overspecified tests 2023-07-20 14:09:22 -07:00
Victor Zverovich
436c131d4c Optimize compiled format_to_n 2023-07-20 12:35:01 -07:00
Victor Zverovich
388bc296b7 Fix fixed formatting of small long doubles 2023-07-20 12:06:05 -07:00
Victor Zverovich
9bea6ec04a Don't use deprecated checked_array_iterator 2023-07-20 07:12:06 -07:00
Victor Zverovich
661b23edeb Call parse on empty specs at compile time 2023-07-15 22:20:29 -07:00
Victor Zverovich
606f85f8b2 Workaround brain-damaged conversions 2023-06-26 16:06:24 -07:00
Victor Zverovich
9158bea1e1 Remove old grisu tests 2023-06-18 18:15:09 +03:00
Victor Zverovich
0b8404918e Remove get_cached_power 2023-05-27 09:19:50 -07:00
Nico Rieck
171a020c82
Pass correct Char to base format_as formatter (#3457) 2023-05-24 14:50:47 -07:00
Victor Zverovich
d8f04e3995 Simplify ceil 2023-05-24 11:51:34 -07:00
Vladislav Shchapov
5e988f8dfa Remove is_constant_evaluated() check
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2023-05-24 09:07:12 -07:00
Vladislav Shchapov
19b17618a9 Make constexpr ceil
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2023-05-24 09:07:12 -07:00
Victor Zverovich
858e528abd Use dragon in constexpr 2023-05-23 06:30:09 -07:00
timsong-cpp
08ef0d0842
fix formatter<char*> (#3432) 2023-05-20 06:32:21 -07:00
Victor Zverovich
821f8cdb45 Detemplatize printf more 2023-05-17 12:34:12 -07:00
Victor Zverovich
2f605cc896 Deprecate wide printf 2023-05-17 08:58:55 -07:00
Victor Zverovich
616a493786 Revert Char* formatter removal 2023-05-17 06:11:11 -07:00
Victor Zverovich
aeedac5884 Remove unneeded specialization 2023-05-13 07:46:47 -07:00
Vladislav Shchapov
eaa6307691
Make hex float test more stable (#3434)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2023-05-13 06:34:33 -07:00
Victor Zverovich
ea49c91cd1 Cleanup argument construction 2023-05-11 18:43:39 -07:00