use templated is_negative
This commit is contained in:
parent
fe230334d9
commit
da500135a6
@ -664,6 +664,20 @@ class serializer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename NumberType,
|
||||||
|
enable_if_t<std::is_signed<NumberType>::value, int> = 0>
|
||||||
|
bool is_negative_number(NumberType x)
|
||||||
|
{
|
||||||
|
return x < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
template < typename NumberType,
|
||||||
|
enable_if_t <std::is_unsigned<NumberType>::value, int > = 0 >
|
||||||
|
bool is_negative_number(NumberType /*unused*/)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief dump an integer
|
@brief dump an integer
|
||||||
|
|
||||||
@ -707,12 +721,11 @@ class serializer
|
|||||||
// use a pointer to fill the buffer
|
// use a pointer to fill the buffer
|
||||||
auto buffer_ptr = number_buffer.begin(); // NOLINT(llvm-qualified-auto,readability-qualified-auto,cppcoreguidelines-pro-type-vararg,hicpp-vararg)
|
auto buffer_ptr = number_buffer.begin(); // NOLINT(llvm-qualified-auto,readability-qualified-auto,cppcoreguidelines-pro-type-vararg,hicpp-vararg)
|
||||||
|
|
||||||
const bool is_negative = std::is_signed<NumberType>::value && !(x >= 0); // see issue #755
|
|
||||||
number_unsigned_t abs_value;
|
number_unsigned_t abs_value;
|
||||||
|
|
||||||
unsigned int n_chars{};
|
unsigned int n_chars{};
|
||||||
|
|
||||||
if (is_negative)
|
if (is_negative_number(x))
|
||||||
{
|
{
|
||||||
*buffer_ptr = '-';
|
*buffer_ptr = '-';
|
||||||
abs_value = remove_sign(static_cast<number_integer_t>(x));
|
abs_value = remove_sign(static_cast<number_integer_t>(x));
|
||||||
|
|||||||
@ -17088,6 +17088,20 @@ class serializer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename NumberType,
|
||||||
|
enable_if_t<std::is_signed<NumberType>::value, int> = 0>
|
||||||
|
bool is_negative_number(NumberType x)
|
||||||
|
{
|
||||||
|
return x < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
template < typename NumberType,
|
||||||
|
enable_if_t <std::is_unsigned<NumberType>::value, int > = 0 >
|
||||||
|
bool is_negative_number(NumberType /*unused*/)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief dump an integer
|
@brief dump an integer
|
||||||
|
|
||||||
@ -17131,12 +17145,11 @@ class serializer
|
|||||||
// use a pointer to fill the buffer
|
// use a pointer to fill the buffer
|
||||||
auto buffer_ptr = number_buffer.begin(); // NOLINT(llvm-qualified-auto,readability-qualified-auto,cppcoreguidelines-pro-type-vararg,hicpp-vararg)
|
auto buffer_ptr = number_buffer.begin(); // NOLINT(llvm-qualified-auto,readability-qualified-auto,cppcoreguidelines-pro-type-vararg,hicpp-vararg)
|
||||||
|
|
||||||
const bool is_negative = std::is_signed<NumberType>::value && !(x >= 0); // see issue #755
|
|
||||||
number_unsigned_t abs_value;
|
number_unsigned_t abs_value;
|
||||||
|
|
||||||
unsigned int n_chars{};
|
unsigned int n_chars{};
|
||||||
|
|
||||||
if (is_negative)
|
if (is_negative_number(x))
|
||||||
{
|
{
|
||||||
*buffer_ptr = '-';
|
*buffer_ptr = '-';
|
||||||
abs_value = remove_sign(static_cast<number_integer_t>(x));
|
abs_value = remove_sign(static_cast<number_integer_t>(x));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user