-----------------------------------------------------------------------------
-- |
-- Module      :  Data.TMap.Backend.StdoutBackend
-- Copyright   :  Peter Robinson 2009
-- License     :  LGPL
--
-- Maintainer  :  Peter Robinson <thaldyron@gmail.com>
-- Stability   :  experimental
-- Portability :  non-portable (requires STM)
--
-- Simply prints out all backend requests to stdout.
--
-----------------------------------------------------------------------------

module Data.TMap.Backend.StdoutBackend( StdoutBackend
                                      , newStdoutBackend )
where
import Data.TMap.Backend
import Control.Monad.Trans( MonadIO, liftIO )

data StdoutBackend k a = StdoutBackend

instance (Show a,Show k,Ord k) => Backend k a StdoutBackend where
    insert _ _ a = liftIO (print ("inserting: ",a)) >> return ()
    adjust _ _ k = liftIO (print ("adjusting: ",k)) >> return ()
    lookup _ k   = liftIO (print ("looking up: ",k)) >> return Nothing
    delete _ k   = liftIO (print ("deleting: ",k)) >> return ()

-- | Creates a new 'StdoutBackend'.
newStdoutBackend :: StdoutBackend k a
newStdoutBackend = StdoutBackend