    {-# LANGUAGE DeriveDataTypeable #-}
    {-# LANGUAGE DeriveGeneric #-}
    module SDL.Internal.Types
      ( Joystick(..)
      , Window(..)
      , Renderer(..)
      ) where

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

    import qualified SDL.Raw as Raw

    newtype Joystick = Joystick { Joystick -> Joystick
    joystickPtr :: Raw.Joystick }
      deriving (Typeable Joystick
    Constr
    DataType
    Typeable Joystick =>
    (forall (c :: * -> *).
     (forall d b. Data d => c (d -> b) -> d -> c b)
     -> (forall g. g -> c g) -> Joystick -> c Joystick)
    -> (forall (c :: * -> *).
        (forall b r. Data b => c (b -> r) -> c r)
        -> (forall r. r -> c r) -> Constr -> c Joystick)
    -> (Joystick -> Constr)
    -> (Joystick -> DataType)
    -> (forall (t :: * -> *) (c :: * -> *).
        Typeable t =>
        (forall d. Data d => c (t d)) -> Maybe (c Joystick))
    -> (forall (t :: * -> * -> *) (c :: * -> *).
        Typeable t =>
        (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Joystick))
    -> ((forall b. Data b => b -> b) -> Joystick -> Joystick)
    -> (forall r r'.
        (r -> r' -> r)
        -> r -> (forall d. Data d => d -> r') -> Joystick -> r)
    -> (forall r r'.
        (r' -> r -> r)
        -> r -> (forall d. Data d => d -> r') -> Joystick -> r)
    -> (forall u. (forall d. Data d => d -> u) -> Joystick -> [u])
    -> (forall u. Int -> (forall d. Data d => d -> u) -> Joystick -> u)
    -> (forall (m :: * -> *).
        Monad m =>
        (forall d. Data d => d -> m d) -> Joystick -> m Joystick)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> Joystick -> m Joystick)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> Joystick -> m Joystick)
    -> Data Joystick
    Joystick -> Constr
    Joystick -> DataType
    (forall b. Data b => b -> b) -> Joystick -> Joystick
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Joystick -> c Joystick
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Joystick
    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) -> Joystick -> u
    forall u. (forall d. Data d => d -> u) -> Joystick -> [u]
    forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Joystick -> r
    forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Joystick -> r
    forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Joystick -> m Joystick
    forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Joystick -> m Joystick
    forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Joystick
    forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Joystick -> c Joystick
    forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Joystick)
    forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Joystick)
    $cJoystick :: Constr
    $tJoystick :: DataType
    gmapMo :: (forall d. Data d => d -> m d) -> Joystick -> m Joystick
    $cgmapMo :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Joystick -> m Joystick
    gmapMp :: (forall d. Data d => d -> m d) -> Joystick -> m Joystick
    $cgmapMp :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Joystick -> m Joystick
    gmapM :: (forall d. Data d => d -> m d) -> Joystick -> m Joystick
    $cgmapM :: forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Joystick -> m Joystick
    gmapQi :: Int -> (forall d. Data d => d -> u) -> Joystick -> u
    $cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Joystick -> u
    gmapQ :: (forall d. Data d => d -> u) -> Joystick -> [u]
    $cgmapQ :: forall u. (forall d. Data d => d -> u) -> Joystick -> [u]
    gmapQr :: (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Joystick -> r
    $cgmapQr :: forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Joystick -> r
    gmapQl :: (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Joystick -> r
    $cgmapQl :: forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Joystick -> r
    gmapT :: (forall b. Data b => b -> b) -> Joystick -> Joystick
    $cgmapT :: (forall b. Data b => b -> b) -> Joystick -> Joystick
    dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Joystick)
    $cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Joystick)
    dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Joystick)
    $cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Joystick)
    dataTypeOf :: Joystick -> DataType
    $cdataTypeOf :: Joystick -> DataType
    toConstr :: Joystick -> Constr
    $ctoConstr :: Joystick -> Constr
    gunfold :: (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Joystick
    $cgunfold :: forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Joystick
    gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Joystick -> c Joystick
    $cgfoldl :: forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Joystick -> c Joystick
    $cp1Data :: Typeable Joystick
    Data, Joystick -> Joystick -> Bool
    (Joystick -> Joystick -> Bool)
    -> (Joystick -> Joystick -> Bool) -> Eq Joystick
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    /= :: Joystick -> Joystick -> Bool
    $c/= :: Joystick -> Joystick -> Bool
    == :: Joystick -> Joystick -> Bool
    $c== :: Joystick -> Joystick -> Bool
    Eq, (forall x. Joystick -> Rep Joystick x)
    -> (forall x. Rep Joystick x -> Joystick) -> Generic Joystick
    forall x. Rep Joystick x -> Joystick
    forall x. Joystick -> Rep Joystick x
    forall a.
    (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
    $cto :: forall x. Rep Joystick x -> Joystick
    $cfrom :: forall x. Joystick -> Rep Joystick x
    Generic, Eq Joystick
    Eq Joystick =>
    (Joystick -> Joystick -> Ordering)
    -> (Joystick -> Joystick -> Bool)
    -> (Joystick -> Joystick -> Bool)
    -> (Joystick -> Joystick -> Bool)
    -> (Joystick -> Joystick -> Bool)
    -> (Joystick -> Joystick -> Joystick)
    -> (Joystick -> Joystick -> Joystick)
    -> Ord Joystick
    Joystick -> Joystick -> Bool
    Joystick -> Joystick -> Ordering
    Joystick -> Joystick -> Joystick
    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
    min :: Joystick -> Joystick -> Joystick
    $cmin :: Joystick -> Joystick -> Joystick
    max :: Joystick -> Joystick -> Joystick
    $cmax :: Joystick -> Joystick -> Joystick
    >= :: Joystick -> Joystick -> Bool
    $c>= :: Joystick -> Joystick -> Bool
    > :: Joystick -> Joystick -> Bool
    $c> :: Joystick -> Joystick -> Bool
    <= :: Joystick -> Joystick -> Bool
    $c<= :: Joystick -> Joystick -> Bool
    < :: Joystick -> Joystick -> Bool
    $c< :: Joystick -> Joystick -> Bool
    compare :: Joystick -> Joystick -> Ordering
    $ccompare :: Joystick -> Joystick -> Ordering
    $cp1Ord :: Eq Joystick
    Ord, Int -> Joystick -> ShowS
    [Joystick] -> ShowS
    Joystick -> String
    (Int -> Joystick -> ShowS)
    -> (Joystick -> String) -> ([Joystick] -> ShowS) -> Show Joystick
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    showList :: [Joystick] -> ShowS
    $cshowList :: [Joystick] -> ShowS
    show :: Joystick -> String
    $cshow :: Joystick -> String
    showsPrec :: Int -> Joystick -> ShowS
    $cshowsPrec :: Int -> Joystick -> ShowS
    Show, Typeable)

    newtype Window = Window (Raw.Window)
      deriving (Typeable Window
    Constr
    DataType
    Typeable Window =>
    (forall (c :: * -> *).
     (forall d b. Data d => c (d -> b) -> d -> c b)
     -> (forall g. g -> c g) -> Window -> c Window)
    -> (forall (c :: * -> *).
        (forall b r. Data b => c (b -> r) -> c r)
        -> (forall r. r -> c r) -> Constr -> c Window)
    -> (Window -> Constr)
    -> (Window -> DataType)
    -> (forall (t :: * -> *) (c :: * -> *).
        Typeable t =>
        (forall d. Data d => c (t d)) -> Maybe (c Window))
    -> (forall (t :: * -> * -> *) (c :: * -> *).
        Typeable t =>
        (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Window))
    -> ((forall b. Data b => b -> b) -> Window -> Window)
    -> (forall r r'.
        (r -> r' -> r)
        -> r -> (forall d. Data d => d -> r') -> Window -> r)
    -> (forall r r'.
        (r' -> r -> r)
        -> r -> (forall d. Data d => d -> r') -> Window -> r)
    -> (forall u. (forall d. Data d => d -> u) -> Window -> [u])
    -> (forall u. Int -> (forall d. Data d => d -> u) -> Window -> u)
    -> (forall (m :: * -> *).
        Monad m =>
        (forall d. Data d => d -> m d) -> Window -> m Window)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> Window -> m Window)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> Window -> m Window)
    -> Data Window
    Window -> Constr
    Window -> DataType
    (forall b. Data b => b -> b) -> Window -> Window
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Window -> c Window
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Window
    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) -> Window -> u
    forall u. (forall d. Data d => d -> u) -> Window -> [u]
    forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Window -> r
    forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Window -> r
    forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Window -> m Window
    forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Window -> m Window
    forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Window
    forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Window -> c Window
    forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Window)
    forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Window)
    $cWindow :: Constr
    $tWindow :: DataType
    gmapMo :: (forall d. Data d => d -> m d) -> Window -> m Window
    $cgmapMo :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Window -> m Window
    gmapMp :: (forall d. Data d => d -> m d) -> Window -> m Window
    $cgmapMp :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Window -> m Window
    gmapM :: (forall d. Data d => d -> m d) -> Window -> m Window
    $cgmapM :: forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Window -> m Window
    gmapQi :: Int -> (forall d. Data d => d -> u) -> Window -> u
    $cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Window -> u
    gmapQ :: (forall d. Data d => d -> u) -> Window -> [u]
    $cgmapQ :: forall u. (forall d. Data d => d -> u) -> Window -> [u]
    gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Window -> r
    $cgmapQr :: forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Window -> r
    gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Window -> r
    $cgmapQl :: forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Window -> r
    gmapT :: (forall b. Data b => b -> b) -> Window -> Window
    $cgmapT :: (forall b. Data b => b -> b) -> Window -> Window
    dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Window)
    $cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Window)
    dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Window)
    $cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Window)
    dataTypeOf :: Window -> DataType
    $cdataTypeOf :: Window -> DataType
    toConstr :: Window -> Constr
    $ctoConstr :: Window -> Constr
    gunfold :: (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Window
    $cgunfold :: forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Window
    gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Window -> c Window
    $cgfoldl :: forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Window -> c Window
    $cp1Data :: Typeable Window
    Data, Window -> Window -> Bool
    (Window -> Window -> Bool)
    -> (Window -> Window -> Bool) -> Eq Window
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    /= :: Window -> Window -> Bool
    $c/= :: Window -> Window -> Bool
    == :: Window -> Window -> Bool
    $c== :: Window -> Window -> Bool
    Eq, (forall x. Window -> Rep Window x)
    -> (forall x. Rep Window x -> Window) -> Generic Window
    forall x. Rep Window x -> Window
    forall x. Window -> Rep Window x
    forall a.
    (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
    $cto :: forall x. Rep Window x -> Window
    $cfrom :: forall x. Window -> Rep Window x
    Generic, Eq Window
    Eq Window =>
    (Window -> Window -> Ordering)
    -> (Window -> Window -> Bool)
    -> (Window -> Window -> Bool)
    -> (Window -> Window -> Bool)
    -> (Window -> Window -> Bool)
    -> (Window -> Window -> Window)
    -> (Window -> Window -> Window)
    -> Ord Window
    Window -> Window -> Bool
    Window -> Window -> Ordering
    Window -> Window -> Window
    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
    min :: Window -> Window -> Window
    $cmin :: Window -> Window -> Window
    max :: Window -> Window -> Window
    $cmax :: Window -> Window -> Window
    >= :: Window -> Window -> Bool
    $c>= :: Window -> Window -> Bool
    > :: Window -> Window -> Bool
    $c> :: Window -> Window -> Bool
    <= :: Window -> Window -> Bool
    $c<= :: Window -> Window -> Bool
    < :: Window -> Window -> Bool
    $c< :: Window -> Window -> Bool
    compare :: Window -> Window -> Ordering
    $ccompare :: Window -> Window -> Ordering
    $cp1Ord :: Eq Window
    Ord, Int -> Window -> ShowS
    [Window] -> ShowS
    Window -> String
    (Int -> Window -> ShowS)
    -> (Window -> String) -> ([Window] -> ShowS) -> Show Window
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    showList :: [Window] -> ShowS
    $cshowList :: [Window] -> ShowS
    show :: Window -> String
    $cshow :: Window -> String
    showsPrec :: Int -> Window -> ShowS
    $cshowsPrec :: Int -> Window -> ShowS
    Show, Typeable)

    -- | An SDL rendering device. This can be created with 'SDL.Video.createRenderer'.
    newtype Renderer = Renderer Raw.Renderer
      deriving (Typeable Renderer
    Constr
    DataType
    Typeable Renderer =>
    (forall (c :: * -> *).
     (forall d b. Data d => c (d -> b) -> d -> c b)
     -> (forall g. g -> c g) -> Renderer -> c Renderer)
    -> (forall (c :: * -> *).
        (forall b r. Data b => c (b -> r) -> c r)
        -> (forall r. r -> c r) -> Constr -> c Renderer)
    -> (Renderer -> Constr)
    -> (Renderer -> DataType)
    -> (forall (t :: * -> *) (c :: * -> *).
        Typeable t =>
        (forall d. Data d => c (t d)) -> Maybe (c Renderer))
    -> (forall (t :: * -> * -> *) (c :: * -> *).
        Typeable t =>
        (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Renderer))
    -> ((forall b. Data b => b -> b) -> Renderer -> Renderer)
    -> (forall r r'.
        (r -> r' -> r)
        -> r -> (forall d. Data d => d -> r') -> Renderer -> r)
    -> (forall r r'.
        (r' -> r -> r)
        -> r -> (forall d. Data d => d -> r') -> Renderer -> r)
    -> (forall u. (forall d. Data d => d -> u) -> Renderer -> [u])
    -> (forall u. Int -> (forall d. Data d => d -> u) -> Renderer -> u)
    -> (forall (m :: * -> *).
        Monad m =>
        (forall d. Data d => d -> m d) -> Renderer -> m Renderer)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> Renderer -> m Renderer)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> Renderer -> m Renderer)
    -> Data Renderer
    Renderer -> Constr
    Renderer -> DataType
    (forall b. Data b => b -> b) -> Renderer -> Renderer
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Renderer -> c Renderer
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Renderer
    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) -> Renderer -> u
    forall u. (forall d. Data d => d -> u) -> Renderer -> [u]
    forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Renderer -> r
    forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Renderer -> r
    forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Renderer -> m Renderer
    forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Renderer -> m Renderer
    forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Renderer
    forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Renderer -> c Renderer
    forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Renderer)
    forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Renderer)
    $cRenderer :: Constr
    $tRenderer :: DataType
    gmapMo :: (forall d. Data d => d -> m d) -> Renderer -> m Renderer
    $cgmapMo :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Renderer -> m Renderer
    gmapMp :: (forall d. Data d => d -> m d) -> Renderer -> m Renderer
    $cgmapMp :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Renderer -> m Renderer
    gmapM :: (forall d. Data d => d -> m d) -> Renderer -> m Renderer
    $cgmapM :: forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Renderer -> m Renderer
    gmapQi :: Int -> (forall d. Data d => d -> u) -> Renderer -> u
    $cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Renderer -> u
    gmapQ :: (forall d. Data d => d -> u) -> Renderer -> [u]
    $cgmapQ :: forall u. (forall d. Data d => d -> u) -> Renderer -> [u]
    gmapQr :: (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Renderer -> r
    $cgmapQr :: forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Renderer -> r
    gmapQl :: (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Renderer -> r
    $cgmapQl :: forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Renderer -> r
    gmapT :: (forall b. Data b => b -> b) -> Renderer -> Renderer
    $cgmapT :: (forall b. Data b => b -> b) -> Renderer -> Renderer
    dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Renderer)
    $cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Renderer)
    dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c Renderer)
    $cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Renderer)
    dataTypeOf :: Renderer -> DataType
    $cdataTypeOf :: Renderer -> DataType
    toConstr :: Renderer -> Constr
    $ctoConstr :: Renderer -> Constr
    gunfold :: (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Renderer
    $cgunfold :: forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Renderer
    gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Renderer -> c Renderer
    $cgfoldl :: forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Renderer -> c Renderer
    $cp1Data :: Typeable Renderer
    Data, Renderer -> Renderer -> Bool
    (Renderer -> Renderer -> Bool)
    -> (Renderer -> Renderer -> Bool) -> Eq Renderer
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    /= :: Renderer -> Renderer -> Bool
    $c/= :: Renderer -> Renderer -> Bool
    == :: Renderer -> Renderer -> Bool
    $c== :: Renderer -> Renderer -> Bool
    Eq, (forall x. Renderer -> Rep Renderer x)
    -> (forall x. Rep Renderer x -> Renderer) -> Generic Renderer
    forall x. Rep Renderer x -> Renderer
    forall x. Renderer -> Rep Renderer x
    forall a.
    (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
    $cto :: forall x. Rep Renderer x -> Renderer
    $cfrom :: forall x. Renderer -> Rep Renderer x
    Generic, Eq Renderer
    Eq Renderer =>
    (Renderer -> Renderer -> Ordering)
    -> (Renderer -> Renderer -> Bool)
    -> (Renderer -> Renderer -> Bool)
    -> (Renderer -> Renderer -> Bool)
    -> (Renderer -> Renderer -> Bool)
    -> (Renderer -> Renderer -> Renderer)
    -> (Renderer -> Renderer -> Renderer)
    -> Ord Renderer
    Renderer -> Renderer -> Bool
    Renderer -> Renderer -> Ordering
    Renderer -> Renderer -> Renderer
    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
    min :: Renderer -> Renderer -> Renderer
    $cmin :: Renderer -> Renderer -> Renderer
    max :: Renderer -> Renderer -> Renderer
    $cmax :: Renderer -> Renderer -> Renderer
    >= :: Renderer -> Renderer -> Bool
    $c>= :: Renderer -> Renderer -> Bool
    > :: Renderer -> Renderer -> Bool
    $c> :: Renderer -> Renderer -> Bool
    <= :: Renderer -> Renderer -> Bool
    $c<= :: Renderer -> Renderer -> Bool
    < :: Renderer -> Renderer -> Bool
    $c< :: Renderer -> Renderer -> Bool
    compare :: Renderer -> Renderer -> Ordering
    $ccompare :: Renderer -> Renderer -> Ordering
    $cp1Ord :: Eq Renderer
    Ord, Int -> Renderer -> ShowS
    [Renderer] -> ShowS
    Renderer -> String
    (Int -> Renderer -> ShowS)
    -> (Renderer -> String) -> ([Renderer] -> ShowS) -> Show Renderer
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    showList :: [Renderer] -> ShowS
    $cshowList :: [Renderer] -> ShowS
    show :: Renderer -> String
    $cshow :: Renderer -> String
    showsPrec :: Int -> Renderer -> ShowS
    $cshowsPrec :: Int -> Renderer -> ShowS
    Show, Typeable)