yxdb-utils-0.1.0.0: src/Data/Binary/C.hs
module Data.Binary.C () where
import Control.Applicative ((<$>))
import Data.Binary
import Data.Binary.Get
import Data.Binary.Put
import Data.ReinterpretCast (floatToWord, wordToFloat, doubleToWord, wordToDouble)
import Foreign.C.Types
import GHC.Prim (coerce)
instance Binary CFloat where
get = coerce <$> wordToFloat <$> getWord32le
put = putWord32le . floatToWord . coerce
instance Binary CDouble where
get = coerce <$> wordToDouble <$> getWord64le
put = putWord64le . doubleToWord . coerce