barretenberg
Loading...
Searching...
No Matches
circuit_builders_fwd.hpp
1
9#pragma once
10#include <concepts>
11
12namespace proof_system::honk {
13namespace flavor {
14class Standard;
15class Ultra;
16} // namespace flavor
17} // namespace proof_system::honk
18
19namespace barretenberg {
20class Bn254FrParams;
21class Bn254FqParams;
22template <class Params> struct alignas(32) field;
23} // namespace barretenberg
24namespace arithmetization {
25template <typename FF_> class Ultra;
26} // namespace arithmetization
27namespace proof_system {
28template <class FF> class StandardCircuitBuilder_;
29using StandardCircuitBuilder = StandardCircuitBuilder_<barretenberg::field<barretenberg::Bn254FrParams>>;
30using StandardGrumpkinCircuitBuilder = StandardCircuitBuilder_<barretenberg::field<barretenberg::Bn254FqParams>>;
31template <class Arithmetization> class UltraCircuitBuilder_;
32using UltraCircuitBuilder =
33 UltraCircuitBuilder_<arithmetization::Ultra<barretenberg::field<barretenberg::Bn254FrParams>>>;
34template <class FF> class GoblinUltraCircuitBuilder_;
35using GoblinUltraCircuitBuilder = GoblinUltraCircuitBuilder_<barretenberg::field<barretenberg::Bn254FrParams>>;
36} // namespace proof_system
37
38#define EXTERN_STDLIB_TYPE(stdlib_type) \
39 extern template class stdlib_type<proof_system::StandardCircuitBuilder>; \
40 extern template class stdlib_type<proof_system::UltraCircuitBuilder>; \
41 extern template class stdlib_type<proof_system::GoblinUltraCircuitBuilder>;
42
43#define EXTERN_STDLIB_METHOD(stdlib_method) \
44 extern template stdlib_method(proof_system::StandardCircuitBuilder); \
45 extern template stdlib_method(proof_system::UltraCircuitBuilder); \
46 extern template stdlib_method(proof_system::GoblinUltraCircuitBuilder);
47
48#define EXTERN_STDLIB_TYPE_VA(stdlib_type, ...) \
49 extern template class stdlib_type<proof_system::StandardCircuitBuilder, __VA_ARGS__>; \
50 extern template class stdlib_type<proof_system::UltraCircuitBuilder, __VA_ARGS__>; \
51 extern template class stdlib_type<proof_system::GoblinUltraCircuitBuilder, __VA_ARGS__>;
52
53#define EXTERN_STDLIB_BASIC_TYPE(stdlib_type) extern template class stdlib_type<proof_system::StandardCircuitBuilder>;
54
55#define EXTERN_STDLIB_BASIC_TYPE_VA(stdlib_type, ...) \
56 extern template class stdlib_type<proof_system::StandardCircuitBuilder, __VA_ARGS__>;
57
58#define EXTERN_STDLIB_ULTRA_TYPE(stdlib_type) \
59 extern template class stdlib_type<proof_system::UltraCircuitBuilder>; \
60 extern template class stdlib_type<proof_system::GoblinUltraCircuitBuilder>;
61
62#define EXTERN_STDLIB_ULTRA_TYPE_VA(stdlib_type, ...) \
63 extern template class stdlib_type<proof_system::UltraCircuitBuilder, __VA_ARGS__>; \
64 extern template class stdlib_type<proof_system::GoblinUltraCircuitBuilder, __VA_ARGS__>;
65
66#define EXTERN_STDLIB_ULTRA_METHOD(stdlib_method) \
67 extern template stdlib_method(proof_system::UltraCircuitBuilder); \
68 extern template stdlib_method(proof_system::GoblinUltraCircuitBuilder);
constexpr_utils defines some helper methods that perform some stl-equivalent operations but in a cons...
Definition: constexpr_utils.hpp:16
Defines particular circuit builder types expected to be used for circuit construction in stdlib and c...
Definition: claim.hpp:6