Barretenberg
The ZK-SNARK library at the core of Aztec
|
A dynamic array of field elements. More...
#include <dynamic_array.hpp>
Public Member Functions | |
DynamicArray (Builder *builder, const size_t maximum_size) | |
Construct a new Dynamic Array< Builder>:: Dynamic Array object. | |
DynamicArray (const DynamicArray &other) | |
Construct a new Dynamic Array< Builder>:: Dynamic Array object. | |
DynamicArray (DynamicArray &&other) | |
Construct a new Dynamic Array< Builder>:: Dynamic Array object. | |
DynamicArray & | operator= (const DynamicArray &other) |
Assignment Operator. | |
DynamicArray & | operator= (DynamicArray &&other) |
Move Assignment Operator. | |
void | resize (const field_pt &new_length, const field_pt default_value=0) |
Resize array. Current method v. inefficient! | |
field_pt | read (const field_pt &index) const |
Read a field element from the dynamic array at an index value. | |
void | write (const field_pt &index, const field_pt &value) |
Write a field element into the dynamic array at an index value. | |
void | push (const field_pt &index) |
Push a field element onto the dynamic array. | |
void | pop () |
Pop a field element off of the dynamic array. | |
void | conditional_push (const bool_pt &predicate, const field_pt &index) |
Conditionally push a field element onto the dynamic array. | |
void | conditional_pop (const bool_pt &predicate) |
Conditionallhy pop a field element off of the dynamic array. | |
field_pt | size () const |
size_t | native_size () const |
size_t | max_size () const |
Builder * | get_context () const |
Private Types | |
typedef field_t< Builder > | field_pt |
typedef bool_t< Builder > | bool_pt |
typedef witness_t< Builder > | witness_pt |
Private Attributes | |
Builder * | _context = nullptr |
size_t | _max_size |
field_pt | _length = 0 |
ram_table< Builder > | _inner_table |
A dynamic array of field elements.
Builder | (must support plookup) |
Definition at line 17 of file dynamic_array.hpp.
|
private |
Definition at line 20 of file dynamic_array.hpp.
|
private |
Definition at line 19 of file dynamic_array.hpp.
|
private |
Definition at line 21 of file dynamic_array.hpp.
bb::stdlib::DynamicArray< Builder >::DynamicArray | ( | Builder * | builder, |
const size_t | maximum_size | ||
) |
Construct a new Dynamic Array< Builder>:: Dynamic Array object.
Dynamic arrays require a maximum size when created, that cannot be exceeded. Read and write operations cost 3.25 Ultra gates. Each dynamic array requires an additional 3.25 * maximum_size number of gates. If the dynamic array also requires a unique range constraint table due to its length (e.g. not a power of 2), this will add an additional (maximum_size / 6) gates.
Builder |
builder | |
maximum_size | The maximum size of the array |
Definition at line 29 of file dynamic_array.cpp.
bb::stdlib::DynamicArray< Builder >::DynamicArray | ( | const DynamicArray< Builder > & | other | ) |
Construct a new Dynamic Array< Builder>:: Dynamic Array object.
Builder |
other |
Definition at line 50 of file dynamic_array.cpp.
bb::stdlib::DynamicArray< Builder >::DynamicArray | ( | DynamicArray< Builder > && | other | ) |
Construct a new Dynamic Array< Builder>:: Dynamic Array object.
Builder |
other |
Definition at line 64 of file dynamic_array.cpp.
void bb::stdlib::DynamicArray< Builder >::conditional_pop | ( | const bool_pt & | predicate | ) |
Conditionallhy pop a field element off of the dynamic array.
Builder |
predicate |
Definition at line 271 of file dynamic_array.cpp.
void bb::stdlib::DynamicArray< Builder >::conditional_push | ( | const bool_pt & | predicate, |
const field_pt & | value | ||
) |
Conditionally push a field element onto the dynamic array.
Builder |
predicate | |
value |
Definition at line 255 of file dynamic_array.cpp.
|
inline |
Definition at line 47 of file dynamic_array.hpp.
|
inline |
Definition at line 45 of file dynamic_array.hpp.
|
inline |
Definition at line 44 of file dynamic_array.hpp.
DynamicArray< Builder > & bb::stdlib::DynamicArray< Builder >::operator= | ( | const DynamicArray< Builder > & | other | ) |
Assignment Operator.
Builder |
other |
Definition at line 78 of file dynamic_array.cpp.
DynamicArray< Builder > & bb::stdlib::DynamicArray< Builder >::operator= | ( | DynamicArray< Builder > && | other | ) |
Move Assignment Operator.
Builder |
other |
Definition at line 94 of file dynamic_array.cpp.
void bb::stdlib::DynamicArray< Builder >::pop | ( | ) |
Pop a field element off of the dynamic array.
Builder |
Definition at line 237 of file dynamic_array.cpp.
void bb::stdlib::DynamicArray< Builder >::push | ( | const field_pt & | value | ) |
Push a field element onto the dynamic array.
Builder |
value |
Definition at line 222 of file dynamic_array.cpp.
field_t< Builder > bb::stdlib::DynamicArray< Builder >::read | ( | const field_pt & | index | ) | const |
Read a field element from the dynamic array at an index value.
Builder |
index |
Definition at line 175 of file dynamic_array.cpp.
void bb::stdlib::DynamicArray< Builder >::resize | ( | const field_pt & | new_length, |
const field_pt | default_value = 0 |
||
) |
Resize array. Current method v. inefficient!
Builder |
new_length |
Iterate over max array size if i is currently >= length but will be < new_length, write default_value
into ram table
Definition at line 109 of file dynamic_array.cpp.
|
inline |
Definition at line 43 of file dynamic_array.hpp.
void bb::stdlib::DynamicArray< Builder >::write | ( | const field_pt & | index, |
const field_pt & | value | ||
) |
Write a field element into the dynamic array at an index value.
Builder |
index | |
value |
Definition at line 199 of file dynamic_array.cpp.
|
private |
Definition at line 50 of file dynamic_array.hpp.
|
mutableprivate |
Definition at line 53 of file dynamic_array.hpp.
|
private |
Definition at line 52 of file dynamic_array.hpp.
|
private |
Definition at line 51 of file dynamic_array.hpp.