{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE Safe #-}
module ReWire.Flags where

import Data.Hashable (Hashable)
import GHC.Generics (Generic (..))

data Flag = FlagO !String
          | FlagVerbose | FlagHelp
          | FlagNoWarn | FlagW !String
          | FlagVerilog | FlagVhdl | FlagCryptol | FlagCore | FlagFromCore
          | FlagDump !String | FlagDumpAll
          | FlagFlatten
          | FlagInvertReset
          | FlagNoReset | FlagNoClock
          | FlagSyncReset
          | FlagVhdlPkgs !String
          | FlagClockName !String
          | FlagResetName !String
          | FlagInputNames !String | FlagOutputNames !String | FlagStateNames !String
          | FlagLoadPath !String
          | FlagStart !String
          | FlagTop !String
          | FlagInterpret !(Maybe String) | FlagCycles !String
          | FlagTestbench !(Maybe String)
          | FlagEvalDepth !String
          | FlagPretty
          | FlagDebugLint
          | FlagEidos
          | FlagSynolon
          | FlagCertify !(Maybe String)
          | FlagNoHalt
          | FlagRtlOpt !String
          | FlagStableNames
          | FlagLocators
          | FlagNoLocators
      deriving (Flag -> Flag -> Bool
(Flag -> Flag -> Bool) -> (Flag -> Flag -> Bool) -> Eq Flag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Flag -> Flag -> Bool
== :: Flag -> Flag -> Bool
$c/= :: Flag -> Flag -> Bool
/= :: Flag -> Flag -> Bool
Eq, Int -> Flag -> ShowS
[Flag] -> ShowS
Flag -> String
(Int -> Flag -> ShowS)
-> (Flag -> String) -> ([Flag] -> ShowS) -> Show Flag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Flag -> ShowS
showsPrec :: Int -> Flag -> ShowS
$cshow :: Flag -> String
show :: Flag -> String
$cshowList :: [Flag] -> ShowS
showList :: [Flag] -> ShowS
Show, (forall x. Flag -> Rep Flag x)
-> (forall x. Rep Flag x -> Flag) -> Generic Flag
forall x. Rep Flag x -> Flag
forall x. Flag -> Rep Flag x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Flag -> Rep Flag x
from :: forall x. Flag -> Rep Flag x
$cto :: forall x. Rep Flag x -> Flag
to :: forall x. Rep Flag x -> Flag
Generic)

instance Hashable Flag