{-| Module : Foreign.Storable.Generic.Instances Copyright : (c) Mateusz Kłoczko, 2016 License : MIT Maintainer : mateusz.p.kloczko@gmail.com Stability : experimental Portability : portable -} {-# LANGUAGE CPP #-} module Foreign.Storable.Generic.Instances () where import Data.Int import Data.Word import Foreign.C.Types import Foreign.Ptr import Foreign.StablePtr import Foreign.Storable import Foreign.Storable.Generic.Internal import GHC.Fingerprint.Type import System.Posix.Types import Data.Ratio (Ratio) #define MakeGStorable(Type) \ instance GStorable Type where \ {-#INLINE gsizeOf #-} \ ; gsizeOf = sizeOf \ ; {-#INLINE galignment #-} \ ; galignment = alignment \ ; {-#INLINE gpeekByteOff #-} \ ; gpeekByteOff = peekByteOff \ ; {-#INLINE gpokeByteOff #-} \ ; gpokeByteOff = pokeByteOff \ -- Haskell primitives MakeGStorable(Bool) MakeGStorable(Char) MakeGStorable(Double) MakeGStorable(Float) MakeGStorable(Int) MakeGStorable(Int8) MakeGStorable(Int16) MakeGStorable(Int32) MakeGStorable(Int64) MakeGStorable(Word) MakeGStorable(Word8) MakeGStorable(Word16) MakeGStorable(Word32) MakeGStorable(Word64) MakeGStorable(Fingerprint) -- C primitives MakeGStorable(CUIntMax) MakeGStorable(CIntMax) MakeGStorable(CSUSeconds) MakeGStorable(CUSeconds) MakeGStorable(CTime) MakeGStorable(CClock) MakeGStorable(CSigAtomic) MakeGStorable(CPtrdiff) MakeGStorable(CDouble) MakeGStorable(CFloat) MakeGStorable(CULLong) MakeGStorable(CLLong) MakeGStorable(CULong) MakeGStorable(CLong) MakeGStorable(CUInt) MakeGStorable(CInt) MakeGStorable(CUShort) MakeGStorable(CShort) MakeGStorable(CUChar) MakeGStorable(CSChar) MakeGStorable(CChar) -- Ptr MakeGStorable(IntPtr) MakeGStorable(WordPtr) MakeGStorable((StablePtr a)) MakeGStorable((Ptr a)) MakeGStorable((FunPtr a)) -- Posix MakeGStorable(Fd) MakeGStorable(CRLim) MakeGStorable(CTcflag) MakeGStorable(CSpeed) MakeGStorable(CCc) MakeGStorable(CUid) MakeGStorable(CNlink) MakeGStorable(CGid) MakeGStorable(CSsize) MakeGStorable(CPid) MakeGStorable(COff) MakeGStorable(CMode) MakeGStorable(CIno) MakeGStorable(CDev)