ExecutionIdGetterInterface & execution_id_manager
const MemoryValue & unconstrained_get(MemoryAddress index) const
Reads a value from memory without emitting an event.
void validate_tag(const MemoryValue &value) const
Validates that a value fits within its tag's bit-width via a range check.
EventEmitterInterface< MemoryEvent > & events
Memory(uint16_t space_id, RangeCheckInterface &range_check, ExecutionIdGetterInterface &execution_id_manager, EventEmitterInterface< MemoryEvent > &event_emitter)
const MemoryValue & get(MemoryAddress index) const override
Reads a tagged value from memory at the given address.
uint16_t get_space_id() const override
RangeCheckInterface & range_check
unordered_flat_map< MemoryAddress, MemoryValue > memory
void set(MemoryAddress index, MemoryValue value) override
Writes a tagged value to memory at the given address.
MemoryProvider(RangeCheckInterface &range_check, ExecutionIdGetterInterface &execution_id_manager, EventEmitterInterface< MemoryEvent > &event_emitter)
ExecutionIdGetterInterface & execution_id_manager
std::unique_ptr< MemoryInterface > make_memory(uint16_t space_id) override
EventEmitterInterface< MemoryEvent > & events
RangeCheckInterface & range_check
EventEmitter< DataCopyEvent > event_emitter
AVM range check gadget for witness generation.
::ankerl::unordered_dense::map< Key, T > unordered_flat_map
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept