    {-# LANGUAGE DeriveDataTypeable #-}

    module System.Console.CmdArgs.Implicit.Ann where

    import Data.Data

    -- | The general type of annotations that can be associated with a value.
    data Ann
        = Help String
        | Name String
        | Explicit
        | Ignore
        | GroupName String

        | FlagOptional String
        | FlagArgs
        | FlagArgPos Int
        | FlagType String

        | ModeDefault
        | ModeHelpSuffix [String]

        | ProgSummary String
        | ProgProgram String
        | ProgVerbosity
        | ProgHelpArg [Ann]
        | ProgVersionArg [Ann]
        | ProgVerbosityArgs [Ann] [Ann]
        | ProgNoAtExpand
          deriving (Ann -> Ann -> Bool
    (Ann -> Ann -> Bool) -> (Ann -> Ann -> Bool) -> Eq Ann
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: Ann -> Ann -> Bool
    == :: Ann -> Ann -> Bool
    $c/= :: Ann -> Ann -> Bool
    /= :: Ann -> Ann -> Bool
    Eq,Eq Ann
    Eq Ann
    -> (Ann -> Ann -> Ordering)
    -> (Ann -> Ann -> Bool)
    -> (Ann -> Ann -> Bool)
    -> (Ann -> Ann -> Bool)
    -> (Ann -> Ann -> Bool)
    -> (Ann -> Ann -> Ann)
    -> (Ann -> Ann -> Ann)
    -> Ord Ann
    Ann -> Ann -> Bool
    Ann -> Ann -> Ordering
    Ann -> Ann -> Ann
    forall a.
    Eq a
    -> (a -> a -> Ordering)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> Ord a
    $ccompare :: Ann -> Ann -> Ordering
    compare :: Ann -> Ann -> Ordering
    $c< :: Ann -> Ann -> Bool
    < :: Ann -> Ann -> Bool
    $c<= :: Ann -> Ann -> Bool
    <= :: Ann -> Ann -> Bool
    $c> :: Ann -> Ann -> Bool
    > :: Ann -> Ann -> Bool
    $c>= :: Ann -> Ann -> Bool
    >= :: Ann -> Ann -> Bool
    $cmax :: Ann -> Ann -> Ann
    max :: Ann -> Ann -> Ann
    $cmin :: Ann -> Ann -> Ann
    min :: Ann -> Ann -> Ann
    Ord,Int -> Ann -> ShowS
    [Ann] -> ShowS
    Ann -> String
    (Int -> Ann -> ShowS)
    -> (Ann -> String) -> ([Ann] -> ShowS) -> Show Ann
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> Ann -> ShowS
    showsPrec :: Int -> Ann -> ShowS
    $cshow :: Ann -> String
    show :: Ann -> String
    $cshowList :: [Ann] -> ShowS
    showList :: [Ann] -> ShowS
    Show,Typeable Ann
    Typeable Ann
    -> (forall (c :: * -> *).
        (forall d b. Data d => c (d -> b) -> d -> c b)
        -> (forall g. g -> c g) -> Ann -> c Ann)
    -> (forall (c :: * -> *).
        (forall b r. Data b => c (b -> r) -> c r)
        -> (forall r. r -> c r) -> Constr -> c Ann)
    -> (Ann -> Constr)
    -> (Ann -> DataType)
    -> (forall (t :: * -> *) (c :: * -> *).
        Typeable t =>
        (forall d. Data d => c (t d)) -> Maybe (c Ann))
    -> (forall (t :: * -> * -> *) (c :: * -> *).
        Typeable t =>
        (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Ann))
    -> ((forall b. Data b => b -> b) -> Ann -> Ann)
    -> (forall r r'.
        (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Ann -> r)
    -> (forall r r'.
        (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Ann -> r)
    -> (forall u. (forall d. Data d => d -> u) -> Ann -> [u])
    -> (forall u. Int -> (forall d. Data d => d -> u) -> Ann -> u)
    -> (forall (m :: * -> *).
        Monad m =>
        (forall d. Data d => d -> m d) -> Ann -> m Ann)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> Ann -> m Ann)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> Ann -> m Ann)
    -> Data Ann
    Ann -> Constr
    Ann -> DataType
    (forall b. Data b => b -> b) -> Ann -> Ann
    forall a.
    Typeable a
    -> (forall (c :: * -> *).
        (forall d b. Data d => c (d -> b) -> d -> c b)
        -> (forall g. g -> c g) -> a -> c a)
    -> (forall (c :: * -> *).
        (forall b r. Data b => c (b -> r) -> c r)
        -> (forall r. r -> c r) -> Constr -> c a)
    -> (a -> Constr)
    -> (a -> DataType)
    -> (forall (t :: * -> *) (c :: * -> *).
        Typeable t =>
        (forall d. Data d => c (t d)) -> Maybe (c a))
    -> (forall (t :: * -> * -> *) (c :: * -> *).
        Typeable t =>
        (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
    -> ((forall b. Data b => b -> b) -> a -> a)
    -> (forall r r'.
        (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
    -> (forall r r'.
        (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
    -> (forall u. (forall d. Data d => d -> u) -> a -> [u])
    -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
    -> (forall (m :: * -> *).
        Monad m =>
        (forall d. Data d => d -> m d) -> a -> m a)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> a -> m a)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> a -> m a)
    -> Data a
    forall u. Int -> (forall d. Data d => d -> u) -> Ann -> u
    forall u. (forall d. Data d => d -> u) -> Ann -> [u]
    forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Ann -> r
    forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Ann -> r
    forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Ann -> m Ann
    forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Ann -> m Ann
    forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Ann
    forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Ann -> c Ann
    forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Ann)
    forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Ann)
    $cgfoldl :: forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Ann -> c Ann
    gfoldl :: forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Ann -> c Ann
    $cgunfold :: forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Ann
    gunfold :: forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Ann
    $ctoConstr :: Ann -> Constr
    toConstr :: Ann -> Constr
    $cdataTypeOf :: Ann -> DataType
    dataTypeOf :: Ann -> DataType
    $cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Ann)
    dataCast1 :: forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Ann)
    $cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Ann)
    dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Ann)
    $cgmapT :: (forall b. Data b => b -> b) -> Ann -> Ann
    gmapT :: (forall b. Data b => b -> b) -> Ann -> Ann
    $cgmapQl :: forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Ann -> r
    gmapQl :: forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Ann -> r
    $cgmapQr :: forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Ann -> r
    gmapQr :: forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Ann -> r
    $cgmapQ :: forall u. (forall d. Data d => d -> u) -> Ann -> [u]
    gmapQ :: forall u. (forall d. Data d => d -> u) -> Ann -> [u]
    $cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Ann -> u
    gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Ann -> u
    $cgmapM :: forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Ann -> m Ann
    gmapM :: forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Ann -> m Ann
    $cgmapMp :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Ann -> m Ann
    gmapMp :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Ann -> m Ann
    $cgmapMo :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Ann -> m Ann
    gmapMo :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Ann -> m Ann
    Data,Typeable)