-- Copyright   :  (C) 2009 Corey O'Connor
-- License     :  BSD-style (see the file LICENSE)

{-# LANGUAGE MagicHash #-}
module Bind.Marshal.DesAction.Storable where

import Bind.Marshal.Prelude

import Bind.Marshal.Action.Base
import Bind.Marshal.DesAction.Base

import Control.DeepSeq

import Foreign.Ptr
import Foreign.Storable

import GHC.Prim
import GHC.Exts

import System.IO

deserialize_storable :: forall t . ( NFData t, Storable t ) => Addr# -> IO t
deserialize_storable !addr = do
    !v <- peek (Ptr addr)
    returnM $! deepseq v v :: IO t