module Codec.Archive.Common ( hmemcpy
                            ) where

import           Control.Composition ((.**))
import           Control.Monad       (void)
import           Foreign.C.Types     (CSize (..))
import           Foreign.Ptr

foreign import ccall memcpy :: Ptr a -- ^ Destination
                            -> Ptr b -- ^ Source
                            -> CSize -- ^ Size
                            -> IO (Ptr a) -- ^ Pointer to destination

hmemcpy :: Ptr a -> Ptr b -> CSize -> IO ()
hmemcpy :: Ptr a -> Ptr b -> CSize -> IO ()
hmemcpy = IO (Ptr a) -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO (Ptr a) -> IO ())
-> (Ptr a -> Ptr b -> CSize -> IO (Ptr a))
-> Ptr a
-> Ptr b
-> CSize
-> IO ()
forall d e a b c.
(d -> e) -> (a -> b -> c -> d) -> a -> b -> c -> e
.** Ptr a -> Ptr b -> CSize -> IO (Ptr a)
forall a b. Ptr a -> Ptr b -> CSize -> IO (Ptr a)
memcpy