never executed always true always false
1 module HelVM.HelMA.Automaton.API.AppOptions where
2
3 import qualified HelVM.HelMA.Automaton.API.AutoOptions as API
4 import HelVM.HelMA.Automaton.API.BoolTypes as API
5 import HelVM.HelMA.Automaton.API.Emit as API
6 import qualified HelVM.HelMA.Automaton.API.EvalParams as API
7 import HelVM.HelMA.Automaton.API.IOTypes as API
8 import qualified HelVM.HelMA.Automaton.API.Lang as API
9 import HelVM.HelMA.Automaton.API.LogLevel as API
10 import qualified HelVM.HelMA.Automaton.API.MemoryOptions as API
11 import HelVM.HelMA.Automaton.API.OptimizationLevel as API
12
13 import HelVM.HelMA.Automaton.Types.CellType
14 import HelVM.HelMA.Automaton.Types.DumpType
15 import HelVM.HelMA.Automaton.Types.IntCellType
16 import HelVM.HelMA.Automaton.Types.LabelType
17 import HelVM.HelMA.Automaton.Types.RAMType
18 import HelVM.HelMA.Automaton.Types.StackType
19
20 -- | Methods
21
22 evalParams :: AppOptions -> Source -> API.EvalParams
23 evalParams o source = API.EvalParams (formatType o) source (memoryOptions o) (autoOptions o)
24
25 memoryOptions :: AppOptions -> API.MemoryOptions
26 memoryOptions o = API.MemoryOptions (ramType o) (stackType o) (cellType o) (intCellType o)
27
28 autoOptions :: AppOptions -> API.AutoOptions
29 autoOptions o = API.AutoOptions (API.fromBool $ optimizationFlag o) Nothing (dumpType o)
30
31 -- | Types
32
33 data AppOptions = AppOptions
34 { emit :: !Emit
35 , printLogs :: !PrintLogs
36 , verbosity :: !LogLevel
37
38 , optimizationFlag :: !Optimization
39 , formatType :: !LabelType
40 , ramType :: !RAMType
41 , stackType :: !StackType
42 , cellType :: !CellType
43 , intCellType :: !IntCellType
44 , dumpType :: !DumpType
45 , codelSize :: !(Maybe Int)
46 , exec :: !Exec
47 , langCommand :: !API.LangCommand
48 , file :: !FilePath
49 }
50