Victor Zverovich
f97deb0d7d
Minor cleanup
2024-07-14 11:14:49 -07:00
Victor Zverovich
3541353512
Apply minor optimization
2024-07-14 09:52:44 -07:00
Justin Riddell
5ef93a9f80
Expand FMT_FORMAT_AS to include implicit conversions ( #4055 )
...
Allows (for example) types convertible to std::string_view to inherit
from the fmt::formatter<fmt::string_view> to work etc.
2024-07-14 09:51:49 -07:00
Victor Zverovich
c9102619da
Avoid extra reserve
2024-07-14 08:41:35 -07:00
Victor Zverovich
58d792b6d3
Apply minor optimizations
2024-07-14 07:05:18 -07:00
Victor Zverovich
25adca5666
Remove redundant overload
2024-07-13 13:07:57 -07:00
Victor Zverovich
1408f1824d
Simplify iterator detection
2024-07-13 11:11:47 -07:00
Tor Shepherd
3fe4641d3a
Add 2 more constexprs to fix compile error ( #4065 )
2024-07-13 08:23:49 -07:00
Victor Zverovich
33e7ed1eb5
Improve handling of back_insert_iterator that writes into a buffer
2024-07-13 07:56:11 -07:00
Justin Riddell
13038f37e8
Support printing (const) volatile void* ( #4056 )
...
Fixes #4049
2024-07-10 08:35:06 -07:00
Justin Riddell
e60ff504ea
Fix usage with std::generator ( #4057 )
...
Fixes #4053
2024-07-09 08:46:34 -07:00
Victor Zverovich
92227c77a4
Improve support for non-POSIX platforms more
2024-07-08 14:00:00 -07:00
Victor Zverovich
486838f26f
Improve support for non-POSIX platforms
2024-07-08 11:18:44 -07:00
Victor Zverovich
7a8b54a0ef
Don't confuse Glib::ustring with std::string
2024-07-06 13:27:06 -07:00
Vladislav Shchapov
a96259701e
Improve std::complex formatter ( #4050 )
...
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2024-07-04 17:24:01 -07:00
Victor Zverovich
503e183b9e
Bump version and add version validation
2024-07-04 07:49:58 -07:00
toge
9d946a2fc4
Fix compilation errors due to make_format_args in gcc 14.1.1 with c++20 ( #4042 )
2024-07-03 12:41:08 -07:00
Nebojša Cvetković
c4f6fa7135
fix: Make basic_format_arg::visit() const ( #4043 )
2024-07-01 14:43:52 -07:00
Vladislav Shchapov
24c1f886af
Remove double has_value check ( #4040 )
...
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2024-07-01 09:24:33 -07:00
Victor Zverovich
686339f7c1
Minor cleanup
2024-06-30 10:29:50 -07:00
Victor Zverovich
53186535d5
Bump version
2024-06-29 08:54:52 -07:00
Victor Zverovich
7f951f2502
Optimize range formatter
2024-06-23 06:51:46 -07:00
Dix Lorenz
7ae102bd66
make format_int constexpr ( #4032 )
...
* make format_int constexpr
* format_int can only be constexpr in C++20
* apply clang-format
* drop constexpr for str()
2024-06-23 06:28:39 -07:00
Victor Zverovich
b1efe8516e
Prevent silent data loss
2024-06-22 07:46:16 -07:00
Matt Stafford
2c0d9e9409
Add a define to force the use of fallback_file
2024-06-21 09:42:02 -07:00
Victor Zverovich
18a9676d95
Add an experimental path
2024-06-21 08:14:20 -07:00
Vladislav Shchapov
514b6955d2
Suppress a bogus warning in MSVC ( #4023 )
...
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2024-06-19 08:49:43 -07:00
Matthias Moulin
ac96773230
Added missing std::declval for non-default-constructible types ( #4024 )
2024-06-18 11:27:40 -07:00
Victor Zverovich
c00149f5e2
Fix a typo
2024-06-17 06:58:33 -07:00
Victor Zverovich
71244e07de
Cleanup includes
2024-06-16 11:10:38 -07:00
Victor Zverovich
febd8ed5fe
Cleanup includes
2024-06-16 10:59:06 -07:00
Victor Zverovich
2a2048a785
Don't pass seconds as a double in examples
2024-06-15 09:26:49 -07:00
LoveSy
8687315e86
Guard more system headers by FMT_MODULE ( #4006 )
...
* Guard more system headers by `FMT_MODULE`
* Merge FMT_MODULE and FMT_IMPORT_STD
2024-06-14 10:53:51 -07:00
Victor Zverovich
e0b66e8f83
Remove dependency on <ranges>
2024-06-13 15:57:01 -07:00
Matthias Moulin
794df69c8c
Added range_format::(debug_)string formatter ( #3973 )
2024-06-13 15:43:29 -07:00
Victor Zverovich
1d9df9ce1c
Remove a redundant comment
2024-06-13 15:41:35 -07:00
LoveSy
fad0222a0c
Export compiled_string so that user can customize one ( #3999 )
2024-06-09 10:58:58 -07:00
LoveSy
2bf811b1d9
Also allow compiled format for clang >= 12 ( #4001 )
2024-06-09 06:43:39 -07:00
LoveSy
0f6e716548
Fix missing includes in fmt.cc ( #3994 )
...
This causes duplicated std definitions in the fmt module
2024-06-08 13:50:29 -07:00
Victor Zverovich
7bd11b5cdf
Remove a redundant extension to reduce divergence from std::format
2024-06-08 08:29:34 -07:00
LoveSy
94f96d112d
Fix undefined reference when compiling with FMT_STATIC_THOUSANDS_SEPARATOR and chrono.h
2024-06-05 21:01:42 -07:00
LoveSy
a9b8517638
Use native c++ module support from CMake
...
also fix some clang compilation issues when using c++ modules
2024-06-05 21:01:42 -07:00
Victor Zverovich
9b12491c19
Migrate docs
2024-06-02 14:20:41 -07:00
Victor Zverovich
ab29ef37d9
Migrate docs and cleanup
2024-06-02 13:17:04 -07:00
Victor Zverovich
97117cbb51
Migrate to mkdocs
2024-06-02 12:21:11 -07:00
Victor Zverovich
38ba3d3993
Migrate to mkdocs
2024-06-02 08:26:56 -07:00
Victor Zverovich
0714113974
Add macro support to api doc extraction
2024-06-02 08:06:52 -07:00
Victor Zverovich
03d14c3beb
Add support for multiple namespaces
2024-06-02 07:01:40 -07:00
Victor Zverovich
a10e032148
Improve docs
2024-06-01 20:08:41 -07:00
Victor Zverovich
febeb51bde
Documentation improvements
2024-06-01 17:45:06 -07:00
Victor Zverovich
933d8ba352
Improve apidoc formatting
2024-06-01 09:24:32 -07:00
Victor Zverovich
91a859ee4a
Switch to markdown
2024-06-01 08:56:26 -07:00
Victor Zverovich
a4d42c44f4
Cleanup comments
2024-06-01 07:00:56 -07:00
Eric Bryant
fcd3e1e19c
is_convertible_v -> is_convertible::value ( #3983 )
2024-05-31 10:02:59 -07:00
ZaheenJ
ca8eeb09ee
Add glibc ext for day of month and week of year ( #3976 )
2024-05-30 10:20:56 -07:00
Victor Zverovich
cf9833f40b
Cleanup apidoc comments
2024-05-29 20:30:19 -07:00
Victor Zverovich
33eba1049d
Minor comment fix
2024-05-28 11:39:49 -07:00
Matthias Moulin
43ab964c47
MSVC 17.10.0 + modules cannot find definition ( #3972 )
...
MSVC regressed since the new 17.10.0 compiler update. node<> cannot be found for detail::dynamic_arg_list::typed_node.
2024-05-28 11:34:44 -07:00
Matthias Moulin
728f9bc388
Added std::type_info formatter ( #3978 )
...
* Added std::type_info formatter;
* Reused std::type_info formatter in std::exception formatters;
* Updated MSVC std::type_info outputting to exclude all class, struct and enum occurences.
2024-05-28 10:57:08 -07:00
Matthias Moulin
1752d7fbbb
Added formattable concept ( #3974 )
2024-05-26 07:47:56 -07:00
Matthias Moulin
1768bf9714
Added FMT_EXPORT for fmt::range_format and fmt::range_format_kind ( #3970 )
2024-05-24 07:08:07 -07:00
Justin Riddell
fc723fd6c7
Fix regression in #3710 ( #3968 )
...
Regression introduced in 11f2f30
Already have a test for this, but needed to make __cpp_lib_ranges
smaller to enable it
2024-05-23 12:39:11 -07:00
Justin Riddell
b81761068b
Check range_begin is dereferenceable ( #3964 )
...
Fixes issue #3839
An Eigen 3.4 2x2 matrix has a begin member function that returns void
Be more strict checking that the result of calling *begin() is valid
See input_or_output_iterator concept notes about void
2024-05-20 16:11:07 -07:00
Matthias Moulin
706eabd5e5
Resolved warning C4127: conditional expression is constant ( #3967 )
2024-05-20 11:59:19 -07:00
Edoardo Lolletti
028bffa083
Update checks for dynamic_cast usage when compiled with no rtti ( #3963 )
...
* Rename FMT_USE_TYPEID to FMT_HAS_RTTI and use it as check to enable dynamic_cast usage
* FMT_HAS_RTTI->FMT_USE_RTTI
2024-05-19 11:21:55 -07:00
Victor Zverovich
75e892420e
Minor cleanup
2024-05-16 10:45:23 -07:00
Justin Riddell
8e728044f6
Fix format_as for non-const begin/end views ( #3955 )
...
base::format does not accept rvalues, using the result of format_as
directly means it is passed one. Doesn't matter for ranges with a const
begin and end, but filter_view caches, so it only has mutable begin/end.
Use auto&& to avoid copy if format_as returns const ref
2024-05-13 09:35:55 -07:00
Victor Zverovich
1f436c646e
Cleanup locking/buffering
2024-05-12 09:34:17 -07:00
Victor Zverovich
db1ee420e0
Cleanup unicode check more
2024-05-11 20:02:22 -07:00
Victor Zverovich
7d6ae972b9
Cleanup unicode checks
2024-05-11 19:43:46 -07:00
Victor Zverovich
3460b30fd5
Improve utf-8 detection
2024-05-11 18:58:40 -07:00
Victor Zverovich
b7809f91e2
Enable Unicode support by default
2024-05-11 15:11:23 -07:00
Victor Zverovich
1dc71f21ea
Enable Unicode by default
2024-05-10 18:27:45 -07:00
Victor Zverovich
8db8f22490
Optimize join_view
2024-05-09 17:26:26 -07:00
Victor Zverovich
d2473b7b73
Simplify join_view formatter
2024-05-08 15:42:49 -07:00
Victor Zverovich
328d256c60
Apply coding conventions
2024-05-06 15:10:29 -07:00
Victor Zverovich
57593a123b
Simplify map formatter
2024-05-06 15:09:31 -07:00
Justin Riddell
10508a30ec
Enable fmt::join for uncopyable iterators ( #3946 )
...
If iterator not copyable mutate the underlying iterator
Notably std::ranges::basic_istream_view::__iterator
Addresses issue (#3802 )
2024-05-05 15:44:23 -07:00
Victor Zverovich
16cec4f591
Make the map formatter correctly handle elements with custom formatters
2024-05-04 10:59:16 -07:00
Victor Zverovich
77bfd8499a
Split range and map formatters
2024-05-04 09:41:02 -07:00
Victor Zverovich
3af8ac7a06
Privatize write_debug_string
2024-05-04 07:38:58 -07:00
Victor Zverovich
ceb406d06c
Remove range_default_formatter
2024-05-04 07:20:40 -07:00
Victor Zverovich
7650ed04a3
Fix to_nonnegative_int
2024-05-03 07:49:16 -07:00
Alex Dewar
8a8f4825a3
Fix: isnan() shouldn't cause FP exceptions
...
Fixes #3948 .
2024-05-02 09:36:21 -07:00
Marlene Cota
48c908453d
Fix CodeQL alert ( #3945 )
2024-04-30 12:41:29 -07:00
Diego Ramírez
cf1f55f798
Specialize formatter for all std::basic_string types ( #3943 )
...
* Specialize `formatter` for all `std::basic_string` types
* mock-allocator: add member types to make GCC 4.8 happy
2024-04-23 08:44:41 -07:00
Victor Zverovich
400f6a8ee2
Dedup ADL begin/end lookup
2024-04-22 16:09:07 -07:00
Jiwoo Park
f4b256c667
Fix warning C26439
2024-04-19 09:06:46 -07:00
Victor Zverovich
f746a59a5c
Cleanup FMT_ASSERT
2024-04-19 08:36:16 -07:00
Hans-Martin B. Jensen
ee0c3351a4
Fix format_to + FMT_STRING for wide character type ( #3931 )
...
Added overload that takes a wformat_string.
Fixes issue #3925 .
2024-04-17 08:30:48 -07:00
Justin Riddell
99735764ea
Fix FMT_USE_NONTYPE_TEMPLATE_ARGS define back ( #3937 )
...
Broken in refactor f1924d3
2024-04-16 13:29:30 -07:00
Matthias Moulin
116a9ce488
Added FMT_IMPORT_STD feature macro ( #3928 )
2024-04-10 11:48:32 -07:00
ShifftC
5eb68c0ef2
Fix mix-up of 'FMT_BEGIN_EXPORT' and 'namespace detail'. ( #3924 )
2024-04-08 09:46:20 -07:00
Matthias Moulin
550437b29e
Resolved warning C4127: conditional expression is constant ( #3923 )
2024-04-07 11:01:26 -07:00
Philippe Proulx
4e8640ed90
Fix: enable FMT_NORETURN without exception support too ( #3917 )
...
When building `format.cc` as such with GCC 13.2.1:
$ g++ -c format.cc -DFMT_EXCEPTIONS=0 -Wmissing-noreturn -Werror
I get:
In file included from format.cc:8:
fmt/format-inl.h: In function ‘void fmt::v10::detail::assert_fail(const char*, int, const char*)’:
fmt/format-inl.h:30:15: error: function might be candidate for attribute ‘noreturn’ [-Werror=suggest-attribute=noreturn]
30 | FMT_FUNC void assert_fail(const char* file, int line, const char* message) {
| ^~~~~~~~~~~
fmt/format-inl.h: In function ‘void fmt::v10::report_error(const char*)’:
fmt/format-inl.h:129:15: error: function might be candidate for attribute ‘noreturn’ [-Werror=suggest-attribute=noreturn]
129 | FMT_FUNC void report_error(const char* message) {
| ^~~~~~~~~~~~
cc1plus: all warnings being treated as errors
Note that, with `FMT_EXCEPTIONS` defined to 0:
‣ report_error(const char *) uses FMT_THROW() which expands to calling
assert_fail().
‣ assert_fail() calls std::terminate() which has the `[[noreturn]]`
attribute since C++11 [1].
Therefore, with `FMT_EXCEPTIONS` defined to 0, both assert_fail() and
report_error() need to have the `[[noreturn]]` attribute too (if
available). In other words, `FMT_NORETURN` doesn't depend on
`FMT_EXCEPTIONS`.
Also adding `FMT_NORETURN` to two on_error() functions which call
report_error(const char *).
Other report_error() overloads eventually return, therefore they don't
need `FMT_NORETURN`.
[1]: https://en.cppreference.com/w/cpp/error/terminate
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
2024-04-04 17:15:18 -07:00
Victor Zverovich
c70e7b7473
Coding conventions and minor fixes
2024-04-05 08:36:45 +09:00
zivshek
71144eeaff
implement year_month_day ( #3913 )
...
* implement year_month_day, also changed weekday, day, month, year's formatter to use formatter<std::tm, Char> so they all support the format strings
* support ":L" for month and weekday
2024-04-03 15:35:53 -07:00
Vladislav Shchapov
ca9193983b
Replace std::fill_n with fmt::detail::fill_n ( #3909 )
...
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2024-03-28 17:26:18 -07:00
zivshek
74a187288b
Implemented fmt::day, fmt::month, fmt::year and related unit tests ( #3906 )
2024-03-27 17:10:30 -07:00
Victor Zverovich
5d63e87d23
Add a formatter for float128
2024-03-22 15:41:50 +09:00