9#include "../circuit_builders/circuit_builders.hpp"
20 for (
const auto& entry : table_entries) {
21 if (entry.get_context() !=
nullptr) {
26 raw_entries = table_entries;
27 length = raw_entries.size();
34 _tags.resize(raw_entries.size());
35 for (
size_t i = 0; i <
length; ++i) {
36 _tags[i] = raw_entries[i].get_origin_tag();
51 for (
const auto& entry : raw_entries) {
52 if (entry.is_constant()) {
55 fixed_witness.set_origin_tag(entry.get_origin_tag());
56 entries.emplace_back(fixed_witness);
59 entries.emplace_back(entry.normalize());
64 for (
size_t i = 0; i <
length; ++i) {
65 context->set_ROM_element(rom_id, i, entries[i].get_witness_index());
69 _tags.resize(raw_entries.size());
70 for (
size_t i = 0; i <
length; ++i) {
71 _tags[i] = raw_entries[i].get_origin_tag();
76template <
typename Builder>
78 : raw_entries(other.raw_entries)
79 , entries(other.entries)
82 , rom_id(other.rom_id)
83 , initialized(other.initialized)
87template <
typename Builder>
89 : raw_entries(other.raw_entries)
90 , entries(other.entries)
93 , rom_id(other.rom_id)
94 , initialized(other.initialized)
113 entries = other.entries;
116 rom_id = other.rom_id;
117 initialized = other.initialized;
126 context->failure(
"rom_rable: ROM array access out of bounds");
129 return entries[index];
143 if (native_index >=
length) {
144 context->failure(
"rom_table: ROM array access out of bounds");
150 const size_t cast_index =
static_cast<size_t>(
static_cast<uint64_t
>(native_index));
153 if (native_index <
length) {
155 element.set_origin_tag(_tags[cast_index]);
#define ASSERT(expression,...)
static field_t from_witness_index(Builder *ctx, uint32_t witness_index)
Builder * get_context() const
bb::fr get_value() const
Given a := *this, compute its value given by a.v * a.mul + a.add.
uint32_t get_normalized_witness_index() const
Get the index of a normalized version of this element.
std::vector< field_pt > entries
std::vector< OriginTag > _tags
void initialize_table() const
rom_table & operator=(const rom_table &other)
std::vector< field_pt > raw_entries
field_pt operator[](const size_t index) const
Contains all the headers required to adequately compile the types defined in circuit_builders_fwd....
StrictMock< MockContext > context
uint8_t const size_t length
FF const & operator[](size_t idx) const
Retruns the element in beta_products at place #idx.
std::conditional_t< IsGoblinBigGroup< C, Fq, Fr, G >, element_goblin::goblin_element< C, goblin_field< C >, Fr, G >, element_default::element< C, Fq, Fr, G > > element
element wraps either element_default::element or element_goblin::goblin_element depending on parametr...
Entry point for Barretenberg command-line interface.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept