use proofman_fields::Goldilocks;
use crate::{MainTrace, MainTraceRow};
pub use proofman_common::trace::IndexedFill;
pub const MAIN_AIRGROUP_ID: usize = MainTrace::<()>::AIRGROUP_ID;
pub const MAIN_AIR_ID: usize = MainTrace::<()>::AIR_ID;
pub const MAIN_LANES: usize = (std::mem::offset_of!(MainTraceRow<Goldilocks>, pc)
- std::mem::offset_of!(MainTraceRow<Goldilocks>, flag))
/ std::mem::size_of::<Goldilocks>();
pub const MAIN_STEPS_PER_SEGMENT: usize = MainTrace::<()>::NUM_ROWS * MAIN_LANES;
const _: () = assert!(
MainTrace::<()>::NUM_ROWS.is_power_of_two(),
"MainTrace::NUM_ROWS must be a power of two",
);
#[cfg(test)]
mod tests {
use super::*;
use crate::MainTraceRowOps;
#[test]
fn main_lanes_matches_the_generated_row() {
let row = MainTraceRow::<Goldilocks>::default();
assert_eq!(MAIN_LANES, row.pc.len());
assert_eq!(MAIN_LANES, MainTraceRowOps::get_all_flag(&row).len());
}
}