🔨 some refactoring
This commit is contained in:
parent
22929fe189
commit
943d641054
3 changed files with 74 additions and 94 deletions
|
@ -278,23 +278,17 @@ class json_sax_dom_parser : public json_sax<BasicJsonType>
|
|||
}
|
||||
else
|
||||
{
|
||||
switch (ref_stack.back()->m_type)
|
||||
assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());
|
||||
if (ref_stack.back()->is_array())
|
||||
{
|
||||
case value_t::array:
|
||||
{
|
||||
ref_stack.back()->m_value.array->push_back(BasicJsonType(std::forward<Value>(v)));
|
||||
return &(ref_stack.back()->m_value.array->back());
|
||||
}
|
||||
|
||||
case value_t::object:
|
||||
{
|
||||
assert(object_element);
|
||||
*object_element = BasicJsonType(std::forward<Value>(v));
|
||||
return object_element;
|
||||
}
|
||||
|
||||
default:
|
||||
assert(false); // LCOV_EXCL_LINE
|
||||
ref_stack.back()->m_value.array->emplace_back(std::forward<Value>(v));
|
||||
return &(ref_stack.back()->m_value.array->back());
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(object_element);
|
||||
*object_element = BasicJsonType(std::forward<Value>(v));
|
||||
return object_element;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -397,6 +391,7 @@ class json_sax_dom_callback_parser : public json_sax<BasicJsonType>
|
|||
const bool keep = callback(ref_stack.size() - 1, parse_event_t::object_end, *ref_stack.back());
|
||||
if (not keep)
|
||||
{
|
||||
// discard object
|
||||
*ref_stack.back() = discarded;
|
||||
}
|
||||
|
||||
|
@ -426,6 +421,7 @@ class json_sax_dom_callback_parser : public json_sax<BasicJsonType>
|
|||
const bool keep = callback(ref_stack.size() - 1, parse_event_t::array_end, *ref_stack.back());
|
||||
if (not keep)
|
||||
{
|
||||
// discard array
|
||||
*ref_stack.back() = discarded;
|
||||
}
|
||||
|
||||
|
@ -487,23 +483,17 @@ class json_sax_dom_callback_parser : public json_sax<BasicJsonType>
|
|||
}
|
||||
else
|
||||
{
|
||||
switch (ref_stack.back()->m_type)
|
||||
assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());
|
||||
if (ref_stack.back()->is_array())
|
||||
{
|
||||
case value_t::array:
|
||||
{
|
||||
ref_stack.back()->m_value.array->push_back(BasicJsonType(std::forward<Value>(v)));
|
||||
return &(ref_stack.back()->m_value.array->back());
|
||||
}
|
||||
|
||||
case value_t::object:
|
||||
{
|
||||
assert(object_element);
|
||||
*object_element = BasicJsonType(std::forward<Value>(v));
|
||||
return object_element;
|
||||
}
|
||||
|
||||
default:
|
||||
assert(false); // LCOV_EXCL_LINE
|
||||
ref_stack.back()->m_value.array->emplace_back(std::forward<Value>(v));
|
||||
return &(ref_stack.back()->m_value.array->back());
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(object_element);
|
||||
*object_element = BasicJsonType(std::forward<Value>(v));
|
||||
return object_element;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -468,7 +468,7 @@ class parser
|
|||
{
|
||||
case token_type::begin_object:
|
||||
{
|
||||
if (not sax->start_object())
|
||||
if (JSON_UNLIKELY(not sax->start_object()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -479,7 +479,7 @@ class parser
|
|||
// closing } -> we are done
|
||||
if (last_token == token_type::end_object)
|
||||
{
|
||||
if (not sax->end_object())
|
||||
if (JSON_UNLIKELY(not sax->end_object()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -495,7 +495,7 @@ class parser
|
|||
}
|
||||
else
|
||||
{
|
||||
if (not sax->key(m_lexer.move_string()))
|
||||
if (JSON_UNLIKELY(not sax->key(m_lexer.move_string())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -520,7 +520,7 @@ class parser
|
|||
|
||||
case token_type::begin_array:
|
||||
{
|
||||
if (not sax->start_array())
|
||||
if (JSON_UNLIKELY(not sax->start_array()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -531,7 +531,7 @@ class parser
|
|||
// closing ] -> we are done
|
||||
if (last_token == token_type::end_array)
|
||||
{
|
||||
if (not sax->end_array())
|
||||
if (JSON_UNLIKELY(not sax->end_array()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -557,7 +557,7 @@ class parser
|
|||
}
|
||||
else
|
||||
{
|
||||
if (not sax->number_float(res, m_lexer.move_string()))
|
||||
if (JSON_UNLIKELY(not sax->number_float(res, m_lexer.move_string())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -567,7 +567,7 @@ class parser
|
|||
|
||||
case token_type::literal_false:
|
||||
{
|
||||
if (not sax->boolean(false))
|
||||
if (JSON_UNLIKELY(not sax->boolean(false)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -576,7 +576,7 @@ class parser
|
|||
|
||||
case token_type::literal_null:
|
||||
{
|
||||
if (not sax->null())
|
||||
if (JSON_UNLIKELY(not sax->null()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -585,7 +585,7 @@ class parser
|
|||
|
||||
case token_type::literal_true:
|
||||
{
|
||||
if (not sax->boolean(true))
|
||||
if (JSON_UNLIKELY(not sax->boolean(true)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -594,7 +594,7 @@ class parser
|
|||
|
||||
case token_type::value_integer:
|
||||
{
|
||||
if (not sax->number_integer(m_lexer.get_number_integer()))
|
||||
if (JSON_UNLIKELY(not sax->number_integer(m_lexer.get_number_integer())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -603,7 +603,7 @@ class parser
|
|||
|
||||
case token_type::value_string:
|
||||
{
|
||||
if (not sax->string(m_lexer.move_string()))
|
||||
if (JSON_UNLIKELY(not sax->string(m_lexer.move_string())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -612,7 +612,7 @@ class parser
|
|||
|
||||
case token_type::value_unsigned:
|
||||
{
|
||||
if (not sax->number_unsigned(m_lexer.get_number_unsigned()))
|
||||
if (JSON_UNLIKELY(not sax->number_unsigned(m_lexer.get_number_unsigned())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -664,7 +664,7 @@ class parser
|
|||
// closing ]
|
||||
if (JSON_LIKELY(last_token == token_type::end_array))
|
||||
{
|
||||
if (not sax->end_array())
|
||||
if (JSON_UNLIKELY(not sax->end_array()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -703,7 +703,7 @@ class parser
|
|||
}
|
||||
else
|
||||
{
|
||||
if (not sax->key(m_lexer.move_string()))
|
||||
if (JSON_UNLIKELY(not sax->key(m_lexer.move_string())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -726,7 +726,7 @@ class parser
|
|||
// closing }
|
||||
if (JSON_LIKELY(last_token == token_type::end_object))
|
||||
{
|
||||
if (not sax->end_object())
|
||||
if (JSON_UNLIKELY(not sax->end_object()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -3415,23 +3415,17 @@ class json_sax_dom_parser : public json_sax<BasicJsonType>
|
|||
}
|
||||
else
|
||||
{
|
||||
switch (ref_stack.back()->m_type)
|
||||
assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());
|
||||
if (ref_stack.back()->is_array())
|
||||
{
|
||||
case value_t::array:
|
||||
{
|
||||
ref_stack.back()->m_value.array->push_back(BasicJsonType(std::forward<Value>(v)));
|
||||
return &(ref_stack.back()->m_value.array->back());
|
||||
}
|
||||
|
||||
case value_t::object:
|
||||
{
|
||||
assert(object_element);
|
||||
*object_element = BasicJsonType(std::forward<Value>(v));
|
||||
return object_element;
|
||||
}
|
||||
|
||||
default:
|
||||
assert(false); // LCOV_EXCL_LINE
|
||||
ref_stack.back()->m_value.array->emplace_back(std::forward<Value>(v));
|
||||
return &(ref_stack.back()->m_value.array->back());
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(object_element);
|
||||
*object_element = BasicJsonType(std::forward<Value>(v));
|
||||
return object_element;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3534,6 +3528,7 @@ class json_sax_dom_callback_parser : public json_sax<BasicJsonType>
|
|||
const bool keep = callback(ref_stack.size() - 1, parse_event_t::object_end, *ref_stack.back());
|
||||
if (not keep)
|
||||
{
|
||||
// discard object
|
||||
*ref_stack.back() = discarded;
|
||||
}
|
||||
|
||||
|
@ -3563,6 +3558,7 @@ class json_sax_dom_callback_parser : public json_sax<BasicJsonType>
|
|||
const bool keep = callback(ref_stack.size() - 1, parse_event_t::array_end, *ref_stack.back());
|
||||
if (not keep)
|
||||
{
|
||||
// discard array
|
||||
*ref_stack.back() = discarded;
|
||||
}
|
||||
|
||||
|
@ -3624,23 +3620,17 @@ class json_sax_dom_callback_parser : public json_sax<BasicJsonType>
|
|||
}
|
||||
else
|
||||
{
|
||||
switch (ref_stack.back()->m_type)
|
||||
assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());
|
||||
if (ref_stack.back()->is_array())
|
||||
{
|
||||
case value_t::array:
|
||||
{
|
||||
ref_stack.back()->m_value.array->push_back(BasicJsonType(std::forward<Value>(v)));
|
||||
return &(ref_stack.back()->m_value.array->back());
|
||||
}
|
||||
|
||||
case value_t::object:
|
||||
{
|
||||
assert(object_element);
|
||||
*object_element = BasicJsonType(std::forward<Value>(v));
|
||||
return object_element;
|
||||
}
|
||||
|
||||
default:
|
||||
assert(false); // LCOV_EXCL_LINE
|
||||
ref_stack.back()->m_value.array->emplace_back(std::forward<Value>(v));
|
||||
return &(ref_stack.back()->m_value.array->back());
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(object_element);
|
||||
*object_element = BasicJsonType(std::forward<Value>(v));
|
||||
return object_element;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4201,7 +4191,7 @@ class parser
|
|||
{
|
||||
case token_type::begin_object:
|
||||
{
|
||||
if (not sax->start_object())
|
||||
if (JSON_UNLIKELY(not sax->start_object()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4212,7 +4202,7 @@ class parser
|
|||
// closing } -> we are done
|
||||
if (last_token == token_type::end_object)
|
||||
{
|
||||
if (not sax->end_object())
|
||||
if (JSON_UNLIKELY(not sax->end_object()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4228,7 +4218,7 @@ class parser
|
|||
}
|
||||
else
|
||||
{
|
||||
if (not sax->key(m_lexer.move_string()))
|
||||
if (JSON_UNLIKELY(not sax->key(m_lexer.move_string())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4253,7 +4243,7 @@ class parser
|
|||
|
||||
case token_type::begin_array:
|
||||
{
|
||||
if (not sax->start_array())
|
||||
if (JSON_UNLIKELY(not sax->start_array()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4264,7 +4254,7 @@ class parser
|
|||
// closing ] -> we are done
|
||||
if (last_token == token_type::end_array)
|
||||
{
|
||||
if (not sax->end_array())
|
||||
if (JSON_UNLIKELY(not sax->end_array()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4290,7 +4280,7 @@ class parser
|
|||
}
|
||||
else
|
||||
{
|
||||
if (not sax->number_float(res, m_lexer.move_string()))
|
||||
if (JSON_UNLIKELY(not sax->number_float(res, m_lexer.move_string())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4300,7 +4290,7 @@ class parser
|
|||
|
||||
case token_type::literal_false:
|
||||
{
|
||||
if (not sax->boolean(false))
|
||||
if (JSON_UNLIKELY(not sax->boolean(false)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4309,7 +4299,7 @@ class parser
|
|||
|
||||
case token_type::literal_null:
|
||||
{
|
||||
if (not sax->null())
|
||||
if (JSON_UNLIKELY(not sax->null()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4318,7 +4308,7 @@ class parser
|
|||
|
||||
case token_type::literal_true:
|
||||
{
|
||||
if (not sax->boolean(true))
|
||||
if (JSON_UNLIKELY(not sax->boolean(true)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4327,7 +4317,7 @@ class parser
|
|||
|
||||
case token_type::value_integer:
|
||||
{
|
||||
if (not sax->number_integer(m_lexer.get_number_integer()))
|
||||
if (JSON_UNLIKELY(not sax->number_integer(m_lexer.get_number_integer())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4336,7 +4326,7 @@ class parser
|
|||
|
||||
case token_type::value_string:
|
||||
{
|
||||
if (not sax->string(m_lexer.move_string()))
|
||||
if (JSON_UNLIKELY(not sax->string(m_lexer.move_string())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4345,7 +4335,7 @@ class parser
|
|||
|
||||
case token_type::value_unsigned:
|
||||
{
|
||||
if (not sax->number_unsigned(m_lexer.get_number_unsigned()))
|
||||
if (JSON_UNLIKELY(not sax->number_unsigned(m_lexer.get_number_unsigned())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4397,7 +4387,7 @@ class parser
|
|||
// closing ]
|
||||
if (JSON_LIKELY(last_token == token_type::end_array))
|
||||
{
|
||||
if (not sax->end_array())
|
||||
if (JSON_UNLIKELY(not sax->end_array()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4436,7 +4426,7 @@ class parser
|
|||
}
|
||||
else
|
||||
{
|
||||
if (not sax->key(m_lexer.move_string()))
|
||||
if (JSON_UNLIKELY(not sax->key(m_lexer.move_string())))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4459,7 +4449,7 @@ class parser
|
|||
// closing }
|
||||
if (JSON_LIKELY(last_token == token_type::end_object))
|
||||
{
|
||||
if (not sax->end_object())
|
||||
if (JSON_UNLIKELY(not sax->end_object()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue