{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE UnicodeSyntax #-}
{-# LANGUAGE TypeFamilies #-}

-- | This module provides signed and unsigned binary word data types of sizes
--   2, 4, 7, 24, and 48 bits.
module Data.ShortWord
  ( module Data.BinaryWord
  , Word2
  , Word4
  , Word7
  , Word24
  , Word48
  , Int2
  , Int4
  , Int7
  , Int24
  , Int48
  ) where

import Data.Word
import Data.BinaryWord
import Data.ShortWord.TH

mkShortWord "Word2" "Word2" "Int2" "Int2" ''Word8 2 []
mkShortWord "Word4" "Word4" "Int4" "Int4" ''Word8 4 []
mkShortWord "Word7" "Word7" "Int7" "Int7" ''Word8 7 []
mkShortWord "Word24" "Word24" "Int24" "Int24" ''Word32 24 []
mkShortWord "Word48" "Word48" "Int48" "Int48" ''Word64 48 []