-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | Compatibility for data definition template of TH
--   
--   This package contains wrapped name definitions of data definition
--   template
@package th-data-compat
@version 0.1.3.1

-- | This module provides compatibility definitions of data-type
--   declaration templates for before temaplate-haskell-2.11
module Language.Haskell.TH.Compat.Data

-- | Definition against dataD, compatible with before
--   temaplate-haskell-2.11
dataD' :: CxtQ -> Name -> [TyVarBndr BndrVis] -> [ConQ] -> [Name] -> DecQ

-- | Definition against newtypeD, compatible with before
--   temaplate-haskell-2.11
newtypeD' :: CxtQ -> Name -> [TyVarBndr BndrVis] -> ConQ -> [Name] -> DecQ

-- | Definition against dataInstD, compatible with before
--   temaplate-haskell-2.11
dataInstD' :: CxtQ -> Name -> [TypeQ] -> [ConQ] -> [Name] -> DecQ

-- | Definition against newtypeInstD, compatible with before
--   temaplate-haskell-2.11
newtypeInstD' :: CxtQ -> Name -> [TypeQ] -> ConQ -> [Name] -> DecQ
plainTVspecified :: Name -> TyVarBndr Specificity

-- | Compatible interface to destruct DataD
unDataD :: Dec -> Maybe (Cxt, Name, [TyVarBndr BndrVis], Maybe Kind, [Con], [Type])

-- | Compatible interface to destruct NewtypeD
unNewtypeD :: Dec -> Maybe (Cxt, Name, [TyVarBndr BndrVis], Maybe Kind, Con, [Type])

-- | Compatible interface to destruct DataInstD
unDataInstD :: Dec -> Maybe (Cxt, Maybe [TyVarBndr ()], Type, Maybe Kind, [Con], [Type])

-- | Compatible interface to destruct NewtypeInstD
unNewtypeInstD :: Dec -> Maybe (Cxt, Maybe [TyVarBndr ()], Type, Maybe Kind, Con, [Type])

-- | Compatible interface to destruct InstanceD No Overlap type is
--   defined before template-haskell-2.11.
unInstanceD :: Dec -> Maybe (Cxt, Type, [Dec])
unTyVarBndr :: TyVarBndr a -> (Name, Maybe a)
