{-# LANGUAGE PatternSynonyms #-}

--------------------------------------------------------------------
-- |
-- Module    : Data.Ruby.Marshal.Types
-- Copyright : (c) Philip Cunningham, 2015
-- License   : MIT
--
-- Maintainer:  hello@filib.io
-- Stability :  experimental
-- Portability: portable
--
-- Common types for Ruby Marshal deserialisation.
--
--------------------------------------------------------------------

module Data.Ruby.Marshal.Types (
  -- * Marshal Monad
    Marshal
  -- * Internal cache
  , Cache
  -- * Ruby string encodings
  , RubyStringEncoding(..)
  -- * Ruby object
  , RubyObject(..)
  -- * Patterns
  , pattern NilChar
  , pattern FalseChar
  , pattern TrueChar
  , pattern ArrayChar
  , pattern FixnumChar
  , pattern FloatChar
  , pattern HashChar
  , pattern IVarChar
  , pattern ObjectLinkChar
  , pattern StringChar
  , pattern SymbolChar
  , pattern SymlinkChar
) where

import Data.Ruby.Marshal.Encoding
import Data.Ruby.Marshal.Monad
import Data.Ruby.Marshal.RubyObject

-- | Character that represents NilCharlass.
pattern $bNilChar :: a
$mNilChar :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
NilChar = 48
-- | Character that represents FalseClass.
pattern $bFalseChar :: a
$mFalseChar :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
FalseChar = 70
-- | Character that represents TrueClass.
pattern $bTrueChar :: a
$mTrueChar :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
TrueChar = 84
-- | Character that represents Array.
pattern $bArrayChar :: a
$mArrayChar :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
ArrayChar = 91
-- | Character that represents Fixnum.
pattern $bFixnumChar :: a
$mFixnumChar :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
FixnumChar = 105
-- | Character that represents Float.
pattern $bFloatChar :: a
$mFloatChar :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
FloatChar = 102
-- | Character that represents Hash.
pattern $bHashChar :: a
$mHashChar :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
HashChar = 123
-- | Character that represents IVar.
pattern $bIVarChar :: a
$mIVarChar :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
IVarChar = 73
-- | Character that represents Object link.
pattern $bObjectLinkChar :: a
$mObjectLinkChar :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
ObjectLinkChar = 64
-- | Character that represents String.
pattern $bStringChar :: a
$mStringChar :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
StringChar = 34
-- | Character that represents Symbol.
pattern $bSymbolChar :: a
$mSymbolChar :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SymbolChar = 58
-- | Character that represents Symlink.
pattern $bSymlinkChar :: a
$mSymlinkChar :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SymlinkChar = 59