2839 Commits

Author SHA1 Message Date
Victor Zverovich
d9063baf22 Fix perf regression in ostream::print 2023-10-15 08:23:36 -07:00
Victor Zverovich
f7542c5761 Apply clang-format 2023-10-14 06:52:43 -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
Victor Zverovich
72e883e163 Diagnose unsupported code unit types 2023-10-01 08:37:21 -07:00
Victor Zverovich
2dd4fa8742 Remove an ostream hack incompatible with libc++ 17 2023-09-26 12:42:37 -07:00
Victor Zverovich
06b20387ae Optimize fractional_part_rounding_thresholds 2023-09-22 13:26:57 -07:00
Victor Zverovich
649f2460db Apply clang-format 2023-09-22 09:07:43 -07:00
Greg Sjaardema
7529af8f99
Workaround intel bug (#3652)
* Workaround intel bug

Potential workaround / restructure for the intel bug that is the cause of #3645.

Make the variable in the external struct instead an embedded static constexpr variable in the only function that uses the variable.

* Finish the proposed change -- remove struct accessor

* Refactor proposed intel fix.

Moved variable out of function to avoid specialization on Float.  Made it a separate function that is called from format_float.

* Fix incorrect function name.

* Add missing inline.
2023-09-20 18:57:55 -07:00
Giel van Schijndel
a3a74fa7f3
fix: mark fmt::streamed() as constexpr (#3650)
Because it's just performing a very basic type conversion that can be
done at constexpr time.

My use case simultaneously creates a
`fmt::basic_format_string<some_type_conversion<Args...>>` instance and
performs `some_type_conversion<Args>(args)...`. `some_type_conversion`
optionally applies `fmt::streamed(arg)` to a subset of types. This needs
to be `constexpr` because `basic_format_string`'s constructor is
`consteval`.
2023-09-19 08:42:34 -07:00
Sascha Scandella
8ef4db4b96
Use datatype of underlying data (#3647) 2023-09-19 07:31:36 -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
Victor Zverovich
bfdf50d183 Minor cleanup 2023-09-16 08:16:59 -07:00
Chloe
571a9b7b26
Replace usage of C++17 library feature with C++11 (#3638) 2023-09-16 08:07:03 -07:00
Victor Zverovich
6c088be8ec Cleanup handling of visibility 2023-09-16 07:40:08 -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
5bdce181f1 Mark styled_arg as a view to prevent lifetime issues 2023-09-09 08:16:45 -07:00
cyy
a4b7b24b7b
fix redundant redeclaration of ‘constexpr’ static data member (#3630) 2023-09-08 16:20:32 -07:00
Vinay Yadav
fac60bd4f5
Remove type cast as mxe(mingw32) compiler complains about useless-cast (#3624)
Remove type cast as mxe(mingw32) compiler complains about useless-cast
when FMT_PEDANTIC && FMT_WERROR options are enabled
"""
error: useless cast to type 'class fmt::v10::basic_format_args<fmt::v10::basic_format_context<fmt::v10::appender, char> >' [-Werror=useless-cast]
 1449 |                      basic_format_args<buffer_context<char>>(args));
"""
2023-09-05 07:37:27 -07:00
Victor Zverovich
84e6661517 Workaround a gcc 6.4 issue 2023-09-04 11:23:14 -07:00
Victor Zverovich
e1fc481d65 Merge the copyright comment since there are many contributors 2023-09-04 06:54:07 -07:00
Victor Zverovich
28e2d3b640 Bump version 2023-08-26 08:29:50 -07:00
Alex Guteniev
9b74160817
atomic_flag formatting (#3594) 2023-08-25 08:06:10 -07:00
Victor Zverovich
a21690bdfa Coding conventions 2023-08-25 07:46:32 -07:00
Mathew Benson
e786824053 Refactor Improvement on umul128 function
- Removal of direct access to members of uint128_fallback and instead
  create the values at the callsite and pass them via the constructor of
  uint128_fallback on the return statement.
2023-08-25 13:21:52 +03:00
Mathew Benson
2b20d7be6f Refactor To remove friend function private access
- Remove umul128 friend function from uint128_fallback class using
  non-const member access functions instead.
2023-08-24 00:55:43 +03:00
Mathew Benson
1f38ebbdb1 Add condition to include friend function in win32 2023-08-22 23:07:04 +03:00
Mathew Benson
e418179694 Fix for FMT_MODULE not compiling on GCC 2023-08-22 21:11:53 +03:00
lukester1975
cc077a5e3b
Fix FMT_NO_UNIQUE_ADDRESS warning with clang-cl. (#3600)
See https://reviews.llvm.org/D110485 for info.
2023-08-20 10:21:50 -07:00
Mathew Benson
a992b3d1fc
Fix for Compilation Error When Using FMT_MODULE (#3597)
* FMT_EXPORT reorganization to fix compile error

- When compiling with FMT_MODULE, an error was being generated due to
  use of FMT_EXPORT on a declaration within FMT_BEGIN_EXPORT and
  FMT_END_EXPORT on `include/core.h`

- On `include/format.h` had to exclude the function vformat_to by ending
  the export block just before it and beginning a new one after it.
2023-08-20 07:32:36 -07:00
YuHuanTin
bd868f3a51
Improve compatibility with GBK #3598 (#3599) 2023-08-19 08:13:20 -07:00
Victor Zverovich
bbb784fb1b Fix a gcc error about partial specialization after instantiation 2023-08-19 07:22:40 -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
e1acd5f4d9 Bump version 2023-08-12 06:52:15 -07:00
Victor Zverovich
d424862319 Fix fixed precision handling during rounding in long double 2023-08-07 13:56:53 -07:00
Victor Zverovich
7a2f6ac210 Fix a comment 2023-08-07 09:33:45 -07:00
Victor Zverovich
ebb10347c4 Merge branch 'master' of github.com:fmtlib/fmt 2023-08-07 08:18:13 -07:00
Victor Zverovich
1005720169 Clarify that visit_format_arg is deprecated 2023-08-07 08:17:55 -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
razaqq
757564f5cd
add missing inline specifier (#3552) 2023-07-27 12:12:00 -07:00
Jürgen Hock
f4214ae8dd
Use the U literal for unsigned integer constants. (#3549)
Fix MSVC Error C2398 Element '1': conversion from 'int' to 'const uint32_t' requires a narrowing conversion.
2023-07-27 11:43:00 -07:00
Victor Zverovich
aecf80d304
Update a comment 2023-07-26 15:10:12 -07:00
Martin Jeřábek
503d49286d
expose detail::throw_format_error (#3551)
This enables to only #include <fmt/core.h> when defining formatters.
2023-07-26 13:21:38 -07:00
Ozomahtli
4f46cb82f3
Remove std::copy usage. (#3550) 2023-07-26 07:27:01 -07:00
Victor Zverovich
3dec65b7fd Use replacement character in path 2023-07-22 09:07:28 -07:00
Dmitry Alexeev
dbabb305c3
Turn off error-producing NVCC workaround when using c++20 (#3544) 2023-07-21 11:29:15 -07:00
Victor Zverovich
ac0ab8eff3 Improve path formatter 2023-07-20 17:49:12 -07:00
Victor Zverovich
40f35d6f04 Cleanup std formatters 2023-07-20 16:26:27 -07:00
Victor Zverovich
31c2c5679e Cleanup formatters 2023-07-20 15:57:43 -07:00
Victor Zverovich
b2728a3170 Improve path formatter 2023-07-20 15:25:35 -07:00
Victor Zverovich
77e0b0e228 Cleanup chrono formatter 2023-07-20 15:00:59 -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
fb97cb2318 Suppress a bogus stringop-overflow warning 2023-07-20 09:53:54 -07:00
Victor Zverovich
dd5a9691f9 Clarify that data is not null-terminated 2023-07-20 07:36:30 -07:00
Kieran Clancy
72dc4491ea
Fix format_string_checker initialisation order (#3542)
Linter (clang-tidy) complains about uninitialised fields in
format_string_checker since types_ is passed to context_ before being
initialised. Fixes #3541.
2023-07-20 07:30:45 -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
Barry Revzin
de4705f84d
Trying to improve errors in the unformattable case (#3478) 2023-07-01 06:46:04 -07:00
Victor Zverovich
606f85f8b2 Workaround brain-damaged conversions 2023-06-26 16:06:24 -07:00
Tobias Schlüter
a331dbfb65
Fix type in assert message. (#3508)
Reviewed all strings in the file and found no other typos.
2023-06-26 11:35:29 -07:00
Vladislav Shchapov
dd17f89a16
Fix for issue #3492 (#3493)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2023-06-16 02:20:40 -07:00
Victor Zverovich
1daae555b3 Optimize format string compilation 2023-06-15 10:28:23 +03:00
Victor Zverovich
6ad301235f Optimize code unit output in compiled format 2023-06-14 21:13:26 +03:00
Victor Zverovich
5afb1821a9 Update docs 2023-06-13 18:58:15 +03:00
Victor Zverovich
977d887a4e Suppress a bogus warning 2023-06-13 14:01:46 +03:00
Minty-Meeo
c86fe0b8d3
Give basic_memory_buffer allocator [[no_unique_address]] (#3485)
This allows stateless allocators to take up no space while still avoiding the empty base class optimization.
2023-06-13 01:22:19 -07:00
Minty-Meeo
de0757b578
Use FMT_TRY and FMT_CATCH in std.h (#3482)
This naked try-catch block prevents compilation when exceptions are disabled.
2023-06-10 21:28:13 -07:00
Hans-Martin B. Jensen
60fd9941c0
Use correct Char type in std::filesystem::path (#3476)
Godbolt repro:
https://godbolt.org/z/o4bjG6ddo

Co-authored-by: Hans-Martin B. Jensen <haje@eposaudio.com>
2023-06-02 14:12:57 -07:00
Hans-Martin B. Jensen
8abfc145be
Fix MSVC warning in std::chrono::time_point formatter (#3475)
* Fix MSVC warning in std::chrono::time_point formatter

The condition is constexpr causing MSVC level 4 warning:
warning C4127: conditional expression is constant

Changed the code to eliminate the warning

* Use detail::const_check

* Review: revert else condition

---------

Co-authored-by: Hans-Martin B. Jensen <haje@eposaudio.com>
2023-06-02 08:40:34 -07:00
Victor Zverovich
686b3353aa Simplify typeid check 2023-06-01 09:32:44 -07:00
Dana Jansens
35547d6003 Use const_check to silence MSVC warning
The condition is constexpr, so the compiler warns if a runtime check
is used as there's no need to generate code for it.
2023-05-31 09:25:53 -07:00
Dana Jansens
179c7e5a66 Use typeid() only if it's available
On MSVC it is always available, otherwise it depends on whether
RTTI is enabled.
2023-05-31 09:25:53 -07:00
Victor Zverovich
bd393456ed Remove FMT_*_DETAIL_NAMESPACE 2023-05-28 07:33:26 -07:00
Victor Zverovich
6be36af0d4 Remove udl_formatter 2023-05-27 17:16:36 -07:00
Victor Zverovich
2a35eeed8a Remove unused data 2023-05-27 10:47:17 -07:00
Victor Zverovich
256a826d63 Consolidate formatters 2023-05-27 09:19:50 -07:00
Victor Zverovich
6369af37d3 Simplify formatters 2023-05-27 09:19:50 -07: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
Victor Zverovich
ef55d4f52e Suppress a bogus gcc warning 2023-05-22 11:27:20 -07:00
Victor Zverovich
6fe895410d Remove invalid_arg_index 2023-05-21 19:57:17 -07:00
Victor Zverovich
de8d0171a2 Simplify FMT_FORMAT_AS 2023-05-20 18:28:01 -07:00
timsong-cpp
08ef0d0842
fix formatter<char*> (#3432) 2023-05-20 06:32:21 -07:00
Florimond Collette
d60b907f87
Replace mod_inv_25 by explicit value (#3450) 2023-05-18 11:26:19 -07:00
Florimond Collette
4ce086f731
remove code duplication (#3448)
* remove code duplication

* new interface for remove_trailing_zeros(uint32_t& n, int s = 0)

---------

Co-authored-by: Florimond Collette <4939681+florimondcollette@users.noreply.github.com>
2023-05-18 08:27:57 -07:00
Victor Zverovich
821f8cdb45 Detemplatize printf more 2023-05-17 12:34:12 -07:00
Victor Zverovich
0bf6ed7e1d Cleanup printf 2023-05-17 10:53:25 -07:00
Victor Zverovich
e40e04face Detemplatize printf_arg_formatter 2023-05-17 10:05:46 -07:00
Victor Zverovich
0a1c27281a Detemplatize basic_printf_context 2023-05-17 09:29:20 -07:00
Victor Zverovich
2f605cc896 Deprecate wide printf 2023-05-17 08:58:55 -07:00
Victor Zverovich
1d54499ac0 Apply coding conventions 2023-05-17 08:21:13 -07:00
Victor Zverovich
3c6053c535 Cleanup basic_printf_context 2023-05-17 07:57:53 -07:00
Victor Zverovich
4a392adaa7 Remove basic_printf_parse_context 2023-05-17 07:47:42 -07:00
Victor Zverovich
b14913fae5 FMT_MODULE_EXPORT -> FMT_EXPORT 2023-05-17 07:38:06 -07:00
Arnaud Desitter
2117df299c
format-inl.h: address implicit int to bool conversion (#3446) 2023-05-17 06:39:20 -07:00
Victor Zverovich
616a493786 Revert Char* formatter removal 2023-05-17 06:11:11 -07:00
Barry Revzin
9a034b0d55
Always assert in FMT_THROW (#3439) 2023-05-17 06:04:36 -07:00
Victor Zverovich
e0fc0e85e3 Remove unneeded FMT_API 2023-05-16 17:25:20 -07:00
Victor Zverovich
552c43aba9 Improve long formatters 2023-05-14 07:07:36 -07:00
Victor Zverovich
d6846f4ac8 Clarify why byte formatter is in core 2023-05-13 08:04:53 -07:00
Victor Zverovich
aeedac5884 Remove unneeded specialization 2023-05-13 07:46:47 -07:00
Victor Zverovich
697e76ba30 Don't call init_named_args unnecessarily 2023-05-12 11:53:22 -07:00
Victor Zverovich
a425e0ff3b Cleanup xchar API 2023-05-12 07:05:14 -07:00
Victor Zverovich
c36dd825ba Remove unnecessary forwarding 2023-05-12 06:45:49 -07:00
Victor Zverovich
130b8fcdb9 Reduce template instantiations 2023-05-11 20:18:34 -07:00
Victor Zverovich
a47e8419be Cleanup the core API 2023-05-11 19:07:56 -07:00
Victor Zverovich
ea49c91cd1 Cleanup argument construction 2023-05-11 18:43:39 -07:00
Patrick Geltinger
d7592ad8bf
Fix time_point formatting for durations with certain ratios (#3430)
* Fix time_point formatting

* Add timestamps_ratios tests
2023-05-11 15:25:21 -07:00
Victor Zverovich
5780269d57 Improve API safety 2023-05-11 10:19:56 -07:00
Victor Zverovich
b471192160 Fix a comment 2023-05-11 09:39:53 -07:00
Victor Zverovich
8f18e72df5 Improve API safety 2023-05-11 06:32:58 -07:00
Victor Zverovich
93d7cb12f1 Fix formatting 2023-05-10 16:29:47 -07:00
Victor Zverovich
0e4278717b Remove unused macro 2023-05-10 16:27:16 -07:00
Victor Zverovich
93a30a0746 unicode_to_utf8 -> to_utf8 since both sides of conversion are Unicode 2023-05-10 16:26:02 -07:00
Victor Zverovich
5cf2342aa2 Bump version 2023-05-09 15:37:01 -07:00
Victor Zverovich
c984df9815 Remove an unused function from internal class 2023-05-08 13:35:23 -07:00
Victor Zverovich
1e0ce567ef Fix formatting of paths containing invalid Unicode 2023-05-07 10:05:15 -07:00
Vladislav Shchapov
dde8cf3bb7 Unification utf16/utf32 to utf8 conversion
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2023-05-06 08:32:51 -07:00
Victor Zverovich
f61f15cc5b Suppress a false positive in gcc 2023-05-06 06:54:30 -07:00
Daniela Engert
192df93d7b
modules missing pieces (#3399)
- don't export names from `detail`
- put more headers into the global module fragment
- support MSYS2 and Clang
2023-05-05 10:21:18 -07:00
Victor Zverovich
02cae7e48a Improve handling of Unicode in paths 2023-04-30 09:58:59 -07:00
Daniela Engert
f449ca0525
Name vfprintf clashes with the identically named declaration in 'stdio.h' if that happens to be #included into the same TU. Fix this by using qualified name lookup instead of unqualified lookup that also enables ADL. (#3400) 2023-04-23 07:10:57 -07:00
Victor Zverovich
18154cc903 Simplify print 2023-04-22 14:03:40 -07:00
Daniela Engert
c039389223
export names only once (#3392)
names declared to be exported at the point of introduction into a namespace *must not* be (re-)declared as exported later in the TU, e.g. when they are redeclared, defined, or specialized. [module.export]/6

Drive-by fix found during module testing: add a missing `detail::` name qualification
2023-04-22 06:21:06 -07:00
Louis Wilson
93e81bb5d8
Fix C4365 (signed/unsigned mismatch) warning on 32-bit Windows (#3398) 2023-04-20 17:36:05 -07:00
Daniela Engert
18e7a2532b
Remove obsolete msvc workarounds (#3388)
This bug in the modules implementation is fixed since at least msvc 19.34, possibly even earlier like 19.32.
2023-04-19 17:09:51 -07:00
Daniela Engert
0489c19dcb
fix and improve module (#3386)
* export public documented API
* don't export `namespace detail`
* add `std.h` into module
* add missing namespace qualification in `xchar.h`
* fix call to `detail::get_iterator` in `xchar.h`
* fix ambiguous overload of `detail::isfinite` in `chrono.h`
2023-04-18 06:47:01 -07:00
Victor Zverovich
d8a2698e6c Fix compilation as a C++20 module with gcc 13 2023-04-14 09:49:07 -07:00
June Liu
33f7150778
Fix error C2668 on msvc (#3378) 2023-04-11 06:27:28 -07:00
Victor Zverovich
c98e5a08a4 Fix modular build on clang 2023-04-10 12:07:25 -07:00
Victor Zverovich
77eeb71830 Remove unused headers 2023-04-10 09:08:19 -07:00
Victor Zverovich
1d0257e4c0 FMT_MODULE_EXPORT_* -> FMT_EXPORT_* 2023-04-10 08:33:39 -07:00
Victor Zverovich
4613d48fd3 FMT_EXPORT -> FMT_LIB_EXPORT 2023-04-10 08:24:23 -07:00
Victor Zverovich
4a4a2a2bd6 Fix diagnostics 2023-04-09 09:30:20 -07:00
Victor Zverovich
fce74caa15 Disable problematic implicit conversions 2023-04-09 09:08:46 -07:00
Victor Zverovich
02bf4d1c1c Disable to_string_view ADL 2023-04-09 08:49:05 -07:00
Victor Zverovich
466e0650ec Remove problematic workaround 2023-04-09 08:04:11 -07:00
Björn Schäpers
7f46cb75b8
ranges: Fix extra semi (#3374) 2023-04-06 08:31:07 -07:00
Vladislav Shchapov
97aedeab48
Workaround a double-double hexfloat format (#3366)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2023-04-01 07:19:23 -07:00
Victor Zverovich
bce8d4ed08 Remove stray comment 2023-03-27 11:04:00 -07:00
Victor Zverovich
a91c7b286d Cleanup the core API 2023-03-26 21:07:26 -07:00
Victor Zverovich
19c074e477 Remove deprecated fallback formatter 2023-03-26 08:45:06 -07:00
Victor Zverovich
41cfc739fe Generalize format_as 2023-03-26 07:37:51 -07:00
Victor Zverovich
6002ddf825 Remove a deprecated option 2023-03-19 12:17:43 -07:00
Victor Zverovich
6549ffde8e Improve format_as safety 2023-03-19 12:09:54 -07:00
Alecto Irene Perez
d9bc5f1320 Fix code causing spurious Wstringop-overflow warning
See #2989, #3054, and others
2023-03-18 09:29:54 -07:00
Victor Zverovich
9c5cd998d1 Remove unused functions 2023-03-18 08:40:16 -07:00
Barry Revzin
93bfa05382
%T is %H:%M:%S (#3349) 2023-03-18 07:16:22 -07:00
TheOmegaCarrot
d8e1c4265a
fix case of variant which is valueless by exception (#3347)
Co-authored-by: theomegacarrot <theomegacarrot@gmail.com>
2023-03-18 07:07:06 -07:00
tmartin-gh
e1720c0e51
Fix CUDA nvcc warning fmt/include/fmt/core.h(295): warning #1675-D: unrecognized GCC pragma (#3352) 2023-03-17 11:35:35 -07:00
Gleb Mazovetskiy
7f882918eb
write_floating_seconds: Fall back to ::round (#3343)
On some toolchains, `std::round` is not available.

Fixes #3342
2023-03-12 09:34:19 -07:00
Shawn Zhong
cbc7b8d5c1
Cleanup dead variable (#3338) 2023-03-10 09:17:43 -08:00
Vladislav Shchapov
050293646f
Path is not escaped twice in the debug mode (#3321)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2023-03-05 08:01:06 -08:00
Cloyce D. Spradling
3daf33837c
Enable consteval for Xcode 14.0.1 and later (#3331)
Co-authored-by: Cloyce D. Spradling <cloyce_spradling@apple.com>
2023-03-04 09:22:43 -08:00
Victor Zverovich
e0748e61dd Fix recursion check in range formatting 2023-03-04 08:20:32 -08:00
Victor Zverovich
98699719f8 Make # handling consistent with std::format 2023-02-26 10:15:16 -08:00
Vladislav Shchapov
73b7cee7fb
Fix for issue #3325 (#3326)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2023-02-26 06:59:41 -08:00
tom-huntington
5b8302079d
Add optional support (#3303) 2023-02-25 06:45:56 -08:00
luzpaz
3a69529e8b
Fix various typos (#3312)
Found via `codespell -q 3 -S ./test/gtest -L "fo,pres,seh,wronly"`
2023-02-21 15:14:41 -08:00
Victor Zverovich
76f520835f Call element parse in tuple parse 2023-02-20 12:54:20 -08:00
Victor Zverovich
507c3042d8 class -> typename 2023-02-18 10:23:42 -08:00
Victor Zverovich
1741e90dec Always call parse in range formatter 2023-02-18 09:58:37 -08:00
Froster
b5c2f74f45
change sopen_s to wsopen_s (fmtlib#3234) (#3293) 2023-02-16 11:17:55 -08:00
Russell Greene
6e6eb63770 [msvc] fix warning about non-inline variable 2023-02-11 09:45:13 -08:00
Victor Zverovich
655046d24f Fix container adaptor formatting 2023-02-10 09:45:37 -08:00
Shawn Zhong
581c6292c9
Add formatters for container adapters (#3279) 2023-02-08 17:25:41 -08:00
Shawn Zhong
7718eeeacc
Implement glibc ext for sec, min, and hour (#3271) 2023-02-08 09:22:58 -08:00
Victor Zverovich
44e0eea94e Use FMT_HAS_INCLUDE and apply clang-format 2023-02-08 07:19:10 -08:00
Roman-Koshelev
99070899b7
Fix errors setting of FMT_USE_FLOAT128 (#3259) 2023-02-08 07:15:02 -08:00
Barry Revzin
05e3a9233a
Allowing formatting non-copyable ranges. (#3290) 2023-01-27 12:29:57 -08:00
Ivan Shynkarenka
70db193f09
Visual Studio 2022: fmt/format-inl.h(1145,60): warning C4310: cast truncates constant value #3287 (#3288) 2023-01-26 11:46:30 -08:00
Victor Zverovich
a2c05a10ec Workaround a bug in MSVC <= 19.22 2023-01-25 10:34:28 +13:00
Victor Zverovich
cae9bf45b9 Simplify apidoc comments 2023-01-25 09:32:03 +13:00
Shawn Zhong
87c066a35b
Implement println (#3267) 2023-01-24 12:30:00 -08:00
Vladislav Shchapov
9409b2e4d8
Workaround for incompatibility between libstdc++ consteval-based std::is_constant_evaluated() implementation and clang-14 (#3281)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2023-01-22 11:29:34 -08:00
jk-jeon
f89cd276f7
Refactor countl_zero fallback (#3276) 2023-01-17 15:04:34 -08:00
Victor Zverovich
240b728d81 Report an error on overflow 2023-01-18 11:52:33 +13:00
Shawn Zhong
dfbb952b2c
Fix empty spec for time point (#3275) 2023-01-16 11:48:00 -08:00
Shawn Zhong
39971eb336
Fix localized format for float-point numbers (#3272) 2023-01-15 11:47:24 -08:00
jk-jeon
0f42c17d85
Implement a new formatting algorithm for small given precision (#3269)
Implement the formatting algorithm for small given precision discussed in https://github.com/fmtlib/fmt/issues/3262 and https://github.com/fmtlib/fmt/pull/2750
2023-01-14 11:30:20 -08:00
Kenny Weiss
bfc0924eac
Bugfix for fmt::printf on Power9 architecture with the XL compiler (#3256) 2023-01-13 11:36:00 -08:00
Shawn Zhong
676c2a107e
Fix negative subsec for time_point (#3261) 2023-01-11 11:36:50 -08:00
Shawn Zhong
dda53082be
Support fill, align & width for time point (#3260) 2023-01-09 11:25:31 -08:00
Victor Zverovich
2622cd23e6 Simplify arg_mapper 2023-01-03 16:35:21 -08:00
Victor Zverovich
9e4a54fa6e Disable remaining implicit conversions 2023-01-03 12:08:42 -08:00
Victor Zverovich
9ce6480676 Disble deprecated implicit enum conversions 2023-01-03 10:24:31 -08:00
Victor Zverovich
9121f9b1d3 Enable format_as for classes 2023-01-03 08:58:23 -08:00
Victor Zverovich
b7535365b2 Enable format_as for non-integral types 2023-01-02 13:37:13 -08:00
Victor Zverovich
0ec65d99aa Merge parse_presentation_type into parse_format_specs 2023-01-02 09:19:32 -08:00
Victor Zverovich
71e4e02722 Cleanup vprintf 2023-01-02 08:37:00 -08:00
Victor Zverovich
aad546baa5 Simplify presentation type parsing 2023-01-01 16:14:17 -08:00
Victor Zverovich
14a69fcc54 Use parse_align 2023-01-01 10:44:55 -08:00
Victor Zverovich
bf34ffd33f Refactor format string parsing 2023-01-01 10:21:47 -08:00
Victor Zverovich
6056e07125 Simplify symbols 2022-12-30 19:35:05 -08:00
Victor Zverovich
aa99b86409 Minor cleanup 2022-12-30 18:51:15 -08:00
Victor Zverovich
6ade2eb4e5 Inline all_int_set 2022-12-30 17:05:08 -08:00
Victor Zverovich
caa6974942 Simplify parse functions 2022-12-30 16:34:36 -08:00
Victor Zverovich
a73a9b6a84 Refactor format string checks 2022-12-30 16:03:41 -08:00
Victor Zverovich
72785a3aba Cleanup write 2022-12-30 13:53:55 -08:00
Victor Zverovich
0c3dd5ddd7 Remove redundant check 2022-12-30 12:55:19 -08:00
Victor Zverovich
739b600f40 Remove iterator shenanigans 2022-12-30 12:37:22 -08:00
Victor Zverovich
a05ba44df8 Simplify format string parsing 2022-12-30 11:23:42 -08:00
Victor Zverovich
ffb9b1d13c Improve handling of signed types 2022-12-30 10:31:39 -08:00
Victor Zverovich
32190859ec Fix handling of char 2022-12-30 09:11:42 -08:00
Victor Zverovich
8fe4d97d5e Reduce template instantiations 2022-12-30 08:44:23 -08:00
Orvid King
7e5a959564
Fix build with MSVC C++20 modules (#3254)
When using fmt with C++20 modules under MSVC, it can end up requiring certain things to have storage that would not otherwise have needed to. Since I didn't see anything that was already doing detection for `inline constexpr` variable support, I've just moved the entire thing into the only function where it's used.
2022-12-28 19:58:57 -08:00
Victor Zverovich
7ad48c1f65 Cleanup core.h 2022-12-26 09:14:15 -08:00
Victor Zverovich
a921a596e7 Cleanup core.h 2022-12-26 07:46:31 -08:00
Victor Zverovich
3e762fdf5c Use ignore_unused 2022-12-26 06:57:21 -08:00
Victor Zverovich
79981a2528 Cleanup ranges formatting 2022-12-25 20:05:20 -08:00
Victor Zverovich
bd12aaa98e Simplify format string parsing 2022-12-25 12:31:38 -08:00
Victor Zverovich
b8f36207c9 Simplify format string parsing 2022-12-25 11:47:43 -08:00
Victor Zverovich
32c4390704 Minor cleanup 2022-12-25 08:59:25 -08:00
Victor Zverovich
3a5e19fbf5 Minor cleanup 2022-12-25 08:42:16 -08:00
Victor Zverovich
dfb857ebef Refactor format spec parsing 2022-12-25 07:25:32 -08:00
Victor Zverovich
9ea9b6bcb1 Cleanup arg id parsing 2022-12-24 16:33:57 -08:00
Victor Zverovich
2b0ff62a7f Remove unused template arg from format_string_checker 2022-12-24 15:46:34 -08:00
Victor Zverovich
d1745084e0 Simplify parse context 2022-12-24 15:20:24 -08:00
Victor Zverovich
407e7b7b6d basic_format_specs -> format_specs 2022-12-24 14:34:50 -08:00
Victor Zverovich
3cf9794755 Cleanup format string parsing 2022-12-24 13:47:20 -08:00
Victor Zverovich
934c8e5f76 Refactor precision parsing 2022-12-24 13:29:23 -08:00
Shawn Zhong
fc96938345 Remove empty semicolon 2022-12-24 09:54:55 -08:00
Victor Zverovich
f0ab112c34 Cleanup parsing 2022-12-24 09:40:35 -08:00
Shawn Zhong
a585571e90 Ignore 0 character with align 2022-12-23 19:36:05 -08:00
Victor Zverovich
840ec8569d Cleanup width handlers 2022-12-23 19:18:35 -08:00
Victor Zverovich
1dadeb8a33 Refactor width parsing 2022-12-23 18:29:59 -08:00
Victor Zverovich
275b4b3417 Remove obsolete parse-benchmark 2022-12-23 12:50:08 -08:00
Vladislav Shchapov
e004f1d699 Fix for issue #3241
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-12-23 12:26:20 -08:00
Victor Zverovich
bde1a6070d Simplify fill and alignment parsing 2022-12-23 10:52:56 -08:00
Victor Zverovich
6a186bcd66 Localize FMT_USE_LOCAL_TIME 2022-12-21 14:52:52 -08:00
Shawn Zhong
8c56919bd2 Check chrono spec starts with % 2022-12-21 14:40:30 -08:00
Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)
115001a3b1 Formatting of system clocks ought to be to UTC, not to local time.
This improves standards conformance of fmt.
2022-12-21 14:23:02 -08:00
Victor Zverovich
b90895412f Fix formatting of named arguments with locale 2022-12-15 09:59:40 -08:00
Vladislav Shchapov
d072f1dc69 Fix for issue #3228
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-12-14 13:49:36 -08:00
Vladislav Shchapov
c06e0b4ede Extract timezone offset from timezone conversion functions
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-12-10 10:13:53 -08:00
Vladislav Shchapov
1bf302a4ea Implement %Ez, %Oz for chrono formatter
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-12-10 10:13:53 -08:00
Victor Zverovich
1a854b4aa5 Clarify what mod_inv_5 is 2022-12-04 08:36:03 -08:00
Radek Brich
62ceb181b1 fix #3105 - Compile-time error when mixing named argument with automatic indexing 2022-12-04 08:13:26 -08:00
Maksymilian Czudziak
b0c8263cb2 include/fmt/core.h: copy constructors removal 2022-11-30 16:44:42 -08:00
Vladislav Shchapov
d24be2e95c Add countl_zero function
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-11-30 12:25:01 -08:00
Victor Zverovich
8d50d814db Fix a chrono formatting issue found by fuzzing 2022-11-30 11:04:51 -08:00
Victor Zverovich
fae6f7e081 Optimize range formatter 2022-11-26 08:50:46 -08:00
Vladislav Shchapov
91c024ed33 Rename leading_v -> leading_xdigit
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-11-25 09:08:40 -08:00
Vladislav Shchapov
31364732dc Replace snprintf-based hex float formatter with internal implementation
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-11-24 07:15:46 -08:00
Vladislav Shchapov
74d55a4938 Add missing operators
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-11-24 07:15:46 -08:00
Vladislav Shchapov
81ebe70b9b Fix warning: a class type that is not trivially copyable passed through ellipsis (EDG frontend)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-11-22 10:51:00 -08:00
Hans-Martin B. Jensen
7df30f91ae
Format unique_ptr with custom deleter (#3177)
* Format unique_ptr with custom deleter

Added deleter type to fmt::ptr unique_ptr overload. Deleter type is
part of the unique_ptr type.

* Review: apply clang-format

Co-authored-by: Hans-Martin B. Jensen <haje@eposaudio.com>
2022-11-13 21:54:32 -08:00
Victor Zverovich
fc07217d85 Make utf-8 detection compatible with gbk 2022-11-02 15:42:47 -07:00
Vladislav Shchapov
cb7373b469
Replace format with FMT_STRING. (#3162)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-11-02 13:17:16 -07:00
Stepan Ponomaryov
795ed8abf5
Add precision modifier for seconds in chrono format (#3148)
Co-authored-by: Stepan Ponomarev <stepan.ponomarev@itiviti.com>
2022-11-02 11:58:51 -07:00
Barry Revzin
66d71a1b35
Fixing formatting of range of range of char. (#3158) 2022-11-02 11:04:54 -07:00
Ihor Dutchak
80f8d34427
fmt::ostream - aggregate buffer instead of inheriting it (#3139)
Some MSVC-specific behavior:
When class fmt::ostream inherits detail::buffer - the last gets implicitly exported when fmt is built as a shared library.
Unless os.h is included, the compiler assumes detail::buffer is not externally exported and instantiates a local copy of it, which causes ODR violation.
With aggregation - there is no extra exporting of detail::buffer symbols.
2022-10-23 07:21:36 -07:00
Stepan Ponomaryov
64965bdc96
Add locale getter in tm_writer (#3147)
* Add locale getter in tm_writer

* Apply clang-format

Co-authored-by: Stepan Ponomarev <stepan.ponomarev@itiviti.com>
2022-10-20 10:22:03 -07:00
Vladislav Shchapov
e1ffa7655d
Fix warning: conditional expression is constant. (#3150)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-10-20 07:49:53 -07:00
Vladislav Shchapov
f67dbc9811
Remove duplicate implementation (#3144)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-10-17 11:15:28 -07:00
Vladislav Shchapov
cd7202e039
Fix overflow error (#3143)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-10-16 14:04:55 -07:00
Vladislav Shchapov
51d3685efe
Remove duplicate template parameter. (#3142)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-10-14 16:34:24 -07:00
Patrick Roocks
9254cfa6f0
Support formatting of subseconds (#3115)
* Timestamp formatting shall print also subseconds, fixed a bug for fractional durations
2022-10-12 14:33:53 -07:00
Ihor Dutchak
cfb34a0607
Avoid using uint as a type name (#3137)
Sometime `uint` is defined as a global type by the project's code directly or by some 3rdparty libraries (e.g. Qt or OpenCV).
Some versions of MSVC (e.g. v16.11.15) gives a type shadowing warning:
```
3rdparty\fmtlib\fmt\include\fmt/format.h(3251): warning C4459: declaration of 'uint' hides global declaration
opencv2/core/hal/interface.h(45): note: see declaration of 'uint'
```
This also causes a compilation failure when `/WX` is used.
2022-10-12 10:53:47 -07:00
Vladislav Shchapov
d2c47c0df2
Fix broken condition (#3129)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-10-07 13:46:45 -07:00
Victor Zverovich
491c32cbd9 Workaround gcc bug 103879 2022-10-05 21:12:38 -07:00
Vladislav Shchapov
662adf4f33
Move formatter<std::error_code> from fmt/os.h to fmt/std.h (#3125)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-10-01 17:46:09 -07:00
Vladislav Shchapov
ad91cab374
Normalization of stdlib inline namespace names (#3119)
* Normalization of stdlib inline namespace names

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

* Remove all subnamespaces with names matching "__*" mask

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

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-09-29 09:52:38 -07:00
Patrick Roocks
ad719619cc
Support formatting of std time_point with utc_clock (#3110) 2022-09-28 07:31:53 -07:00
huangqinjin
48f525d025 Add basic_format_string::get() 2022-09-22 19:50:04 -07:00
Victor Zverovich
0b5cb18b71 Use buffering in to_string to avoid bloat 2022-09-21 17:11:43 -07:00
Victor Zverovich
ac85afaab6 Simplify format_error 2022-09-16 14:25:14 -07:00
Björn Schäpers
2d66ad5d33 Suppress -Wshadow
Solves:
/fmt/include/fmt/ostream.h:89:18: warning: declaration of 'fbuf' shadows a previous local [-Wshadow]
   89 |   else if (auto* fbuf = dynamic_cast<__gnu_cxx::stdio_filebuf<char>*>(rdbuf))
      |                  ^~~~
C:/GIT/ok-mimot/libs/3rdParty/fmt/include/fmt/ostream.h:87:13: note: shadowed declaration is here
   87 |   if (auto* fbuf = dynamic_cast<__gnu_cxx::stdio_sync_filebuf<char>*>(rdbuf))
      |             ^~~~
2022-09-13 11:14:30 -07:00
Björn Schäpers
042af53324 Suppress -Wfloat-equal
Only NaN and Inf are not less than Inf and the check for NaN is done
before.

Solves:
.../fmt/include/fmt/format.h:2509:43: warning: comparing floating-point with '==' or '!=' is unsafe [-Wfloat-equal]
 2509 |     return !detail::isnan(value) && value != inf && value != -inf;
2022-09-13 11:14:30 -07:00
Victor Zverovich
192859c2b5 Optimize writing to buffers via back_insert_iterator 2022-09-12 15:32:12 -07:00
Vladislav Shchapov
61844b6b67 Fix build error on GCC-9
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-09-12 07:02:29 -07:00
Victor Zverovich
94ceb38a09 Improve locale API 2022-09-11 09:33:31 -07:00
Victor Zverovich
58c4c012fa Disable slow windows build and simplify write_loc 2022-09-11 08:35:09 -07:00
Victor Zverovich
c3494ae364 Refactor float localization 2022-09-11 07:47:27 -07:00
Vladislav Shchapov
21c2137e77
Add class name output to formatter for std::exception (#3076)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-09-10 08:04:00 -07:00
Victor Zverovich
ecffca6726 Don't parse '}' as fill 2022-09-07 17:33:31 -07:00
gerboengels
3176e0fad7
Add locale overload for formatted_size (#3084) (#3087)
Co-authored-by: Gerbo Engels <gerbo.engels@ortec-finance.com>
2022-09-07 14:15:12 -07:00
VinaCC
1feb430faa
Fix intellisense on Windows (#3082)
__INTELLISENSE__ is 1 on vs2022 and clang, causing FMT_HAS_INCLUDE, FMT_USE_FCNTL, etc to be 0.
That results in VS and VSCode having a lot of linter errors while code compiles just fine.
2022-09-05 11:50:06 -07:00
Victor Zverovich
b98ffb7dbd Improve locale handling 2022-09-04 21:07:30 -07:00
Vladislav Shchapov
bac53951b8
Add starts_with to basic_string_view. (#3080)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-09-04 11:41:16 -07:00
Victor Zverovich
d59b89e9cd More locale 2022-09-04 11:23:45 -07:00
Victor Zverovich
58a5563a9f Implement grouping 2022-09-04 09:01:26 -07:00
Victor Zverovich
1b94271ff6 Add support for UTF-8 digit separators 2022-09-03 11:01:05 -07:00
Victor Zverovich
768d79a839 Implement format_facet 2022-09-03 09:42:36 -07:00
Victor Zverovich
91ecb38a34 Localize negative integers 2022-09-03 07:01:11 -07:00
Victor Zverovich
aec3bb5d0a Workaround C complex.h idiocy 2022-09-03 06:35:55 -07:00
NewbieOrange
29c6000137
Simplify is_variant_like_ check, fix compile error before GCC 11 (#3072)
Co-authored-by: Vladislav Shchapov <vladislav@shchapov.ru>

Co-authored-by: Vladislav Shchapov <vladislav@shchapov.ru>
2022-09-02 21:08:07 -07:00
Victor Zverovich
fec5515c55 num_format_facet -> format_facet 2022-09-02 18:55:08 -07:00
Victor Zverovich
f187274d36 Add loc_value 2022-09-02 13:45:23 -07:00