barretenberg
Loading...
Searching...
No Matches
Public Member Functions | List of all members
proof_system::plonk::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
 

Detailed Description

template<typename Builder>
class proof_system::plonk::stdlib::DynamicArray< Builder >

A dynamic array of field elements.

Template Parameters
Builder(must support plookup)

Constructor & Destructor Documentation

◆ DynamicArray() [1/3]

template<typename Builder >
proof_system::plonk::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 UltraPlonk 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

◆ DynamicArray() [2/3]

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

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

Template Parameters
Builder
Parameters
other

◆ DynamicArray() [3/3]

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

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

Template Parameters
Builder
Parameters
other

Member Function Documentation

◆ conditional_pop()

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

Conditionallhy pop a field element off of the dynamic array.

Template Parameters
Builder
Parameters
predicate

◆ conditional_push()

template<typename Builder >
void proof_system::plonk::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

◆ operator=() [1/2]

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

Assignment Operator.

Template Parameters
Builder
Parameters
other
Returns
DynamicArray<Builder>&

◆ operator=() [2/2]

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

Move Assignment Operator.

Template Parameters
Builder
Parameters
other
Returns
DynamicArray<Builder>&

◆ pop()

template<typename Builder >
void proof_system::plonk::stdlib::DynamicArray< Builder >::pop

Pop a field element off of the dynamic array.

Template Parameters
Builder

◆ push()

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

Push a field element onto the dynamic array.

Template Parameters
Builder
Parameters
value

◆ read()

template<typename Builder >
field_t< Builder > proof_system::plonk::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>

◆ resize()

template<typename Builder >
void proof_system::plonk::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

◆ write()

template<typename Builder >
void proof_system::plonk::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

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