{-# LANGUAGE DeriveAnyClass #-}
module Horizon.Spec.Types.Modifiers
  ( Modifiers(MkModifiers)
  , doBenchmark
  , doCheck
  , doJailbreak
  , enableProfiling
  , includeBenchmarks
  , includeExecutables
  , includeTests
  , defaultModifiers
  ) where

import           Data.Kind (Type)
import           Dhall     (FromDhall, Generic, ToDhall)


type Modifiers :: Type
data Modifiers where
  MkModifiers :: { Modifiers -> Bool
doBenchmark :: Bool
                 , Modifiers -> Bool
doCheck :: Bool
                 , Modifiers -> Bool
doJailbreak :: Bool
                 , Modifiers -> Bool
enableProfiling :: Bool
                 , Modifiers -> Bool
includeBenchmarks :: Bool
                 , Modifiers -> Bool
includeExecutables :: Bool
                 , Modifiers -> Bool
includeTests :: Bool } -> Modifiers
  deriving stock (Int -> Modifiers -> ShowS
[Modifiers] -> ShowS
Modifiers -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Modifiers] -> ShowS
$cshowList :: [Modifiers] -> ShowS
show :: Modifiers -> String
$cshow :: Modifiers -> String
showsPrec :: Int -> Modifiers -> ShowS
$cshowsPrec :: Int -> Modifiers -> ShowS
Show, Modifiers -> Modifiers -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Modifiers -> Modifiers -> Bool
$c/= :: Modifiers -> Modifiers -> Bool
== :: Modifiers -> Modifiers -> Bool
$c== :: Modifiers -> Modifiers -> Bool
Eq, forall x. Rep Modifiers x -> Modifiers
forall x. Modifiers -> Rep Modifiers x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Modifiers x -> Modifiers
$cfrom :: forall x. Modifiers -> Rep Modifiers x
Generic)
  deriving anyclass (InputNormalizer -> Decoder Modifiers
forall a. (InputNormalizer -> Decoder a) -> FromDhall a
autoWith :: InputNormalizer -> Decoder Modifiers
$cautoWith :: InputNormalizer -> Decoder Modifiers
FromDhall, InputNormalizer -> Encoder Modifiers
forall a. (InputNormalizer -> Encoder a) -> ToDhall a
injectWith :: InputNormalizer -> Encoder Modifiers
$cinjectWith :: InputNormalizer -> Encoder Modifiers
ToDhall)


defaultModifiers :: Modifiers
defaultModifiers :: Modifiers
defaultModifiers = MkModifiers
  { $sel:doBenchmark:MkModifiers :: Bool
doBenchmark = Bool
False
  , $sel:doCheck:MkModifiers :: Bool
doCheck = Bool
False
  , $sel:doJailbreak:MkModifiers :: Bool
doJailbreak = Bool
True
  , $sel:enableProfiling:MkModifiers :: Bool
enableProfiling = Bool
True
  , $sel:includeBenchmarks:MkModifiers :: Bool
includeBenchmarks = Bool
True
  , $sel:includeExecutables:MkModifiers :: Bool
includeExecutables = Bool
True
  , $sel:includeTests:MkModifiers :: Bool
includeTests = Bool
True
  }