-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Type specifiers for Lua.
--
-- Structure to hold detailed type information. The primary use-case at
-- this time are auto-generated docs.
@package hslua-typing
@version 0.1.1
-- | The module provides Haskell types and values that can be used to
-- describe and declare the types of Lua values.
module HsLua.Typing
-- | Type specification for Lua values.
data TypeSpec
-- | Built-in type
BasicType :: Type -> TypeSpec
-- | A type that's been given a name.
NamedType :: Name -> TypeSpec
-- | Sequence of the given type.
SeqType :: TypeSpec -> TypeSpec
-- | Union type; a sum type.
SumType :: [TypeSpec] -> TypeSpec
-- | Record type (type product).
RecType :: Map Name TypeSpec -> TypeSpec
-- | Function type.
FunType :: [TypeSpec] -> [TypeSpec] -> TypeSpec
-- | Unconstrained type.
AnyType :: TypeSpec
-- | Documented custom type.
data TypeDocs
TypeDocs :: Text -> TypeSpec -> Maybe Name -> TypeDocs
[typeDescription] :: TypeDocs -> Text
[typeSpec] :: TypeDocs -> TypeSpec
[typeRegistry] :: TypeDocs -> Maybe Name
-- | Returns the sum of two type specifiers, declaring that a Lua value can
-- have either type.
(#|#) :: TypeSpec -> TypeSpec -> TypeSpec
-- | Generate a string representation of the type specifier.
typeSpecToString :: TypeSpec -> String
-- | Creates a TypeSpec value from a string.
--
-- The implementation currently handles basic types, sequences, and
-- alternatives. A string that cannot be parsed is returned as a
-- Named type with the full string as the name.
typeSpecFromString :: String -> TypeSpec
-- | Unconstraint type; any Lua value.
anyType :: TypeSpec
-- | A type for which there cannot be any value.
voidType :: TypeSpec
-- | The built-in boolean Lua type.
booleanType :: TypeSpec
-- | The built-in function Lua type.
functionType :: TypeSpec
-- | A Lua integer type.
integerType :: TypeSpec
-- | The built-in light userdata Lua type.
lightUserdataType :: TypeSpec
-- | The built-in nil Lua type.
nilType :: TypeSpec
-- | The built-in number Lua type.
numberType :: TypeSpec
-- | The built-in string Lua type.
stringType :: TypeSpec
-- | The built-in table Lua type.
tableType :: TypeSpec
-- | The built-in thread Lua type.
threadType :: TypeSpec
-- | The built-in userdata Lua type.
userdataType :: TypeSpec
-- | Creates a record type.
recType :: [(Name, TypeSpec)] -> TypeSpec
-- | Creates a sequence type.
seqType :: TypeSpec -> TypeSpec
-- | Pushes a table representation of a TypeSpec to the stack.
pushTypeSpec :: LuaError e => TypeSpec -> LuaE e ()
-- | Retrieves a TypeSpec from a table on the stack.
peekTypeSpec :: LuaError e => Peeker e TypeSpec
-- | Pushes documentation for a custom type.
pushTypeDoc :: LuaError e => Pusher e TypeDocs
-- | Retrieves a custom type specifier.
peekTypeDoc :: LuaError e => Peeker e TypeDocs
instance GHC.Show.Show HsLua.Typing.TypeSpec
instance GHC.Classes.Ord HsLua.Typing.TypeSpec
instance GHC.Generics.Generic HsLua.Typing.TypeSpec
instance GHC.Classes.Eq HsLua.Typing.TypeSpec
instance GHC.Show.Show HsLua.Typing.TypeDocs
instance GHC.Classes.Ord HsLua.Typing.TypeDocs
instance GHC.Generics.Generic HsLua.Typing.TypeDocs
instance GHC.Classes.Eq HsLua.Typing.TypeDocs
instance Data.String.IsString HsLua.Typing.TypeSpec