Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::stdlib::DynamicArray< Builder > Class Template Reference

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.
 
DynamicArrayoperator= (const DynamicArray &other)
 Assignment Operator.
 
DynamicArrayoperator= (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
 
Builderget_context () const
 

Private Types

typedef field_t< Builderfield_pt
 
typedef bool_t< Builderbool_pt
 
typedef witness_t< Builderwitness_pt
 

Private Attributes

Builder_context = nullptr
 
size_t _max_size
 
field_pt _length = 0
 
ram_table< Builder_inner_table
 

Detailed Description

template<typename Builder>
class bb::stdlib::DynamicArray< Builder >

A dynamic array of field elements.

Template Parameters
Builder(must support plookup)

Definition at line 17 of file dynamic_array.hpp.

Member Typedef Documentation

◆ bool_pt

template<typename Builder >
typedef bool_t<Builder> bb::stdlib::DynamicArray< Builder >::bool_pt
private

Definition at line 20 of file dynamic_array.hpp.

◆ field_pt

template<typename Builder >
typedef field_t<Builder> bb::stdlib::DynamicArray< Builder >::field_pt
private

Definition at line 19 of file dynamic_array.hpp.

◆ witness_pt

template<typename Builder >
typedef witness_t<Builder> bb::stdlib::DynamicArray< Builder >::witness_pt
private

Definition at line 21 of file dynamic_array.hpp.

Constructor & Destructor Documentation

◆ DynamicArray() [1/3]

template<typename Builder >
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.

Template Parameters
Builder
Parameters
builder
maximum_sizeThe maximum size of the array

Definition at line 29 of file dynamic_array.cpp.

◆ DynamicArray() [2/3]

template<typename Builder >
bb::stdlib::DynamicArray< Builder >::DynamicArray ( const DynamicArray< Builder > &  other)

Construct a new Dynamic Array< Builder>:: Dynamic Array object.

Template Parameters
Builder
Parameters
other

Definition at line 50 of file dynamic_array.cpp.

◆ DynamicArray() [3/3]

template<typename Builder >
bb::stdlib::DynamicArray< Builder >::DynamicArray ( DynamicArray< Builder > &&  other)

Construct a new Dynamic Array< Builder>:: Dynamic Array object.

Template Parameters
Builder
Parameters
other

Definition at line 64 of file dynamic_array.cpp.

Member Function Documentation

◆ conditional_pop()

template<typename Builder >
void bb::stdlib::DynamicArray< Builder >::conditional_pop ( const bool_pt predicate)

Conditionallhy pop a field element off of the dynamic array.

Template Parameters
Builder
Parameters
predicate

Definition at line 271 of file dynamic_array.cpp.

◆ conditional_push()

template<typename Builder >
void bb::stdlib::DynamicArray< Builder >::conditional_push ( const bool_pt predicate,
const field_pt value 
)

Conditionally push a field element onto the dynamic array.

Template Parameters
Builder
Parameters
predicate
value

Definition at line 255 of file dynamic_array.cpp.

◆ get_context()

template<typename Builder >
Builder * bb::stdlib::DynamicArray< Builder >::get_context ( ) const
inline

Definition at line 47 of file dynamic_array.hpp.

◆ max_size()

template<typename Builder >
size_t bb::stdlib::DynamicArray< Builder >::max_size ( ) const
inline

Definition at line 45 of file dynamic_array.hpp.

◆ native_size()

template<typename Builder >
size_t bb::stdlib::DynamicArray< Builder >::native_size ( ) const
inline

Definition at line 44 of file dynamic_array.hpp.

◆ operator=() [1/2]

template<typename Builder >
DynamicArray< Builder > & bb::stdlib::DynamicArray< Builder >::operator= ( const DynamicArray< Builder > &  other)

Assignment Operator.

Template Parameters
Builder
Parameters
other
Returns
DynamicArray<Builder>&

Definition at line 78 of file dynamic_array.cpp.

◆ operator=() [2/2]

template<typename Builder >
DynamicArray< Builder > & bb::stdlib::DynamicArray< Builder >::operator= ( DynamicArray< Builder > &&  other)

Move Assignment Operator.

Template Parameters
Builder
Parameters
other
Returns
DynamicArray<Builder>&

Definition at line 94 of file dynamic_array.cpp.

◆ pop()

template<typename Builder >
void bb::stdlib::DynamicArray< Builder >::pop ( )

Pop a field element off of the dynamic array.

Template Parameters
Builder

Definition at line 237 of file dynamic_array.cpp.

◆ push()

template<typename Builder >
void bb::stdlib::DynamicArray< Builder >::push ( const field_pt value)

Push a field element onto the dynamic array.

Template Parameters
Builder
Parameters
value

Definition at line 222 of file dynamic_array.cpp.

◆ read()

template<typename Builder >
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.

Template Parameters
Builder
Parameters
index
Returns
field_t<Builder>

Definition at line 175 of file dynamic_array.cpp.

◆ resize()

template<typename Builder >
void bb::stdlib::DynamicArray< Builder >::resize ( const field_pt new_length,
const field_pt  default_value = 0 
)

Resize array. Current method v. inefficient!

Template Parameters
Builder
Parameters
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.

◆ size()

template<typename Builder >
field_pt bb::stdlib::DynamicArray< Builder >::size ( ) const
inline

Definition at line 43 of file dynamic_array.hpp.

◆ write()

template<typename Builder >
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.

Template Parameters
Builder
Parameters
index
value

Definition at line 199 of file dynamic_array.cpp.

Member Data Documentation

◆ _context

template<typename Builder >
Builder* bb::stdlib::DynamicArray< Builder >::_context = nullptr
private

Definition at line 50 of file dynamic_array.hpp.

◆ _inner_table

template<typename Builder >
ram_table<Builder> bb::stdlib::DynamicArray< Builder >::_inner_table
mutableprivate

Definition at line 53 of file dynamic_array.hpp.

◆ _length

template<typename Builder >
field_pt bb::stdlib::DynamicArray< Builder >::_length = 0
private

Definition at line 52 of file dynamic_array.hpp.

◆ _max_size

template<typename Builder >
size_t bb::stdlib::DynamicArray< Builder >::_max_size
private

Definition at line 51 of file dynamic_array.hpp.


The documentation for this class was generated from the following files: