never executed always true always false
1 module HelVM.HelMA.Automaton.API.EvalParams where
2
3 import qualified HelVM.HelMA.Automaton.API.AutomatonOptions as Automaton
4 import HelVM.HelMA.Automaton.API.AutoOptions
5 import HelVM.HelMA.Automaton.API.IOTypes
6 import HelVM.HelMA.Automaton.API.MemoryOptions
7
8 import HelVM.HelMA.Automaton.Types.CellType
9 import HelVM.HelMA.Automaton.Types.DumpType
10 import HelVM.HelMA.Automaton.Types.IntCellType
11 import HelVM.HelMA.Automaton.Types.LabelType
12 import HelVM.HelMA.Automaton.Types.RAMType
13 import HelVM.HelMA.Automaton.Types.StackType
14
15 -- | Accessors
16 ramAutoOptions ∷ EvalParams → RAMType
17 ramAutoOptions = ram . memoryOptions
18
19 stackAutoOptions ∷ EvalParams → StackType
20 stackAutoOptions = stack . memoryOptions
21
22 cellAutoOptions ∷ EvalParams → CellType
23 cellAutoOptions = cell . memoryOptions
24
25 intCellAutoOptions ∷ EvalParams → IntCellType
26 intCellAutoOptions = intCell . memoryOptions
27
28 dumpAutoOptions ∷ EvalParams → DumpType
29 dumpAutoOptions = dumpType . autoOptions
30
31 automatonOptions ∷ EvalParams → Automaton.AutomatonOptions
32 automatonOptions p = Automaton.AutomatonOptions (stackAutoOptions p) (ramAutoOptions p) (autoOptions p)
33
34 -- | Type
35 data EvalParams
36 = EvalParams
37 { formatType :: !LabelType
38 , source :: !Source
39 , memoryOptions :: !MemoryOptions
40 , autoOptions :: !AutoOptions
41 }