{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables #-}
module HsLua.ObjectOrientation
( UDType
, deftypeGeneric
, module HsLua.ObjectOrientation.Generic
, module HsLua.ObjectOrientation.ListType
) where
import HsLua.Core (Name)
import HsLua.Marshalling (Pusher)
import HsLua.ObjectOrientation.Generic
import HsLua.ObjectOrientation.ListType
type UDType e fn a = UDTypeGeneric e fn a
deftypeGeneric :: Pusher e fn
-> Name
-> [(Operation, fn)]
-> [Member e fn a]
-> UDType e fn a
deftypeGeneric :: forall e fn a.
Pusher e fn
-> Name -> [(Operation, fn)] -> [Member e fn a] -> UDType e fn a
deftypeGeneric Pusher e fn
pushFunction Name
name [(Operation, fn)]
ops [Member e fn a]
members =
Pusher e fn
-> Name
-> [(Operation, fn)]
-> [Member e fn a]
-> UDTypeHooks e fn a
-> UDTypeGeneric e fn a
forall e fn a.
Pusher e fn
-> Name
-> [(Operation, fn)]
-> [Member e fn a]
-> UDTypeHooks e fn a
-> UDTypeGeneric e fn a
deftypeGeneric' Pusher e fn
pushFunction Name
name [(Operation, fn)]
ops [Member e fn a]
members UDTypeHooks e fn a
forall e fn a. UDTypeHooks e fn a
emptyHooks