clr-host-0.1.0.0: src/Clr/Host/DotNet/Guid.hs
module Clr.Host.DotNet.Guid where
import Data.Word
import Foreign.Ptr
import Foreign.Storable
data Guid = Guid Word32 Word16 Word16 Word8 Word8 Word8 Word8 Word8 Word8 Word8 Word8
deriving (Show, Eq)
instance Storable Guid where
sizeOf _ = 16
alignment _ = 4
peek guidPtr = do
a <- peek $ plusPtr guidPtr 0
b <- peek $ plusPtr guidPtr 4
c <- peek $ plusPtr guidPtr 6
d0 <- peek $ plusPtr guidPtr 8
d1 <- peek $ plusPtr guidPtr 9
d2 <- peek $ plusPtr guidPtr 10
d3 <- peek $ plusPtr guidPtr 11
d4 <- peek $ plusPtr guidPtr 12
d5 <- peek $ plusPtr guidPtr 13
d6 <- peek $ plusPtr guidPtr 14
d7 <- peek $ plusPtr guidPtr 15
return $ Guid a b c d0 d1 d2 d3 d4 d5 d6 d7
poke guidPtr (Guid a b c d0 d1 d2 d3 d4 d5 d6 d7) = do
poke (plusPtr guidPtr 0) a
poke (plusPtr guidPtr 4) b
poke (plusPtr guidPtr 6) c
poke (plusPtr guidPtr 8) d0
poke (plusPtr guidPtr 9) d1
poke (plusPtr guidPtr 10) d2
poke (plusPtr guidPtr 11) d3
poke (plusPtr guidPtr 12) d4
poke (plusPtr guidPtr 13) d5
poke (plusPtr guidPtr 14) d6
poke (plusPtr guidPtr 15) d7
type CLSID = Guid
type IID = Guid