Skip to content

Commit 3ee6c45

Browse files
committed
napi: wrapper for feature flags
1 parent 125206c commit 3ee6c45

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
use kimchi::circuits::{
2+
constraints::FeatureFlags as KimchiFeatureFlags,
3+
lookup::lookups::{LookupFeatures, LookupPatterns},
4+
};
5+
use napi_derive::napi;
6+
7+
#[napi(object)]
8+
#[derive(Clone, Copy, Debug, Default)]
9+
pub struct NapiFeatureFlags {
10+
pub range_check0: bool,
11+
pub range_check1: bool,
12+
pub foreign_field_add: bool,
13+
pub foreign_field_mul: bool,
14+
pub xor: bool,
15+
pub rot: bool,
16+
pub lookup: bool,
17+
pub runtime_tables: bool,
18+
}
19+
20+
impl From<KimchiFeatureFlags> for NapiFeatureFlags {
21+
fn from(value: KimchiFeatureFlags) -> Self {
22+
let LookupPatterns {
23+
xor,
24+
lookup,
25+
range_check,
26+
foreign_field_mul,
27+
} = value.lookup_features.patterns;
28+
29+
Self {
30+
range_check0: value.range_check0,
31+
range_check1: value.range_check1,
32+
foreign_field_add: value.foreign_field_add,
33+
foreign_field_mul: value.foreign_field_mul,
34+
xor: value.xor,
35+
rot: value.rot,
36+
lookup: lookup || range_check || foreign_field_mul || xor,
37+
runtime_tables: value.lookup_features.uses_runtime_tables,
38+
}
39+
}
40+
}
41+
42+
impl From<NapiFeatureFlags> for KimchiFeatureFlags {
43+
fn from(value: NapiFeatureFlags) -> Self {
44+
KimchiFeatureFlags {
45+
range_check0: value.range_check0,
46+
range_check1: value.range_check1,
47+
foreign_field_add: value.foreign_field_add,
48+
foreign_field_mul: value.foreign_field_mul,
49+
xor: value.xor,
50+
rot: value.rot,
51+
lookup_features: LookupFeatures {
52+
patterns: LookupPatterns {
53+
xor: value.lookup && value.xor,
54+
lookup: value.lookup,
55+
range_check: value.lookup && (value.range_check0 || value.range_check1),
56+
foreign_field_mul: value.lookup && value.foreign_field_mul,
57+
},
58+
joint_lookup_used: value.lookup,
59+
uses_runtime_tables: value.runtime_tables,
60+
},
61+
}
62+
}
63+
}

plonk-napi/src/wrappers/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
pub(crate) mod field;
22
pub(crate) mod group;
3-
pub(crate) mod wires;
3+
pub(crate) mod wires;
4+
pub(crate) mod feature_flags;

0 commit comments

Comments
 (0)