Repository : ssh://g...@git.haskell.org/primitive On branch : ghc-head Link : http://git.haskell.org/packages/primitive.git/commitdiff/e2ec9aec8d36b8c8dde701697841059e21c1de09
>--------------------------------------------------------------- commit e2ec9aec8d36b8c8dde701697841059e21c1de09 Author: Roman Leshchinskiy <r...@cse.unsw.edu.au> Date: Thu Jan 26 15:47:15 2012 -0700 Move internal operations to a separate module >--------------------------------------------------------------- e2ec9aec8d36b8c8dde701697841059e21c1de09 Data/Primitive/Internal/Operations.hs | 53 +++++++++++++++++++++++++++++++++ Data/Primitive/Types.hs | 34 ++------------------- primitive.cabal | 1 + 3 files changed, 56 insertions(+), 32 deletions(-) diff --git a/Data/Primitive/Internal/Operations.hs b/Data/Primitive/Internal/Operations.hs new file mode 100644 index 0000000..9516090 --- /dev/null +++ b/Data/Primitive/Internal/Operations.hs @@ -0,0 +1,53 @@ +{-# LANGUAGE MagicHash, ForeignFunctionInterface, UnliftedFFITypes #-} + +-- | +-- Module : Data.Primitive.Internal.Operations +-- Copyright : (c) Roman Leshchinskiy 2011 +-- License : BSD-style +-- +-- Maintainer : Roman Leshchinskiy <r...@cse.unsw.edu.au> +-- Portability : non-portable +-- +-- Internal operations +-- + + +module Data.Primitive.Internal.Operations ( + setWord8Array#, setWord16Array#, setWord32Array#, + setWord64Array#, setWordArray#, + setInt8Array#, setInt16Array#, setInt32Array#, + setInt64Array#, setIntArray#, + setAddrArray#, setFloatArray#, setDoubleArray#, setWideCharArray# +) where + +import GHC.Prim + +foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word8" + setWord8Array# :: MutableByteArray# s -> Int# -> Int# -> Word# -> IO () +foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word16" + setWord16Array# :: MutableByteArray# s -> Int# -> Int# -> Word# -> IO () +foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word32" + setWord32Array# :: MutableByteArray# s -> Int# -> Int# -> Word# -> IO () +foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word64" + setWord64Array# :: MutableByteArray# s -> Int# -> Int# -> Word64# -> IO () +foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word" + setWordArray# :: MutableByteArray# s -> Int# -> Int# -> Word# -> IO () +foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word8" + setInt8Array# :: MutableByteArray# s -> Int# -> Int# -> Int# -> IO () +foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word16" + setInt16Array# :: MutableByteArray# s -> Int# -> Int# -> Int# -> IO () +foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word32" + setInt32Array# :: MutableByteArray# s -> Int# -> Int# -> Int# -> IO () +foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word64" + setInt64Array# :: MutableByteArray# s -> Int# -> Int# -> Int64# -> IO () +foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word" + setIntArray# :: MutableByteArray# s -> Int# -> Int# -> Int# -> IO () +foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Ptr" + setAddrArray# :: MutableByteArray# s -> Int# -> Int# -> Addr# -> IO () +foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Float" + setFloatArray# :: MutableByteArray# s -> Int# -> Int# -> Float# -> IO () +foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Double" + setDoubleArray# :: MutableByteArray# s -> Int# -> Int# -> Double# -> IO () +foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Char" + setWideCharArray# :: MutableByteArray# s -> Int# -> Int# -> Char# -> IO () + diff --git a/Data/Primitive/Types.hs b/Data/Primitive/Types.hs index 07b267b..4c84d93 100644 --- a/Data/Primitive/Types.hs +++ b/Data/Primitive/Types.hs @@ -1,5 +1,4 @@ -{-# LANGUAGE UnboxedTuples, MagicHash, DeriveDataTypeable, - ForeignFunctionInterface, UnliftedFFITypes #-} +{-# LANGUAGE UnboxedTuples, MagicHash, DeriveDataTypeable #-} -- | -- Module : Data.Primitive.Types @@ -20,6 +19,7 @@ module Data.Primitive.Types ( import Control.Monad.Primitive import Data.Primitive.MachDeps +import Data.Primitive.Internal.Operations import GHC.Base ( unsafeCoerce#, @@ -171,33 +171,3 @@ derivePrim(Addr, Addr, sIZEOF_PTR, aLIGNMENT_PTR, indexAddrArray#, readAddrArray#, writeAddrArray#, setAddrArray#, indexAddrOffAddr#, readAddrOffAddr#, writeAddrOffAddr#) -foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word8" - setWord8Array# :: MutableByteArray# s -> Int# -> Int# -> Word# -> IO () -foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word16" - setWord16Array# :: MutableByteArray# s -> Int# -> Int# -> Word# -> IO () -foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word32" - setWord32Array# :: MutableByteArray# s -> Int# -> Int# -> Word# -> IO () -foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word64" - setWord64Array# :: MutableByteArray# s -> Int# -> Int# -> Word64# -> IO () -foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word" - setWordArray# :: MutableByteArray# s -> Int# -> Int# -> Word# -> IO () -foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word8" - setInt8Array# :: MutableByteArray# s -> Int# -> Int# -> Int# -> IO () -foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word16" - setInt16Array# :: MutableByteArray# s -> Int# -> Int# -> Int# -> IO () -foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word32" - setInt32Array# :: MutableByteArray# s -> Int# -> Int# -> Int# -> IO () -foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word64" - setInt64Array# :: MutableByteArray# s -> Int# -> Int# -> Int64# -> IO () -foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word" - setIntArray# :: MutableByteArray# s -> Int# -> Int# -> Int# -> IO () -foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Ptr" - setAddrArray# :: MutableByteArray# s -> Int# -> Int# -> Addr# -> IO () -foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Float" - setFloatArray# :: MutableByteArray# s -> Int# -> Int# -> Float# -> IO () -foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Double" - setDoubleArray# :: MutableByteArray# s -> Int# -> Int# -> Double# -> IO () -foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Char" - setWideCharArray# :: MutableByteArray# s -> Int# -> Int# -> Char# -> IO () - - diff --git a/primitive.cabal b/primitive.cabal index bbf55de..86ac338 100644 --- a/primitive.cabal +++ b/primitive.cabal @@ -55,6 +55,7 @@ Library Other-Modules: Data.Primitive.Internal.Compat + Data.Primitive.Internal.Operations Build-Depends: base >= 4 && < 5, ghc-prim _______________________________________________ ghc-commits mailing list ghc-commits@haskell.org http://www.haskell.org/mailman/listinfo/ghc-commits