From df2dfd961293ba0c929b636c8ab2c3889ba29314 Mon Sep 17 00:00:00 2001 From: Johan 't Hart Date: Tue, 1 Dec 2015 08:59:59 +0100 Subject: [PATCH 1/2] Silence some performance warnings in Visual Studio --- format.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/format.h b/format.h index 20aac4cb0df4..ae45487c2515 100644 --- a/format.h +++ b/format.h @@ -256,7 +256,7 @@ class numeric_limits : // isinf macro > std::isinf > ::isinf > fmt::internal::isinf if (check(sizeof(isinf(x)) == sizeof(bool) || sizeof(isinf(x)) == sizeof(int))) { - return isinf(x); + return !!isinf(x); } return !_finite(static_cast(x)); } @@ -267,7 +267,7 @@ class numeric_limits : using namespace fmt::internal; if (check(sizeof(isnan(x)) == sizeof(bool) || sizeof(isnan(x)) == sizeof(int))) { - return isnan(x); + return !!isnan(x); } return _isnan(static_cast(x)) != 0; } @@ -276,7 +276,7 @@ class numeric_limits : static bool isnegative(double x) { using namespace fmt::internal; if (check(sizeof(signbit(x)) == sizeof(int))) - return signbit(x); + return !!signbit(x); if (x < 0) return true; if (!isnotanumber(x)) return false; int dec = 0, sign = 0; @@ -313,7 +313,7 @@ void format(BasicFormatter &f, const Char *&format_str, const T &value); /** \rst A string reference. It can be constructed from a C string or ``std::string``. - + You can use one of the following typedefs for common character types: +------------+-------------------------+ @@ -1454,7 +1454,7 @@ class BasicFormatter : private internal::FormatterBase { private: BasicWriter &writer_; internal::ArgMap map_; - + FMT_DISALLOW_COPY_AND_ASSIGN(BasicFormatter); using internal::FormatterBase::get_arg; @@ -1958,7 +1958,7 @@ class SystemError : public internal::RuntimeError { *error_code* is a system error code as given by ``errno``. If *error_code* is not a valid error code such as -1, the system message may look like "Unknown error -1" and is platform-dependent. - + **Example**:: // This throws a SystemError with the description @@ -2147,7 +2147,7 @@ class BasicWriter { /** \rst Writes formatted data. - + *args* is an argument list representing arbitrary arguments. **Example**:: @@ -2675,7 +2675,7 @@ typedef BasicMemoryWriter WMemoryWriter; This class template provides operations for formatting and writing data into a fixed-size array. For writing into a dynamically growing buffer use :class:`fmt::BasicMemoryWriter`. - + Any write method will throw ``std::runtime_error`` if the output doesn't fit into the array. @@ -3208,7 +3208,7 @@ inline namespace literals { C++11 literal equivalent of :func:`fmt::format`. **Example**:: - + using namespace fmt::literals; std::string message = "The answer is {}"_format(42); \endrst @@ -3223,7 +3223,7 @@ operator"" _format(const wchar_t *s, std::size_t) { return {s}; } C++11 literal equivalent of :func:`fmt::arg`. **Example**:: - + using namespace fmt::literals; print("Elapsed time: {s:.2f} seconds", "s"_a=1.23); \endrst From 328c8888ecacd7ffd2e10f38269b0bdf5abb7d32 Mon Sep 17 00:00:00 2001 From: Johan 't Hart Date: Tue, 1 Dec 2015 09:34:13 +0100 Subject: [PATCH 2/2] Make compilable under Visual Studio 2008 Older Visual Studio versions are not shipped with stdint.h --- format.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/format.h b/format.h index ae45487c2515..568123d82f37 100644 --- a/format.h +++ b/format.h @@ -28,7 +28,13 @@ #ifndef FMT_FORMAT_H_ #define FMT_FORMAT_H_ +#if defined _MSC_VER && _MSC_VER <= 1500 +typedef unsigned int uint32_t; +typedef unsigned long long uint64_t; +typedef long long intmax_t; +#else #include +#endif #include #include