packages feed

hw-bits-0.7.1.1: src/HaskellWorks/Data/Bits/FixedBitSize.hs

module HaskellWorks.Data.Bits.FixedBitSize
    ( FixedBitSize(..)
    ) where

import Data.Word
import HaskellWorks.Data.Positioning

-- | Class of values that have a fix bit size
class FixedBitSize a where
  -- | Get the bit size of a value of given type.
  --
  -- >>> fixedBitSize (undefined :: Word8)
  -- 8
  fixedBitSize :: a -> Count

instance FixedBitSize Bool where
  fixedBitSize _ = 1

instance FixedBitSize Word8 where
  fixedBitSize _ = 8

instance FixedBitSize Word16 where
  fixedBitSize _ = 16

instance FixedBitSize Word32 where
  fixedBitSize _ = 32

instance FixedBitSize Word64 where
  fixedBitSize _ = 64