Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
Public Member Functions | List of all members
gadgetlib2::DualWordArray Class Reference

#include <variable.hpp>

Public Member Functions

 DualWordArray (const FieldType &fieldType)
 
 DualWordArray (const MultiPackedWordArray &multipackedContents, const UnpackedWordArray &unpackedContents)
 
MultiPackedWordArray multipacked () const
 
UnpackedWordArray unpacked () const
 
PackedWordArray packed () const
 
void push_back (const DualWord &dualWord)
 
DualWord at (size_t i) const
 
size_t size () const
 

Detailed Description

Definition at line 449 of file variable.hpp.

Constructor & Destructor Documentation

◆ DualWordArray() [1/2]

gadgetlib2::DualWordArray::DualWordArray ( const FieldType fieldType)

Definition at line 435 of file variable.cpp.

436  : multipackedContents_(0, MultiPackedWord(fieldType))
437  , unpackedContents_(0)
438  , numElements_(0)
439 {
440 }

◆ DualWordArray() [2/2]

gadgetlib2::DualWordArray::DualWordArray ( const MultiPackedWordArray multipackedContents,
const UnpackedWordArray unpackedContents 
)

Definition at line 442 of file variable.cpp.

445  : multipackedContents_(multipackedContents)
446  , unpackedContents_(unpackedContents)
447  , numElements_(multipackedContents_.size())
448 {
450  multipackedContents_.size() == numElements_,
451  "Dual Variable multipacked contents size mismatch");
453  unpackedContents_.size() == numElements_,
454  "Dual Variable packed contents size mismatch");
455 }

Member Function Documentation

◆ at()

DualWord gadgetlib2::DualWordArray::at ( size_t  i) const

Definition at line 484 of file variable.cpp.

485 {
486  // const MultiPackedWord multipackedRep = multipacked()[i];
487  // const UnpackedWord unpackedRep = unpacked()[i];
488  // const DualWord retval(multipackedRep, unpackedRep);
489  // return retval;
490  return DualWord(multipacked()[i], unpacked()[i]);
491 }
Here is the call graph for this function:

◆ multipacked()

MultiPackedWordArray gadgetlib2::DualWordArray::multipacked ( ) const

Definition at line 457 of file variable.cpp.

458 {
459  return multipackedContents_;
460 }
Here is the caller graph for this function:

◆ packed()

PackedWordArray gadgetlib2::DualWordArray::packed ( ) const

Definition at line 462 of file variable.cpp.

463 {
465  numElements_ == multipackedContents_.size(),
466  "multipacked contents size mismatch")
467  PackedWordArray retval(numElements_);
468  for (size_t i = 0; i < numElements_; ++i) {
469  const auto element = multipackedContents_[i];
471  element.size() == 1, "Cannot convert from multipacked to packed");
472  retval[i] = element[0];
473  }
474  return retval;
475 }

◆ push_back()

void gadgetlib2::DualWordArray::push_back ( const DualWord dualWord)

Definition at line 477 of file variable.cpp.

478 {
479  multipackedContents_.push_back(dualWord.multipacked());
480  unpackedContents_.push_back(dualWord.unpacked());
481  ++numElements_;
482 }
Here is the call graph for this function:

◆ size()

size_t gadgetlib2::DualWordArray::size ( ) const

Definition at line 493 of file variable.cpp.

494 {
496  multipackedContents_.size() == numElements_,
497  "Dual Variable multipacked contents size mismatch");
499  unpackedContents_.size() == numElements_,
500  "Dual Variable packed contents size mismatch");
501  return numElements_;
502 }

◆ unpacked()

UnpackedWordArray gadgetlib2::DualWordArray::unpacked ( ) const

Definition at line 461 of file variable.cpp.

461 { return unpackedContents_; }
Here is the caller graph for this function:

The documentation for this class was generated from the following files:
gadgetlib2::DualWordArray::multipacked
MultiPackedWordArray multipacked() const
Definition: variable.cpp:457
gadgetlib2::PackedWordArray
VariableArray PackedWordArray
Definition: variable.hpp:385
GADGETLIB_ASSERT
#define GADGETLIB_ASSERT(predicate, msg)
Definition: infrastructure.hpp:94
gadgetlib2::DualWordArray::unpacked
UnpackedWordArray unpacked() const
Definition: variable.cpp:461