ref: cc5f799ee6b51ce2859a74dbcd36b484d805732c
dir: /tests/Storable.hs/
module Storable(main) where
import Prelude
import Data.Word
import Data.Word8
import Foreign.Marshal.Array
import Foreign.Marshal.Utils
import Foreign.Ptr
import Foreign.Storable
main :: IO ()
main = do
let w1 = 0x01020304 :: Word
p1 <- new w1
wp1 <- peek p1
print $ wp1 == w1
let w2 = [1,2,3,4,5::Word]
p2 <- newArray0 0 w2
wp2 <- peekArray0 0 p2
print $ wp2 == w2
moveBytes (p2 `plusPtr` sizeOf w1) p2 (4 * sizeOf w1)
poke p2 w1
wp3 <- peekArray0 0 p2
print $ wp3 == [w1,1,2,3,4]
{- Relies on endianess
let p3 = castPtr p1 :: Ptr Word8
b1 <- peek p3
b2 <- peek (p3 `plusPtr` 1)
print [b1, b2]
-}