Merge pull request #81 from Queueless/master
Fixed Level 4 warnings on Windows
This commit is contained in:
commit
0fea89ec8f
@ -84,6 +84,7 @@ using fmt::internal::Arg;
|
|||||||
#if _MSC_VER
|
#if _MSC_VER
|
||||||
# pragma warning(push)
|
# pragma warning(push)
|
||||||
# pragma warning(disable: 4127) // conditional expression is constant
|
# pragma warning(disable: 4127) // conditional expression is constant
|
||||||
|
# pragma warning(disable: 4702) // unreachable code
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
@ -239,6 +240,8 @@ void check_sign(const Char *&s, const Arg &arg) {
|
|||||||
// left alignment if it is negative.
|
// left alignment if it is negative.
|
||||||
class WidthHandler : public fmt::internal::ArgVisitor<WidthHandler, unsigned> {
|
class WidthHandler : public fmt::internal::ArgVisitor<WidthHandler, unsigned> {
|
||||||
private:
|
private:
|
||||||
|
WidthHandler& operator=(WidthHandler const&); //no impl
|
||||||
|
|
||||||
fmt::FormatSpec &spec_;
|
fmt::FormatSpec &spec_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -283,6 +286,8 @@ class PrecisionHandler :
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
class ArgConverter : public fmt::internal::ArgVisitor<ArgConverter<T>, void> {
|
class ArgConverter : public fmt::internal::ArgVisitor<ArgConverter<T>, void> {
|
||||||
private:
|
private:
|
||||||
|
ArgConverter& operator=(ArgConverter const&); //no impl
|
||||||
|
|
||||||
fmt::internal::Arg &arg_;
|
fmt::internal::Arg &arg_;
|
||||||
wchar_t type_;
|
wchar_t type_;
|
||||||
|
|
||||||
@ -321,6 +326,7 @@ class ArgConverter : public fmt::internal::ArgVisitor<ArgConverter<T>, void> {
|
|||||||
// Converts an integer argument to char for printf.
|
// Converts an integer argument to char for printf.
|
||||||
class CharConverter : public fmt::internal::ArgVisitor<CharConverter, void> {
|
class CharConverter : public fmt::internal::ArgVisitor<CharConverter, void> {
|
||||||
private:
|
private:
|
||||||
|
CharConverter& operator=(CharConverter const&); // no impl
|
||||||
fmt::internal::Arg &arg_;
|
fmt::internal::Arg &arg_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -525,6 +531,8 @@ template <typename Char>
|
|||||||
class fmt::internal::ArgFormatter :
|
class fmt::internal::ArgFormatter :
|
||||||
public fmt::internal::ArgVisitor<fmt::internal::ArgFormatter<Char>, void> {
|
public fmt::internal::ArgVisitor<fmt::internal::ArgFormatter<Char>, void> {
|
||||||
private:
|
private:
|
||||||
|
ArgFormatter& operator=(ArgFormatter const&); // no impl
|
||||||
|
|
||||||
fmt::BasicFormatter<Char> &formatter_;
|
fmt::BasicFormatter<Char> &formatter_;
|
||||||
fmt::BasicWriter<Char> &writer_;
|
fmt::BasicWriter<Char> &writer_;
|
||||||
fmt::FormatSpec &spec_;
|
fmt::FormatSpec &spec_;
|
||||||
|
26
format.h
26
format.h
@ -407,14 +407,9 @@ inline int getsign(double value) {
|
|||||||
return sign;
|
return sign;
|
||||||
}
|
}
|
||||||
inline int isinfinity(double x) { return !_finite(x); }
|
inline int isinfinity(double x) { return !_finite(x); }
|
||||||
|
inline int isinfinity( long double x) { return !_finite(static_cast<double>(x)); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
struct IsLongDouble { enum {VALUE = 0}; };
|
|
||||||
|
|
||||||
template <>
|
|
||||||
struct IsLongDouble<long double> { enum {VALUE = 1}; };
|
|
||||||
|
|
||||||
template <typename Char>
|
template <typename Char>
|
||||||
class BasicCharTraits {
|
class BasicCharTraits {
|
||||||
public:
|
public:
|
||||||
@ -996,6 +991,8 @@ class PrintfFormatter : private FormatterBase {
|
|||||||
template <typename Char>
|
template <typename Char>
|
||||||
class BasicFormatter : private internal::FormatterBase {
|
class BasicFormatter : private internal::FormatterBase {
|
||||||
private:
|
private:
|
||||||
|
BasicFormatter& operator=(BasicFormatter const&); // no impl
|
||||||
|
|
||||||
BasicWriter<Char> &writer_;
|
BasicWriter<Char> &writer_;
|
||||||
const Char *start_;
|
const Char *start_;
|
||||||
|
|
||||||
@ -1496,6 +1493,9 @@ class BasicWriter {
|
|||||||
// Do not implement!
|
// Do not implement!
|
||||||
void operator<<(typename internal::CharTraits<Char>::UnsupportedStrType);
|
void operator<<(typename internal::CharTraits<Char>::UnsupportedStrType);
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
Char* append_float_length(Char* format_ptr) { return format_ptr; }
|
||||||
|
|
||||||
friend class internal::ArgFormatter<Char>;
|
friend class internal::ArgFormatter<Char>;
|
||||||
friend class internal::PrintfFormatter<Char>;
|
friend class internal::PrintfFormatter<Char>;
|
||||||
|
|
||||||
@ -1926,8 +1926,8 @@ void BasicWriter<Char>::write_double(
|
|||||||
*format_ptr++ = '.';
|
*format_ptr++ = '.';
|
||||||
*format_ptr++ = '*';
|
*format_ptr++ = '*';
|
||||||
}
|
}
|
||||||
if (internal::IsLongDouble<T>::VALUE)
|
|
||||||
*format_ptr++ = 'L';
|
format_ptr = append_float_length<T>(format_ptr);
|
||||||
*format_ptr++ = type;
|
*format_ptr++ = type;
|
||||||
*format_ptr = '\0';
|
*format_ptr = '\0';
|
||||||
|
|
||||||
@ -1981,6 +1981,16 @@ void BasicWriter<Char>::write_double(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <> template <> inline char* BasicWriter<char>::append_float_length<long double>( char* format_ptr) {
|
||||||
|
*format_ptr++ = 'L';
|
||||||
|
return format_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <> template <> inline wchar_t* BasicWriter<wchar_t>::append_float_length<long double>( wchar_t* format_ptr) {
|
||||||
|
*format_ptr++ = 'L';
|
||||||
|
return format_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\rst
|
\rst
|
||||||
This template provides operations for formatting and writing data into
|
This template provides operations for formatting and writing data into
|
||||||
|
Loading…
Reference in New Issue
Block a user