{-
 -      ``Data/MRef''
 -      (c) 2008 Cook, J. MR  SSD, Inc.
 -}

module Data.MRef 
        ( module Data.MRef
        , module Data.MRef.Classes
        , module Data.MRef.Instances
        ) where

import Data.MRef.Classes
import Data.MRef.Instances

-- |Create a m-reference and constrain its type to be the default reference
-- type for the monad in which it is being created.  See 'newMRef'.
newDefaultMRef :: (DefaultMRef sr m a, NewMRef sr m a) => a -> m sr
newDefaultMRef = newMRef

-- |Create an empty m-reference and constrain its type to be the default
-- reference type for the monad in which it is being created.  See 'newMRef'.
newDefaultEmptyMRef :: (DefaultMRef sr m a, NewMRef sr m a) => m sr
newDefaultEmptyMRef = newEmptyMRef

-- |See 'takeMRef'.
takeDefaultMRef :: (DefaultMRef sr m a, TakeMRef sr m a) => sr -> m a
takeDefaultMRef = takeMRef

-- |See 'putMRef'.
putDefaultMRef :: (DefaultMRef sr m a, PutMRef sr m a) => sr -> a -> m ()
putDefaultMRef = putMRef