1use arbitrary::Arbitrary;
2use strum::Display;
3use strum::EnumCount;
4use strum::EnumIter;
5
6use crate::AIR;
7use crate::table::cascade::CascadeTable;
8use crate::table::hash::HashTable;
9use crate::table::jump_stack::JumpStackTable;
10use crate::table::lookup::LookupTable;
11use crate::table::op_stack::OpStackTable;
12use crate::table::processor::ProcessorTable;
13use crate::table::program::ProgramTable;
14use crate::table::ram::RamTable;
15use crate::table::u32::U32Table;
16
17pub mod cascade;
18pub mod hash;
19pub mod jump_stack;
20pub mod lookup;
21pub mod op_stack;
22pub mod processor;
23pub mod program;
24pub mod ram;
25pub mod u32;
26
27pub const NUM_MAIN_COLUMNS: usize = <ProgramTable as AIR>::MainColumn::COUNT
30 + <ProcessorTable as AIR>::MainColumn::COUNT
31 + <OpStackTable as AIR>::MainColumn::COUNT
32 + <RamTable as AIR>::MainColumn::COUNT
33 + <JumpStackTable as AIR>::MainColumn::COUNT
34 + <HashTable as AIR>::MainColumn::COUNT
35 + <CascadeTable as AIR>::MainColumn::COUNT
36 + <LookupTable as AIR>::MainColumn::COUNT
37 + <U32Table as AIR>::MainColumn::COUNT;
38
39pub const NUM_AUX_COLUMNS: usize = <ProgramTable as AIR>::AuxColumn::COUNT
43 + <ProcessorTable as AIR>::AuxColumn::COUNT
44 + <OpStackTable as AIR>::AuxColumn::COUNT
45 + <RamTable as AIR>::AuxColumn::COUNT
46 + <JumpStackTable as AIR>::AuxColumn::COUNT
47 + <HashTable as AIR>::AuxColumn::COUNT
48 + <CascadeTable as AIR>::AuxColumn::COUNT
49 + <LookupTable as AIR>::AuxColumn::COUNT
50 + <U32Table as AIR>::AuxColumn::COUNT;
51
52pub const PROGRAM_TABLE_START: usize = 0;
53pub const PROGRAM_TABLE_END: usize = PROGRAM_TABLE_START + <ProgramTable as AIR>::MainColumn::COUNT;
54pub const PROCESSOR_TABLE_START: usize = PROGRAM_TABLE_END;
55pub const PROCESSOR_TABLE_END: usize =
56 PROCESSOR_TABLE_START + <ProcessorTable as AIR>::MainColumn::COUNT;
57pub const OP_STACK_TABLE_START: usize = PROCESSOR_TABLE_END;
58pub const OP_STACK_TABLE_END: usize =
59 OP_STACK_TABLE_START + <OpStackTable as AIR>::MainColumn::COUNT;
60pub const RAM_TABLE_START: usize = OP_STACK_TABLE_END;
61pub const RAM_TABLE_END: usize = RAM_TABLE_START + <RamTable as AIR>::MainColumn::COUNT;
62pub const JUMP_STACK_TABLE_START: usize = RAM_TABLE_END;
63pub const JUMP_STACK_TABLE_END: usize =
64 JUMP_STACK_TABLE_START + <JumpStackTable as AIR>::MainColumn::COUNT;
65pub const HASH_TABLE_START: usize = JUMP_STACK_TABLE_END;
66pub const HASH_TABLE_END: usize = HASH_TABLE_START + <HashTable as AIR>::MainColumn::COUNT;
67pub const CASCADE_TABLE_START: usize = HASH_TABLE_END;
68pub const CASCADE_TABLE_END: usize = CASCADE_TABLE_START + <CascadeTable as AIR>::MainColumn::COUNT;
69pub const LOOKUP_TABLE_START: usize = CASCADE_TABLE_END;
70pub const LOOKUP_TABLE_END: usize = LOOKUP_TABLE_START + <LookupTable as AIR>::MainColumn::COUNT;
71pub const U32_TABLE_START: usize = LOOKUP_TABLE_END;
72pub const U32_TABLE_END: usize = U32_TABLE_START + <U32Table as AIR>::MainColumn::COUNT;
73
74pub const AUX_PROGRAM_TABLE_START: usize = 0;
75pub const AUX_PROGRAM_TABLE_END: usize =
76 AUX_PROGRAM_TABLE_START + <ProgramTable as AIR>::AuxColumn::COUNT;
77pub const AUX_PROCESSOR_TABLE_START: usize = AUX_PROGRAM_TABLE_END;
78pub const AUX_PROCESSOR_TABLE_END: usize =
79 AUX_PROCESSOR_TABLE_START + <ProcessorTable as AIR>::AuxColumn::COUNT;
80pub const AUX_OP_STACK_TABLE_START: usize = AUX_PROCESSOR_TABLE_END;
81pub const AUX_OP_STACK_TABLE_END: usize =
82 AUX_OP_STACK_TABLE_START + <OpStackTable as AIR>::AuxColumn::COUNT;
83pub const AUX_RAM_TABLE_START: usize = AUX_OP_STACK_TABLE_END;
84pub const AUX_RAM_TABLE_END: usize = AUX_RAM_TABLE_START + <RamTable as AIR>::AuxColumn::COUNT;
85pub const AUX_JUMP_STACK_TABLE_START: usize = AUX_RAM_TABLE_END;
86pub const AUX_JUMP_STACK_TABLE_END: usize =
87 AUX_JUMP_STACK_TABLE_START + <JumpStackTable as AIR>::AuxColumn::COUNT;
88pub const AUX_HASH_TABLE_START: usize = AUX_JUMP_STACK_TABLE_END;
89pub const AUX_HASH_TABLE_END: usize = AUX_HASH_TABLE_START + <HashTable as AIR>::AuxColumn::COUNT;
90pub const AUX_CASCADE_TABLE_START: usize = AUX_HASH_TABLE_END;
91pub const AUX_CASCADE_TABLE_END: usize =
92 AUX_CASCADE_TABLE_START + <CascadeTable as AIR>::AuxColumn::COUNT;
93pub const AUX_LOOKUP_TABLE_START: usize = AUX_CASCADE_TABLE_END;
94pub const AUX_LOOKUP_TABLE_END: usize =
95 AUX_LOOKUP_TABLE_START + <LookupTable as AIR>::AuxColumn::COUNT;
96pub const AUX_U32_TABLE_START: usize = AUX_LOOKUP_TABLE_END;
97pub const AUX_U32_TABLE_END: usize = AUX_U32_TABLE_START + <U32Table as AIR>::AuxColumn::COUNT;
98
99#[derive(Debug, Display, Copy, Clone, Eq, PartialEq, Hash, EnumCount, EnumIter, Arbitrary)]
101pub enum TableId {
102 Program,
103 Processor,
104 OpStack,
105 Ram,
106 JumpStack,
107 Hash,
108 Cascade,
109 Lookup,
110 U32,
111}