Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
libsnark
common
data_structures
integer_permutation.hpp
Go to the documentation of this file.
1
13
#ifndef INTEGER_PERMUTATION_HPP_
14
#define INTEGER_PERMUTATION_HPP_
15
16
#include <cstddef>
17
#include <vector>
18
19
namespace
libsnark
20
{
21
22
class
integer_permutation
23
{
24
private
:
25
std::vector<size_t> contents;
/* offset by min_element */
26
27
public
:
28
size_t
min_element
;
29
size_t
max_element
;
30
31
integer_permutation
(
const
size_t
size
= 0);
32
integer_permutation
(
const
size_t
min_element
,
const
size_t
max_element
);
33
34
integer_permutation
(
const
integer_permutation
&other) =
default
;
35
integer_permutation
&
operator=
(
const
integer_permutation
&other) =
default
;
36
37
size_t
size
()
const
;
38
bool
operator==
(
const
integer_permutation
&other)
const
;
39
40
void
set
(
const
size_t
position,
const
size_t
value);
41
size_t
get
(
const
size_t
position)
const
;
42
43
bool
is_valid
()
const
;
44
integer_permutation
inverse
()
const
;
45
integer_permutation
slice
(
46
const
size_t
slice_min_element,
const
size_t
slice_max_element)
const
;
47
48
/* Similarly to std::next_permutation this transforms the current
49
integer permutation into the next lexicographically ordered
50
permutation; returns false if the last permutation was reached and
51
this is now the identity permutation on [min_element .. max_element] */
52
bool
next_permutation
();
53
54
void
random_shuffle
();
55
};
56
57
}
// namespace libsnark
58
59
#endif // INTEGER_PERMUTATION_HPP_
libsnark::integer_permutation::inverse
integer_permutation inverse() const
Definition:
integer_permutation.cpp:82
libsnark::integer_permutation::is_valid
bool is_valid() const
Definition:
integer_permutation.cpp:66
libsnark
Definition:
accumulation_vector.hpp:18
libsnark::integer_permutation::max_element
size_t max_element
Definition:
integer_permutation.hpp:29
libsnark::integer_permutation::random_shuffle
void random_shuffle()
Definition:
integer_permutation.cpp:122
libsnark::integer_permutation::min_element
size_t min_element
Definition:
integer_permutation.hpp:28
libsnark::integer_permutation::operator=
integer_permutation & operator=(const integer_permutation &other)=default
libsnark::integer_permutation::get
size_t get(const size_t position) const
Definition:
integer_permutation.cpp:60
libsnark::integer_permutation::set
void set(const size_t position, const size_t value)
Definition:
integer_permutation.cpp:54
libsnark::integer_permutation::integer_permutation
integer_permutation(const size_t size=0)
Definition:
integer_permutation.cpp:24
libsnark::integer_permutation::next_permutation
bool next_permutation()
Definition:
integer_permutation.cpp:117
libsnark::integer_permutation::size
size_t size() const
Definition:
integer_permutation.cpp:41
libsnark::integer_permutation
Definition:
integer_permutation.hpp:22
libsnark::integer_permutation::slice
integer_permutation slice(const size_t slice_min_element, const size_t slice_max_element) const
Definition:
integer_permutation.cpp:98
libsnark::integer_permutation::operator==
bool operator==(const integer_permutation &other) const
Definition:
integer_permutation.cpp:46
Generated on Wed Jan 25 2023 11:05:57 for Clearmatics Libsnark by
1.8.17