Add Data.Primitive
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Mon, 16 Nov 2009 03:40:35 +0000 (03:40 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Mon, 16 Nov 2009 03:40:35 +0000 (03:40 +0000)
Data/Primitive.hs [new file with mode: 0644]
Data/Primitive/Types.hs
array-primitives.cabal

diff --git a/Data/Primitive.hs b/Data/Primitive.hs
new file mode 100644 (file)
index 0000000..331d2c6
--- /dev/null
@@ -0,0 +1,34 @@
+{-# LANGUAGE MagicHash #-}
+-- |
+-- Module      : Data.Primitive
+-- Copyright   : (c) Roman Leshchinskiy 2009
+-- License     : BSD-style
+--
+-- Maintainer  : Roman Leshchinskiy <rl@cse.unsw.edu.au>
+-- Portability : non-portable
+-- 
+-- Reexports all primitive operations
+--
+module Data.Primitive (
+  Prim(..),
+  
+  module Data.Primitive.Array,
+  module Data.Primitive.ByteArray,
+  module Data.Primitive.Addr
+) where
+
+import Data.Primitive.Types
+import Data.Primitive.Array
+import Data.Primitive.ByteArray
+import Data.Primitive.Addr
+
+import GHC.Base ( Int(..) )
+
+-- | Size of values of type @a@. The argument is not used.
+sizeOf :: Prim a => a -> Int
+sizeOf x = I# (sizeOf# x)
+
+-- | Alignment of values of type @a@. The argument is not used.
+alignment :: Prim a => a -> Int
+alignment x = I# (alignment# x)
+
index 414aa84..7f72cfd 100644 (file)
@@ -12,8 +12,9 @@
 --
 
 module Data.Primitive.Types (
+  Prim(..),
+
   Addr(..),
-  Prim(..), sizeOf, alignment
 ) where
 
 import Control.Monad.Primitive
@@ -71,15 +72,6 @@ class Prim a where
   -- The offset is in elements of type @a@ rather than in bytes.
   writeOffAddr# :: Addr# -> Int# -> a -> State# s -> State# s
 
-
--- | Size of values of type @a@. The argument is not used.
-sizeOf :: Prim a => a -> Int
-sizeOf x = I# (sizeOf# x)
-
--- | Alignment of values of type @a@. The argument is not used.
-alignment :: Prim a => a -> Int
-alignment x = I# (alignment# x)
-
 #define derivePrim(ty, ctr, sz, align, idx_arr, rd_arr, wr_arr, idx_addr, rd_addr, wr_addr) \
 instance Prim ty where {                                        \
   sizeOf# _ = unI# sz                                           \
index de6c73c..d866186 100644 (file)
@@ -20,6 +20,7 @@ Build-Type:     Simple
 Library
   Exposed-Modules:
         Control.Monad.Primitive
+        Data.Primitive
         Data.Primitive.MachDeps
         Data.Primitive.Types
         Data.Primitive.Array