use sp1_derive::AlignedBorrow;
use std::mem::size_of;
use crate::{air::Word, memory::MemoryReadWriteCols, operations::BabyBearWordRangeChecker};
pub const NUM_MEMORY_COLUMNS: usize = size_of::<MemoryColumns<u8>>();
#[derive(AlignedBorrow, Default, Debug, Clone, Copy)]
#[repr(C)]
pub struct MemoryColumns<T> {
pub addr_word: Word<T>,
pub addr_word_range_checker: BabyBearWordRangeChecker<T>,
pub addr_aligned: T,
pub aa_least_sig_byte_decomp: [T; 6],
pub addr_offset: T,
pub memory_access: MemoryReadWriteCols<T>,
pub offset_is_one: T,
pub offset_is_two: T,
pub offset_is_three: T,
pub most_sig_byte_decomp: [T; 8],
pub addr_word_nonce: T,
pub unsigned_mem_val_nonce: T,
}