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

-- | Manipulate name strings for TH
--   
--   This package includes functions to manipulate name string and extra
--   library functions for Template Haskell.
@package names-th
@version 0.3.0.1

-- | This module provides extra helper functions complementing
--   Language.Haskell.TH.Lib
module Language.Haskell.TH.Lib.Extra

-- | Integer literal template from Integral types.
integralE :: Integral a => a -> ExpQ

-- | Generate declaration template from name, type and expression.
simpleValD :: Name -> TypeQ -> ExpQ -> Q [Dec]

-- | May generate declaration template.
maybeD :: (a -> Q [Dec]) -> Maybe a -> Q [Dec]

-- | Helper function for pretty printing Q Monad.
pprQ :: (Functor m, Quasi m, Ppr a) => Q a -> m Doc

-- | Print compile warnings from TH code.
reportWarning :: String -> Q ()

-- | Print compile errors from TH code.
reportError :: String -> Q ()

-- | This module provides camelcased Name for Template Haskell
module Language.Haskell.TH.Name.CamelCase

-- | Type to wrap constructor's Name.
newtype ConName
ConName :: Name -> ConName

-- | Get wrapped Name
[conName] :: ConName -> Name

-- | Make constructor name from String.
toConName :: String -> ConName

-- | Type to wrap variable's Name.
newtype VarName
VarName :: Name -> VarName

-- | Get wrapped Name
[varName] :: VarName -> Name

-- | Make variable name from String.
toVarName :: String -> VarName

-- | Make camel-cased constructor name from String.
conCamelcaseName :: String -> ConName

-- | Make camel-cased variable name from String.
varCamelcaseName :: String -> VarName

-- | Make type constructor TypeQ monad from constructor name type.
toTypeCon :: ConName -> TypeQ

-- | Make data constructor ExpQ monad from constructor name type.
toDataCon :: ConName -> ExpQ

-- | Make variable ExpQ monad from variable name type.
toVarExp :: VarName -> ExpQ

-- | Make pattern PatQ monad from variable name type.
toVarPat :: VarName -> PatQ
