Commit Graph

3474 Commits

Author SHA1 Message Date
Mathias Stearn
997e2747ee Better compiler errors for invalid ""_format usage
In particular, this uses FMT_ENABLE_IF() to constrain the function to only
valid combinations of the format string and arguments. This ensures that there
is an actual error at the usage site, which puts the red squiggles on the
incorrect code, rather than inside the library.
2019-05-30 13:53:58 -04:00
Victor Zverovich
d07cc2026b FMT_EXPLICIT -> explicit, FMT_NULL -> nullptr 2019-05-30 07:42:36 -07:00
Victor Zverovich
4a7966c773 Drop gcc 4.4 from CI 2019-05-30 06:51:59 -07:00
Victor Zverovich
9b3c24b99b One weird trick to simplify docs; doxygen hates it 2019-05-29 21:09:43 -07:00
Victor Zverovich
30bce6c14c Fix a few chrono formatting corner cases (#1178) 2019-05-29 18:02:26 -07:00
Victor Zverovich
e5512c5d57 Use static_assert instead of SFINAE in arg(...) 2019-05-29 13:21:24 -07:00
Victor Zverovich
afc571aedc Document join and relax its compiler requirements 2019-05-29 11:21:05 -07:00
Paul Dreik
ad360a62b0 add gcc 8 c++17 release build 2019-05-29 06:50:43 -07:00
Paul Dreik
3cf12d7b11 add gcc 8 c++17 build 2019-05-29 06:50:43 -07:00
Victor Zverovich
bb254d146b Disable std-format-test by default 2019-05-27 20:02:08 -07:00
Victor Zverovich
291ba837f2 Remove wrong compile-time checks from printf (#1173) 2019-05-24 07:50:13 -07:00
Victor Zverovich
01c631af95 Implement unsigned and long long parsing 2019-05-19 07:34:54 -07:00
Victor Zverovich
4fcd4a4bd0 Reuse parse_format_string in scan 2019-05-18 14:18:06 -07:00
Victor Zverovich
2346779d6b More documentation fixes 2019-05-18 09:30:36 -07:00
Victor Zverovich
afc1a74a6c Minor documentation fixes 2019-05-18 09:10:17 -07:00
Victor Zverovich
ad0eade471 Remove MSVC nonsense 2019-05-18 09:05:19 -07:00
Victor Zverovich
28c187bcd7 Capitalize titles 2019-05-18 08:56:49 -07:00
Victor Zverovich
91bb3aaf06 fmtlib.net -> fmt.dev 2019-05-17 15:42:00 -07:00
Victor Zverovich
5e7bdf1b97 Clean up vagrant config 2019-05-16 12:22:04 -07:00
Victor Zverovich
570453f271 Add a vagrant config for testing gcc 4.4 2019-05-16 06:26:16 -07:00
Victor Zverovich
ef6282fc45 Fix gcc 4.4 build 2019-05-15 22:37:00 -07:00
Victor Zverovich
e3e470bb69 Remove deprecated format_decimal 2019-05-15 10:34:45 -07:00
Victor Zverovich
67179dbc23 Remove deprecated format_decimal 2019-05-15 10:34:38 -07:00
Victor Zverovich
a5ffa735db Fix gcc 4.4 build 2019-05-15 10:20:51 -07:00
Victor Zverovich
5ee0804631 Experiment with scan API 2019-05-15 10:02:40 -07:00
Victor Zverovich
25b72fc4cd Move <format> to tests not to confuse users 2019-05-15 09:08:42 -07:00
Victor Zverovich
d179ec5f8b Simplify Grisu 2019-05-15 08:40:21 -07:00
denchat
2a9e8b52de Fix advance_to() and begin() using iterator (#1159) 2019-05-14 08:41:11 -07:00
Victor Zverovich
2c77562b13 Fix ambiguous formatter specialization in fmt/ranges.h (#1123) 2019-05-12 13:03:20 -07:00
Victor Zverovich
98b3775297 Add support for exotic string_view iterators (#1156) 2019-05-12 11:07:49 -07:00
Victor Zverovich
b488df6cfe Fix Grisu3 stopping conditions 2019-05-12 08:56:50 -07:00
denchat
f4dfd6e30f Suppress all clang-target-msvc test warning in CMake and other misc fixes (#1151)
* Fix conditional `char8_t` from `format.h` and fix `-Wunused-result` of [[no_discard]] begin() when in c++17

* Suppress `-Winconsistent-dllimport` when in clang-target-msvc

* Suppress warning _CRT_SECURE_NO_WARNINGS in MSVC and -Wdeprecated-declarations

Suppress warning _CRT_SECURE_NO_WARNINGS in MSVC and -Wdeprecated-declarations of POSIX functions in Clang target MSVC.
Those functions are used by gtest.

* Remove FMT_FUNC, mark FMT_API to export
2019-05-11 11:48:27 -07:00
Victor Zverovich
a6e8ed15c4 Disable UDL templates on GCC 9 by default (#1148) 2019-05-11 08:58:39 -07:00
Victor Zverovich
de5da50910 Fix formatting of extreme durations (#1154) 2019-05-11 08:42:02 -07:00
Victor Zverovich
ea2976e6d5 Move internal::uintptr_t test to format-impl-test (#1152) 2019-05-11 06:58:22 -07:00
Alex Alabuzhev
77d6036cd5 Fix unexpected trailing decimal point (#1153) 2019-05-11 06:34:47 -07:00
Victor Zverovich
ccc318e807
Update README.rst 2019-05-10 10:04:44 -07:00
Victor Zverovich
4c8efd694c
Update README.rst 2019-05-10 09:56:40 -07:00
Victor Zverovich
d22d11b5ff
Update README.rst 2019-05-10 09:54:42 -07:00
Victor Zverovich
e9bab6d028 Improve handling of large durations 2019-05-08 12:40:33 -07:00
Victor Zverovich
f52c09f924 Fix format_to_n docs in 5.1.0 2019-05-08 12:40:25 -07:00
mocabe
118d8bccc2 Fix compilation error under MSVC 19.21 (#1140) 2019-05-08 11:20:55 -07:00
mocabe
6828d549e8 Add FMT_ENABLE_IF_T
for definitions of functions which declared using FMT_ENABLE_IF
2019-05-08 11:20:55 -07:00
denchat
3fd134be03 Move test_count_digits to format-impl-test and disable gtest warnings (#1147)
* This translation unit includes `gtest.h` in which using something like `strncpy`

Suppress MSVC warnings from `gtest.h` included.

Warning sample:
fmt-master\test\gtest\gtest.h(2873,10): warning: 'strncpy' is deprecated: This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [-Wdeprecated-declarations]

* Moving `test_count_digits` to format-impl-test then count_digits<4>(internal::uintptr_t) shall not be exported

* retaining _CRT_SECURE_NO_WARNINGS always defined should be no harms.
2019-05-07 12:09:11 -07:00
Ronny Krüger
ca7c1f89dc Fixed a compile error under MSVC.
The #warning directive is not supported by MSVC.
To still get a message to the user we use #pragma message() under MSVC now.
2019-05-05 14:04:04 -07:00
Victor Zverovich
ca978b3d21 Fix handling of nan durations 2019-05-05 08:53:23 -07:00
Victor Zverovich
c1d430e61a Improve handling of negative durations 2019-05-04 17:52:20 -07:00
Victor Zverovich
38a85502ed Use the same rep type for seconds to prevent overflow 2019-05-04 09:22:09 -07:00
Greg Sjaardema
241414028d Eliminate shadowed variable warnings from gcc-7.2
The gcc-7.2.0 compiler (and others) were giving shadowed variable warnings for this include file.  A simple renaming of a couple local variables eliminates the warnings.
2019-05-04 08:00:31 -07:00
denchat
29c10fbf6e Fix DLL visibility of explicit instantiation "declaration" of internal::basic_data<void> in header format.h and the explicit instantiation "definition" in format.cc (#1134)
* Update format.cc

As the explicit instantiation *declaration* of `internal::basic_data<void>` in format.h, this explicit instantiation *definition* should mirror FMT_API also.

* Mirror visibility of explicit instantiation declaration 

explicit instantiation declaration of internal::basic_data<void> should mirror visibility of FMT_API

* Eliminate `__declspec(dllexport)` designation on extern template internal::basic_data<> when `extern` affected during exporting phase.

* Add `FMT_EXTERN_TEMPLATE_API` for designate DLL export `extern template`

When exporting DLL, do not designate `__declspec(dllexport)` any template that has any explicit class template declaration a.k.a. `extern template`. Instead, designate `__declspec(dllexport)` at single point where we have explicit class template definition a.k.a. normal instantiation without `extern`

Note: this is a c++11 feature.

* Delete whole `FMT_USE_EXTERN_TEMPLATES` block and its condition

1. Remove whole `FMT_USE_EXTERN_TEMPLATES` block
(trailing `FMT_UDL_TEMPLATE` block)
````
#ifndef FMT_USE_EXTERN_TEMPLATES
#  ifndef FMT_HEADER_ONLY
#    define FMT_USE_EXTERN_TEMPLATES                           \
      ((FMT_CLANG_VERSION >= 209 && __cplusplus >= 201103L) || \
       (FMT_GCC_VERSION >= 303 && FMT_HAS_GXX_CXX11))
#  else
#    define FMT_USE_EXTERN_TEMPLATES 0
#  endif
#endif
````

2. Delete `FMT_USE_EXTERN_TEMPLATES` condition, only condition, that trailing basic_data class template definition.
````
#if FMT_USE_EXTERN_TEMPLATES
extern template struct basic_data<void>;
#endif
````

3. Replace `FMT_API` with new `FMT_EXTERN_TEMPLATE_API` added in `core.h` for sake of extern template of `basic_data<void>`

* Add `#define FMT_EXTERN extern` only when not `FMT_HEADER_ONLY`

* Replace `extern` on basic_data<void> with the `FMT_EXTERN` condition in core.h

* replace misspelled if !define() with ifndef
2019-05-02 07:49:01 -07:00