{-|
Module      : HsLua.Classes
Copyright   : © 2007–2012 Gracjan Polak;
              © 2012–2016 Ömer Sinan Ağacan;
              © 2017-2021 Albert Krewinkel
License     : MIT
Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
Stability   : beta
Portability : non-portable (depends on GHC)

Convenience module which re-exports all classes and utility functions
provided by the /hslua-classes/ package.
-}
module HsLua.Classes
  ( -- * Receiving values from Lua stack (Lua → Haskell)
    Peekable (..)
  , peekEither
  , peekList
  , peekKeyValuePairs
    -- * Pushing values to Lua stack (Haskell → Lua)
  , Pushable (..)
  , pushList
    -- * Calling Functions
  , Exposable (..)
  , toHaskellFunction
  , invoke
  , registerHaskellFunction
    -- * Utility functions and types
  , raiseError
  , Optional (Optional, fromOptional)
    -- ** Retrieving values
  , popValue
  ) where

import HsLua.Class.Exposable
import HsLua.Class.Invokable
import HsLua.Class.Peekable
import HsLua.Class.Pushable
import HsLua.Class.Util