packages feed

octane-0.5.3: library/Octane/Type/Primitive/Float32LE.hs

{-# LANGUAGE DeriveGeneric #-}

module Octane.Type.Primitive.Float32LE (Float32LE(..)) where

import qualified Control.DeepSeq as DeepSeq
import qualified Data.Aeson as Aeson
import qualified Data.Binary as Binary
import qualified Data.Binary.IEEE754 as IEEE754
import Data.Function ((&))
import qualified GHC.Generics as Generics

-- | A 32-bit little-endian float.
newtype Float32LE = Float32LE
    { unpackFloat32LE :: Float
    } deriving (Eq,Generics.Generic,Show)

instance Binary.Binary Float32LE where
    get = do
        float <- IEEE754.getFloat32le
        float & Float32LE & return
    put float = do
        float & unpackFloat32LE & IEEE754.putFloat32le

instance DeepSeq.NFData Float32LE

instance Aeson.ToJSON Float32LE