packages feed

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

{-# LANGUAGE DeriveGeneric #-}

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

import qualified Control.DeepSeq as DeepSeq
import qualified Control.Newtype as Newtype
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 Float
    deriving (Eq,Generics.Generic,Show)

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

instance Newtype.Newtype Float32LE

instance DeepSeq.NFData Float32LE

instance Aeson.ToJSON Float32LE