Annotate noexcept and constexpr with HEDLEY, and add interval containment, ChaCha, and the dyadic range tables.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
875f09fec1
commit
0d8a5a8131
97 changed files with 9212 additions and 1159 deletions
|
|
@ -1,6 +1,7 @@
|
|||
/// @file dpf/json.hpp
|
||||
/// @brief
|
||||
/// @details
|
||||
/// @brief nlohmann::json serializers for DPF keys and beaver triples.
|
||||
/// @details ADL `adl_serializer` specializations so `nlohmann::json` can
|
||||
/// convert the library's key and triple types.
|
||||
/// @author Ryan Henry <ryan.henry@ucalgary.ca>
|
||||
/// @copyright Copyright (c) 2019-2024 Ryan Henry and [others](@ref authors)
|
||||
/// @license Released under a GNU General Public v2.0 (GPLv2) license;
|
||||
|
|
@ -92,6 +93,9 @@ struct adl_serializer<dpf::detail::cmp_meta>
|
|||
j.at("eval_as_ge").get_to(c.eval_as_ge);
|
||||
j.at("include_eq").get_to(c.include_eq);
|
||||
j.at("active").get_to(c.active);
|
||||
c.incremental = j.value("incremental", false);
|
||||
c.block_width = j.value("block_width", 0);
|
||||
c.tail_bits = j.value("tail_bits", 0);
|
||||
}
|
||||
|
||||
static void to_json(nlohmann::json & j, const dpf::detail::cmp_meta & c) // NOLINT(runtime/references)
|
||||
|
|
@ -105,6 +109,13 @@ struct adl_serializer<dpf::detail::cmp_meta>
|
|||
{"include_eq", c.include_eq},
|
||||
{"active", c.active}
|
||||
};
|
||||
if (c.incremental)
|
||||
j["incremental"] = true;
|
||||
if (c.block_width != 0)
|
||||
{
|
||||
j["block_width"] = c.block_width;
|
||||
j["tail_bits"] = c.tail_bits;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -197,6 +208,12 @@ struct adl_serializer<dpf::dpf_key<InteriorPRG, ExteriorPRG, InputT, OutputT, Ou
|
|||
j.at("value_cw").get_to(value_cws);
|
||||
uint64_t cw_last = j.at("cw_last").template get<uint64_t>();
|
||||
uint64_t cmp_addend = j.at("cmp_addend").template get<uint64_t>();
|
||||
typename dpf_type::tail_array tail{};
|
||||
if constexpr (dpf_type::cmp_block > 0)
|
||||
j.at("tail_cw").get_to(tail);
|
||||
typename dpf_type::prefix_cw_array prefix{};
|
||||
if constexpr (dpf_type::cmp_idcf)
|
||||
j.at("prefix_cw").get_to(prefix);
|
||||
|
||||
typename dpf_type::leaf_wrapper_tuple leaves{};
|
||||
input_type offset_share{};
|
||||
|
|
@ -204,7 +221,7 @@ struct adl_serializer<dpf::dpf_key<InteriorPRG, ExteriorPRG, InputT, OutputT, Ou
|
|||
|
||||
return dpf_type{root, correction_words, correction_advice,
|
||||
std::move(leaves), offset_share, cmp, value_cws, cw_last,
|
||||
cmp_addend, addends};
|
||||
cmp_addend, addends, {}, 0, tail, {}, prefix};
|
||||
}
|
||||
|
||||
static void to_json(nlohmann::json & j, const dpf_type & dpf) // NOLINT(runtime/references)
|
||||
|
|
@ -221,6 +238,10 @@ struct adl_serializer<dpf::dpf_key<InteriorPRG, ExteriorPRG, InputT, OutputT, Ou
|
|||
{"cw_last", static_cast<uint64_t>(dpf.cw_last())},
|
||||
{"cmp_addend", static_cast<uint64_t>(dpf.cmp_addend())}
|
||||
};
|
||||
if constexpr (dpf_type::cmp_block > 0)
|
||||
j["tail_cw"] = dpf.tail_cw();
|
||||
if constexpr (dpf_type::cmp_idcf)
|
||||
j["prefix_cw"] = dpf.prefix_cws();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue