Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
ra_memory.cpp
Go to the documentation of this file.
1 
14 #include <cassert>
16 
17 namespace libsnark
18 {
19 
20 ra_memory::ra_memory(const size_t num_addresses, const size_t value_size)
21  : memory_interface(num_addresses, value_size)
22 {
23 }
24 
26  const size_t num_addresses,
27  const size_t value_size,
28  const std::vector<size_t> &contents_as_vector)
29  : memory_interface(num_addresses, value_size)
30 {
31  /* copy std::vector into std::map */
32  for (size_t i = 0; i < contents_as_vector.size(); ++i) {
33  contents[i] = contents_as_vector[i];
34  }
35 }
36 
38  const size_t num_addresses,
39  const size_t value_size,
40  const memory_contents &contents)
41  : memory_interface(num_addresses, value_size), contents(contents)
42 {
43 }
44 
45 size_t ra_memory::get_value(const size_t address) const
46 {
47  assert(address < num_addresses);
48  auto it = contents.find(address);
49  return (it == contents.end() ? 0 : it->second);
50 }
51 
52 void ra_memory::set_value(const size_t address, const size_t value)
53 {
54  contents[address] = value;
55 }
56 
57 } // namespace libsnark
ra_memory.hpp
libsnark
Definition: accumulation_vector.hpp:18
libsnark::ra_memory::set_value
void set_value(const size_t address, const size_t value)
Definition: ra_memory.cpp:52
libsnark::memory_contents
std::map< size_t, size_t > memory_contents
Definition: memory_interface.hpp:25
libsnark::memory_interface::num_addresses
size_t num_addresses
Definition: memory_interface.hpp:40
libsnark::ra_memory::get_value
size_t get_value(const size_t address) const
Definition: ra_memory.cpp:45
libsnark::memory_interface
Definition: memory_interface.hpp:37
libsnark::ra_memory::contents
memory_contents contents
Definition: ra_memory.hpp:27
libsnark::ra_memory::ra_memory
ra_memory(const size_t num_addresses, const size_t value_size)
Definition: ra_memory.cpp:20