Skip to content

Commit

Permalink
Merge pull request #2174 from nlohmann/fix_warnings
Browse files Browse the repository at this point in the history
Fix warnings
  • Loading branch information
nlohmann authored Jun 7, 2020
2 parents e6a7e7a + 9078031 commit 543dcee
Show file tree
Hide file tree
Showing 8 changed files with 161 additions and 140 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,7 @@ pedantic_gcc:
-Wunused-const-variable=2 \
-Wunused-function \
-Wunused-label \
-Wunused-local-typedefs \
-Wno-unused-local-typedefs \
-Wunused-macros \
-Wunused-parameter \
-Wunused-result \
Expand Down
44 changes: 23 additions & 21 deletions include/nlohmann/detail/input/binary_reader.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ class binary_reader
using string_t = typename BasicJsonType::string_t;
using binary_t = typename BasicJsonType::binary_t;
using json_sax_t = SAX;
using char_type = typename InputAdapterType::char_type;
using char_int_type = typename std::char_traits<char_type>::int_type;

public:
/*!
Expand Down Expand Up @@ -122,7 +124,7 @@ class binary_reader
get();
}

if (JSON_HEDLEY_UNLIKELY(current != std::char_traits<char>::eof()))
if (JSON_HEDLEY_UNLIKELY(current != std::char_traits<char_type>::eof()))
{
return sax->parse_error(chars_read, get_token_string(),
parse_error::create(110, chars_read, exception_message(format, "expected end of input; last byte: 0x" + get_token_string(), "value")));
Expand Down Expand Up @@ -180,7 +182,7 @@ class binary_reader
{
return true;
}
*out++ = static_cast<char>(current);
*out++ = static_cast<typename string_t::value_type>(current);
}

return true;
Expand All @@ -206,7 +208,7 @@ class binary_reader
return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "string length must be at least 1, is " + std::to_string(len), "string")));
}

return get_string(input_format_t::bson, len - static_cast<NumberType>(1), result) and get() != std::char_traits<char>::eof();
return get_string(input_format_t::bson, len - static_cast<NumberType>(1), result) and get() != std::char_traits<char_type>::eof();
}

/*!
Expand Down Expand Up @@ -245,7 +247,7 @@ class binary_reader
Unsupported BSON record type 0x...
@return whether a valid BSON-object/array was passed to the SAX parser
*/
bool parse_bson_element_internal(const int element_type,
bool parse_bson_element_internal(const char_int_type element_type,
const std::size_t element_type_parse_position)
{
switch (element_type)
Expand Down Expand Up @@ -327,7 +329,7 @@ class binary_reader
{
string_t key;

while (int element_type = get())
while (auto element_type = get())
{
if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::bson, "element list")))
{
Expand Down Expand Up @@ -395,7 +397,7 @@ class binary_reader
switch (get_char ? get() : current)
{
// EOF
case std::char_traits<char>::eof():
case std::char_traits<char_type>::eof():
return unexpect_eof(input_format_t::cbor, "value");

// Integer 0x00..0x17 (0..23)
Expand Down Expand Up @@ -690,12 +692,12 @@ class binary_reader

case 0xF9: // Half-Precision Float (two-byte IEEE 754)
{
const int byte1_raw = get();
const auto byte1_raw = get();
if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number")))
{
return false;
}
const int byte2_raw = get();
const auto byte2_raw = get();
if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number")))
{
return false;
Expand Down Expand Up @@ -1048,7 +1050,7 @@ class binary_reader
switch (get())
{
// EOF
case std::char_traits<char>::eof():
case std::char_traits<char_type>::eof():
return unexpect_eof(input_format_t::msgpack, "value");

// positive fixint
Expand Down Expand Up @@ -1825,7 +1827,7 @@ class binary_reader
@return whether pair creation completed
*/
bool get_ubjson_size_type(std::pair<std::size_t, int>& result)
bool get_ubjson_size_type(std::pair<std::size_t, char_int_type>& result)
{
result.first = string_t::npos; // size
result.second = 0; // type
Expand Down Expand Up @@ -1866,11 +1868,11 @@ class binary_reader
@param prefix the previously read or set type prefix
@return whether value creation completed
*/
bool get_ubjson_value(const int prefix)
bool get_ubjson_value(const char_int_type prefix)
{
switch (prefix)
{
case std::char_traits<char>::eof(): // EOF
case std::char_traits<char_type>::eof(): // EOF
return unexpect_eof(input_format_t::ubjson, "value");

case 'T': // true
Expand Down Expand Up @@ -1935,7 +1937,7 @@ class binary_reader
auto last_token = get_token_string();
return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + last_token, "char")));
}
string_t s(1, static_cast<char>(current));
string_t s(1, static_cast<typename string_t::value_type>(current));
return sax->string(s);
}

Expand Down Expand Up @@ -1964,7 +1966,7 @@ class binary_reader
*/
bool get_ubjson_array()
{
std::pair<std::size_t, int> size_and_type;
std::pair<std::size_t, char_int_type> size_and_type;
if (JSON_HEDLEY_UNLIKELY(not get_ubjson_size_type(size_and_type)))
{
return false;
Expand Down Expand Up @@ -2026,7 +2028,7 @@ class binary_reader
*/
bool get_ubjson_object()
{
std::pair<std::size_t, int> size_and_type;
std::pair<std::size_t, char_int_type> size_and_type;
if (JSON_HEDLEY_UNLIKELY(not get_ubjson_size_type(size_and_type)))
{
return false;
Expand Down Expand Up @@ -2108,11 +2110,11 @@ class binary_reader
This function provides the interface to the used input adapter. It does
not throw in case the input reached EOF, but returns a -'ve valued
`std::char_traits<char>::eof()` in that case.
`std::char_traits<char_type>::eof()` in that case.
@return character read from the input
*/
int get()
char_int_type get()
{
++chars_read;
return current = ia.get_character();
Expand All @@ -2121,7 +2123,7 @@ class binary_reader
/*!
@return character read from the input after ignoring all 'N' entries
*/
int get_ignore_noop()
char_int_type get_ignore_noop()
{
do
{
Expand Down Expand Up @@ -2201,7 +2203,7 @@ class binary_reader
{
success = false;
}
return static_cast<char>(current);
return std::char_traits<char_type>::to_char_type(current);
});
return success;
}
Expand Down Expand Up @@ -2246,7 +2248,7 @@ class binary_reader
JSON_HEDLEY_NON_NULL(3)
bool unexpect_eof(const input_format_t format, const char* context) const
{
if (JSON_HEDLEY_UNLIKELY(current == std::char_traits<char>::eof()))
if (JSON_HEDLEY_UNLIKELY(current == std::char_traits<char_type>::eof()))
{
return sax->parse_error(chars_read, "<end of file>",
parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context)));
Expand Down Expand Up @@ -2306,7 +2308,7 @@ class binary_reader
InputAdapterType ia;

/// the current character
int current = std::char_traits<char>::eof();
char_int_type current = std::char_traits<char_type>::eof();

/// the number of characters read
std::size_t chars_read = 0;
Expand Down
20 changes: 11 additions & 9 deletions include/nlohmann/detail/input/input_adapters.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -189,23 +189,23 @@ struct wide_string_input_helper<BaseInputAdapter, 4>
}
else if (wc <= 0x7FF)
{
utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((wc >> 6u) & 0x1Fu));
utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((static_cast<unsigned int>(wc) >> 6u) & 0x1Fu));
utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (static_cast<unsigned int>(wc) & 0x3Fu));
utf8_bytes_filled = 2;
}
else if (wc <= 0xFFFF)
{
utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((wc >> 12u) & 0x0Fu));
utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((static_cast<unsigned int>(wc) >> 12u) & 0x0Fu));
utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((static_cast<unsigned int>(wc) >> 6u) & 0x3Fu));
utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (static_cast<unsigned int>(wc) & 0x3Fu));
utf8_bytes_filled = 3;
}
else if (wc <= 0x10FFFF)
{
utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | ((wc >> 18u) & 0x07u));
utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 12u) & 0x3Fu));
utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | ((static_cast<unsigned int>(wc) >> 18u) & 0x07u));
utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((static_cast<unsigned int>(wc) >> 12u) & 0x3Fu));
utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((static_cast<unsigned int>(wc) >> 6u) & 0x3Fu));
utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (static_cast<unsigned int>(wc) & 0x3Fu));
utf8_bytes_filled = 4;
}
else
Expand Down Expand Up @@ -285,6 +285,8 @@ template<typename BaseInputAdapter, typename WideCharType>
class wide_string_input_adapter
{
public:
using char_type = char;

wide_string_input_adapter(BaseInputAdapter base)
: base_adapter(base) {}

Expand Down
Loading

0 comments on commit 543dcee

Please sign in to comment.