missing-foreign-0.1.0: Foreign/Marshal/MissingUtils.hs
-----------------------------------------------------------------------------
-- |
-- Module : Foreign.Marshal.MissingUtils
-- Copyright : (c) Jason Dagit 2001
-- License : BSD-style (see the file LICENSE)
--
-- Maintainer : dagitj@gmail.com
-- Stability : provisional
-- Portability : portable
--
-- Utilities for primitive marshaling
--
-----------------------------------------------------------------------------
module Foreign.Marshal.MissingUtils (
-- * General marshalling utilities
-- ** Haskellish interface to memcpy and memove
-- | (argument order: destination, source)
copy, -- :: Storable a => Ptr a -> Ptr a -> IO ()
move -- :: Storable a => Ptr a -> Ptr a -> IO ()
) where
import Foreign.Storable
import Foreign.Ptr
import Foreign.Marshal.Utils
-- Haskellish interface to memcpy and memmove
-- ------------------------------------------
-- |Uses 'sizeOf' to copy bytes from the second area (source) into the
-- first (destination); the copied areas may /not/ overlap
--
{-# INLINE copy #-}
copy :: Storable a => Ptr a -> Ptr a -> IO ()
copy dest src = copyBytes dest src (sizeOf (type_ src))
where
type_ :: Ptr a -> a
type_ = undefined
-- |Uses 'sizeOf' to copy bytes from the second area (source) into the
-- first (destination); the copied areas /may/ overlap
--
{-# INLINE move #-}
move :: Storable a => Ptr a -> Ptr a -> IO ()
move dest src = moveBytes dest src (sizeOf (type_ src))
where
type_ :: Ptr a -> a
type_ = undefined