never executed always true always false
1 module HelVM.HelMA.Automaton.API.OptimizationLevel where
2
3 import HelVM.HelIO.Containers.MTIndexSafe
4
5 -- | Constructors
6
7 optimizationLevelFromNatural ∷ Natural → OptimizationLevel
8 optimizationLevelFromNatural = optimizationLevelFromInt . fromIntegral
9
10 optimizationLevelFromInt ∷ Int → OptimizationLevel
11 optimizationLevelFromInt = fromInt optimizationLevels
12
13 defaultOptimizationLevel ∷ OptimizationLevel
14 defaultOptimizationLevel = minBound
15
16 optimizationLevels ∷ NonEmpty OptimizationLevel
17 optimizationLevels = universeNonEmpty
18
19 -- | Types
20
21 data OptimizationLevel
22 = NoOptimizations
23 | BasicOptimizations
24 | SomeOptimizations
25 | AllOptimizations
26 deriving stock (Bounded, Enum, Eq, Read, Show)
27
28 ----
29
30 fromInt ∷ (Bounded a, Foldable t) ⇒ t a → Int → a
31 fromInt l i = fromMaybe maxBound $ indexMaybe (toList l) i