MCPcopy Create free account
hub / github.com/CalcProgrammer1/OpenRGB / hash

Function hash

dependencies/json/json.hpp:4680–4765  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4678*/
4679template<typename BasicJsonType>
4680std::size_t hash(const BasicJsonType& j)
4681{
4682 using string_t = typename BasicJsonType::string_t;
4683 using number_integer_t = typename BasicJsonType::number_integer_t;
4684 using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
4685 using number_float_t = typename BasicJsonType::number_float_t;
4686
4687 const auto type = static_cast<std::size_t>(j.type());
4688 switch (j.type())
4689 {
4690 case BasicJsonType::value_t::null:
4691 case BasicJsonType::value_t::discarded:
4692 {
4693 return combine(type, 0);
4694 }
4695
4696 case BasicJsonType::value_t::object:
4697 {
4698 auto seed = combine(type, j.size());
4699 for (const auto& element : j.items())
4700 {
4701 const auto h = std::hash<string_t> {}(element.key());
4702 seed = combine(seed, h);
4703 seed = combine(seed, hash(element.value()));
4704 }
4705 return seed;
4706 }
4707
4708 case BasicJsonType::value_t::array:
4709 {
4710 auto seed = combine(type, j.size());
4711 for (const auto& element : j)
4712 {
4713 seed = combine(seed, hash(element));
4714 }
4715 return seed;
4716 }
4717
4718 case BasicJsonType::value_t::string:
4719 {
4720 const auto h = std::hash<string_t> {}(j.template get_ref<const string_t&>());
4721 return combine(type, h);
4722 }
4723
4724 case BasicJsonType::value_t::boolean:
4725 {
4726 const auto h = std::hash<bool> {}(j.template get<bool>());
4727 return combine(type, h);
4728 }
4729
4730 case BasicJsonType::value_t::number_integer:
4731 {
4732 const auto h = std::hash<number_integer_t> {}(j.template get<number_integer_t>());
4733 return combine(type, h);
4734 }
4735
4736 case BasicJsonType::value_t::number_unsigned:
4737 {

Callers 1

operator()Method · 0.70

Calls 7

combineFunction · 0.70
sizeMethod · 0.45
keyMethod · 0.45
valueMethod · 0.45
get_binaryMethod · 0.45
has_subtypeMethod · 0.45
subtypeMethod · 0.45

Tested by

no test coverage detected