packages feed

data-sword 0.1.1 → 0.2

raw patch · 6 files changed

+58/−37 lines, 6 filesdep ~basePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base

API changes (from Hackage documentation)

+ Data.ShortWord: aWord2 :: Proxy Word2
+ Data.ShortWord: aWord24 :: Proxy Word24
+ Data.ShortWord: aWord3 :: Proxy Word3
+ Data.ShortWord: aWord4 :: Proxy Word4
+ Data.ShortWord: aWord48 :: Proxy Word48
+ Data.ShortWord: aWord5 :: Proxy Word5
+ Data.ShortWord: aWord6 :: Proxy Word6
+ Data.ShortWord: aWord7 :: Proxy Word7
+ Data.ShortWord: anInt2 :: Proxy Int2
+ Data.ShortWord: anInt24 :: Proxy Int24
+ Data.ShortWord: anInt3 :: Proxy Int3
+ Data.ShortWord: anInt4 :: Proxy Int4
+ Data.ShortWord: anInt48 :: Proxy Int48
+ Data.ShortWord: anInt5 :: Proxy Int5
+ Data.ShortWord: anInt6 :: Proxy Int6
+ Data.ShortWord: anInt7 :: Proxy Int7
+ Data.ShortWord: data Int3
+ Data.ShortWord: data Int5
+ Data.ShortWord: data Int6
+ Data.ShortWord: data Word3
+ Data.ShortWord: data Word5
+ Data.ShortWord: data Word6
+ Data.ShortWord: instance Data.BinaryWord.BinaryWord Data.ShortWord.Int3
+ Data.ShortWord: instance Data.BinaryWord.BinaryWord Data.ShortWord.Int5
+ Data.ShortWord: instance Data.BinaryWord.BinaryWord Data.ShortWord.Int6
+ Data.ShortWord: instance Data.BinaryWord.BinaryWord Data.ShortWord.Word3
+ Data.ShortWord: instance Data.BinaryWord.BinaryWord Data.ShortWord.Word5
+ Data.ShortWord: instance Data.BinaryWord.BinaryWord Data.ShortWord.Word6
+ Data.ShortWord: instance Data.Bits.Bits Data.ShortWord.Int3
+ Data.ShortWord: instance Data.Bits.Bits Data.ShortWord.Int5
+ Data.ShortWord: instance Data.Bits.Bits Data.ShortWord.Int6
+ Data.ShortWord: instance Data.Bits.Bits Data.ShortWord.Word3
+ Data.ShortWord: instance Data.Bits.Bits Data.ShortWord.Word5
+ Data.ShortWord: instance Data.Bits.Bits Data.ShortWord.Word6
+ Data.ShortWord: instance Data.Bits.FiniteBits Data.ShortWord.Int3
+ Data.ShortWord: instance Data.Bits.FiniteBits Data.ShortWord.Int5
+ Data.ShortWord: instance Data.Bits.FiniteBits Data.ShortWord.Int6
+ Data.ShortWord: instance Data.Bits.FiniteBits Data.ShortWord.Word3
+ Data.ShortWord: instance Data.Bits.FiniteBits Data.ShortWord.Word5
+ Data.ShortWord: instance Data.Bits.FiniteBits Data.ShortWord.Word6
+ Data.ShortWord: instance Data.Data.Data Data.ShortWord.Int3
+ Data.ShortWord: instance Data.Data.Data Data.ShortWord.Int5
+ Data.ShortWord: instance Data.Data.Data Data.ShortWord.Int6
+ Data.ShortWord: instance Data.Data.Data Data.ShortWord.Word3
+ Data.ShortWord: instance Data.Data.Data Data.ShortWord.Word5
+ Data.ShortWord: instance Data.Data.Data Data.ShortWord.Word6
+ Data.ShortWord: instance Data.Hashable.Class.Hashable Data.ShortWord.Int3
+ Data.ShortWord: instance Data.Hashable.Class.Hashable Data.ShortWord.Int5
+ Data.ShortWord: instance Data.Hashable.Class.Hashable Data.ShortWord.Int6
+ Data.ShortWord: instance Data.Hashable.Class.Hashable Data.ShortWord.Word3
+ Data.ShortWord: instance Data.Hashable.Class.Hashable Data.ShortWord.Word5
+ Data.ShortWord: instance Data.Hashable.Class.Hashable Data.ShortWord.Word6
+ Data.ShortWord: instance GHC.Arr.Ix Data.ShortWord.Int3
+ Data.ShortWord: instance GHC.Arr.Ix Data.ShortWord.Int5
+ Data.ShortWord: instance GHC.Arr.Ix Data.ShortWord.Int6
+ Data.ShortWord: instance GHC.Arr.Ix Data.ShortWord.Word3
+ Data.ShortWord: instance GHC.Arr.Ix Data.ShortWord.Word5
+ Data.ShortWord: instance GHC.Arr.Ix Data.ShortWord.Word6
+ Data.ShortWord: instance GHC.Classes.Eq Data.ShortWord.Int3
+ Data.ShortWord: instance GHC.Classes.Eq Data.ShortWord.Int5
+ Data.ShortWord: instance GHC.Classes.Eq Data.ShortWord.Int6
+ Data.ShortWord: instance GHC.Classes.Eq Data.ShortWord.Word3
+ Data.ShortWord: instance GHC.Classes.Eq Data.ShortWord.Word5
+ Data.ShortWord: instance GHC.Classes.Eq Data.ShortWord.Word6
+ Data.ShortWord: instance GHC.Classes.Ord Data.ShortWord.Int3
+ Data.ShortWord: instance GHC.Classes.Ord Data.ShortWord.Int5
+ Data.ShortWord: instance GHC.Classes.Ord Data.ShortWord.Int6
+ Data.ShortWord: instance GHC.Classes.Ord Data.ShortWord.Word3
+ Data.ShortWord: instance GHC.Classes.Ord Data.ShortWord.Word5
+ Data.ShortWord: instance GHC.Classes.Ord Data.ShortWord.Word6
+ Data.ShortWord: instance GHC.Enum.Bounded Data.ShortWord.Int3
+ Data.ShortWord: instance GHC.Enum.Bounded Data.ShortWord.Int5
+ Data.ShortWord: instance GHC.Enum.Bounded Data.ShortWord.Int6
+ Data.ShortWord: instance GHC.Enum.Bounded Data.ShortWord.Word3
+ Data.ShortWord: instance GHC.Enum.Bounded Data.ShortWord.Word5
+ Data.ShortWord: instance GHC.Enum.Bounded Data.ShortWord.Word6
+ Data.ShortWord: instance GHC.Enum.Enum Data.ShortWord.Int3
+ Data.ShortWord: instance GHC.Enum.Enum Data.ShortWord.Int5
+ Data.ShortWord: instance GHC.Enum.Enum Data.ShortWord.Int6
+ Data.ShortWord: instance GHC.Enum.Enum Data.ShortWord.Word3
+ Data.ShortWord: instance GHC.Enum.Enum Data.ShortWord.Word5
+ Data.ShortWord: instance GHC.Enum.Enum Data.ShortWord.Word6
+ Data.ShortWord: instance GHC.Num.Num Data.ShortWord.Int3
+ Data.ShortWord: instance GHC.Num.Num Data.ShortWord.Int5
+ Data.ShortWord: instance GHC.Num.Num Data.ShortWord.Int6
+ Data.ShortWord: instance GHC.Num.Num Data.ShortWord.Word3
+ Data.ShortWord: instance GHC.Num.Num Data.ShortWord.Word5
+ Data.ShortWord: instance GHC.Num.Num Data.ShortWord.Word6
+ Data.ShortWord: instance GHC.Read.Read Data.ShortWord.Int3
+ Data.ShortWord: instance GHC.Read.Read Data.ShortWord.Int5
+ Data.ShortWord: instance GHC.Read.Read Data.ShortWord.Int6
+ Data.ShortWord: instance GHC.Read.Read Data.ShortWord.Word3
+ Data.ShortWord: instance GHC.Read.Read Data.ShortWord.Word5
+ Data.ShortWord: instance GHC.Read.Read Data.ShortWord.Word6
+ Data.ShortWord: instance GHC.Real.Integral Data.ShortWord.Int3
+ Data.ShortWord: instance GHC.Real.Integral Data.ShortWord.Int5
+ Data.ShortWord: instance GHC.Real.Integral Data.ShortWord.Int6
+ Data.ShortWord: instance GHC.Real.Integral Data.ShortWord.Word3
+ Data.ShortWord: instance GHC.Real.Integral Data.ShortWord.Word5
+ Data.ShortWord: instance GHC.Real.Integral Data.ShortWord.Word6
+ Data.ShortWord: instance GHC.Real.Real Data.ShortWord.Int3
+ Data.ShortWord: instance GHC.Real.Real Data.ShortWord.Int5
+ Data.ShortWord: instance GHC.Real.Real Data.ShortWord.Int6
+ Data.ShortWord: instance GHC.Real.Real Data.ShortWord.Word3
+ Data.ShortWord: instance GHC.Real.Real Data.ShortWord.Word5
+ Data.ShortWord: instance GHC.Real.Real Data.ShortWord.Word6
+ Data.ShortWord: instance GHC.Show.Show Data.ShortWord.Int3
+ Data.ShortWord: instance GHC.Show.Show Data.ShortWord.Int5
+ Data.ShortWord: instance GHC.Show.Show Data.ShortWord.Int6
+ Data.ShortWord: instance GHC.Show.Show Data.ShortWord.Word3
+ Data.ShortWord: instance GHC.Show.Show Data.ShortWord.Word5
+ Data.ShortWord: instance GHC.Show.Show Data.ShortWord.Word6
- Data.ShortWord.TH: mkShortWord :: String -> String -> String -> String -> Name -> Int -> [Name] -> Q [Dec]
+ Data.ShortWord.TH: mkShortWord :: String -> String -> String -> String -> String -> String -> Name -> Int -> [Name] -> Q [Dec]

Files

README.md view
@@ -1,5 +1,8 @@ Data-SWord ==========++[![Hackage](https://img.shields.io/hackage/v/data-sword.svg)](http://hackage.haskell.org/package/data-sword)+ This package provides Template Haskell utilities for declaring short binary word data types built on top of longer binary word data types. Signed and unsigned 2, 4, 7, 24, and 48-bit types are predefined.
data-sword.cabal view
@@ -1,12 +1,12 @@ Name: data-sword-Version: 0.1.1+Version: 0.2 Category: Data Stability: experimental Synopsis: Shorter binary words Description:   This package provides Template Haskell utilities for declaring short binary   word data types built on top of longer binary word data types. Signed and-  unsigned 2, 4, 7, 24, and 48-bit types are predefined.+  unsigned 2, 3, 4, 5, 6, 7, 24, and 48-bit types are predefined.  Homepage: https://github.com/mvv/data-sword Bug-Reports: https://github.com/mvv/data-sword/issues@@ -29,7 +29,7 @@  Library   Default-Language: Haskell2010-  Build-Depends: base >= 4.6 && < 5+  Build-Depends: base >= 4.7 && < 5                , template-haskell                , hashable >= 1.1                , data-bword >= 0.1@@ -42,7 +42,7 @@ Test-Suite tests   Default-Language: Haskell2010   Type: exitcode-stdio-1.0-  Build-Depends: base >= 4.6 && < 5+  Build-Depends: base                , tasty >= 0.8                , tasty-quickcheck >= 0.8                , data-sword
src/Data/ShortWord.hs view
@@ -3,27 +3,54 @@ {-# LANGUAGE TypeFamilies #-}  -- | This module provides signed and unsigned binary word data types of sizes---   2, 4, 7, 24, and 48 bits.+--   2, 3, 4, 5, 6, 7, 24, and 48 bits. module Data.ShortWord   ( module Data.BinaryWord   , Word2+  , aWord2+  , Word3+  , aWord3   , Word4+  , aWord4+  , Word5+  , aWord5+  , Word6+  , aWord6   , Word7+  , aWord7   , Word24+  , aWord24   , Word48+  , aWord48   , Int2+  , anInt2+  , Int3+  , anInt3   , Int4+  , anInt4+  , Int5+  , anInt5+  , Int6+  , anInt6   , Int7+  , anInt7   , Int24+  , anInt24   , Int48+  , anInt48   ) 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 []+mkShortWord "Word2" "Word2" "aWord2" "Int2" "Int2" "anInt2" ''Word8 2 []+mkShortWord "Word3" "Word3" "aWord3" "Int3" "Int3" "anInt3" ''Word8 3 []+mkShortWord "Word4" "Word4" "aWord4" "Int4" "Int4" "anInt4" ''Word8 4 []+mkShortWord "Word5" "Word5" "aWord5" "Int5" "Int5" "anInt5" ''Word8 5 []+mkShortWord "Word6" "Word6" "aWord6" "Int6" "Int6" "anInt6" ''Word8 6 []+mkShortWord "Word7" "Word7" "aWord7" "Int7" "Int7" "anInt7" ''Word8 7 []+mkShortWord "Word24" "Word24" "aWord24" "Int24" "Int24" "anInt24"+            ''Word32 24 []+mkShortWord "Word48" "Word48" "aWord48" "Int48" "Int48" "anInt48"+            ''Word64 48 []
src/Data/ShortWord/TH.hs view
@@ -10,11 +10,10 @@ import GHC.Arr (Ix(..)) import GHC.Enum (succError, predError, toEnumError) import Data.Data+import Data.Proxy (Proxy(..)) import Data.Ratio ((%)) import Data.Bits (Bits(..))-#if MIN_VERSION_base(4,7,0) import Data.Bits (FiniteBits(..))-#endif #if MIN_VERSION_hashable(1,2,0) import Data.Hashable (Hashable(..), hashWithSalt) #else@@ -34,28 +33,33 @@ --   'Hashable', 'Ix', 'Bits', 'BinaryWord'. mkShortWord ∷ String -- ^ Unsigned variant type name             → String -- ^ Unsigned variant constructor name+            → String -- ^ Unsigned variant proxy name             → String -- ^ Signed variant type name             → String -- ^ Signed variant constructor name+            → String -- ^ Signed variant proxy name             → Name   -- ^ The underlying (unsigned) type             → Int    -- ^ The bit length             → [Name] -- ^ List of instances for automatic derivation             → Q [Dec]-mkShortWord un uc sn sc utp bl ad =-    (++) <$> mkShortWord' False un' uc' sn' sc' utp bl ad-         <*> mkShortWord' True  sn' sc' un' uc' utp bl ad-  where un' = mkName un-        uc' = mkName uc-        sn' = mkName sn-        sc' = mkName sc+mkShortWord un uc upn sn sc spn utp bl ad =+    (++) <$> mkShortWord' False un' uc' upn' sn' sc' utp bl ad+         <*> mkShortWord' True  sn' sc' spn' un' uc' utp bl ad+  where un'  = mkName un+        uc'  = mkName uc+        upn' = mkName upn+        sn'  = mkName sn+        sc'  = mkName sc+        spn' = mkName spn  mkShortWord' ∷ Bool              → Name → Name+             → Name              → Name → Name              → Name              → Int              → [Name]              → Q [Dec]-mkShortWord' signed tp cn otp ocn utp bl ad = returnDecls $+mkShortWord' signed tp cn pn otp ocn utp bl ad = returnDecls $     [ NewtypeD [] tp [] #if MIN_VERSION_template_haskell(2,11,0)                Nothing@@ -70,6 +74,8 @@ #else                (union [''Typeable] ad) #endif+    , SigD pn (AppT (ConT ''Proxy) tpT)+    , fun pn $ ConE 'Proxy     , inst ''Eq [tp] $         {- (W x) == (W y) = x == y -}         [ funUn2 '(==) $ appVN '(==) [x, y]@@ -337,11 +343,9 @@         {- bitSize _ = SIZE -}         [ fun_ 'bitSize $ sizeE         , inline 'bitSize-#if MIN_VERSION_base(4,7,0)         {- bitSizeMaybe _ = Just SIZE -}         , fun_ 'bitSizeMaybe $ app (ConE 'Just) [sizeE]         , inline 'bitSizeMaybe-#endif         {- isSigned _ = SIGNED -}         , fun_ 'isSigned $ ConE $ if signed then 'True else 'False         , inline 'isSigned@@ -412,7 +416,6 @@         , funUn 'popCount $ appVN 'popCount [x]         , inline 'popCount         ]-#if MIN_VERSION_base(4,7,0)     , inst ''FiniteBits [tp]         {- finiteBitSize _ = SIZE -}         [ fun_ 'finiteBitSize $ sizeE@@ -426,7 +429,6 @@         , inline 'countTrailingZeros # endif         ]-#endif     , inst ''BinaryWord [tp]         [ tySynInst ''UnsignedWord [tpT] $             ConT $ if signed then otp else tp@@ -610,13 +612,7 @@     litS = LitE . StringL     sizeE = litI $ toInteger bl     shiftE = appV '(-)-               [ appV-#if MIN_VERSION_base(4,7,0)-                      'finiteBitSize -#else-                      'bitSize -#endif-                      [SigE (VarE 'undefined) uT]+               [ appV 'finiteBitSize [SigE (VarE 'undefined) uT]                , sizeE ]     maskE = appV 'shiftL [VarE 'allOnes, shiftE]     returnDecls ds = do
tests/Tests.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE UnicodeSyntax #-}-{-# LANGUAGE CPP #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE MultiParamTypeClasses #-}@@ -36,10 +35,6 @@      $ testGroup "Tests"          [ isoTestGroup "Word64/16" (0 ∷ U16)          , isoTestGroup "Int64/16" (0 ∷ I16) ]--#if !MIN_VERSION_base(4,7,0)-finiteBitSize = bitSize-#endif  isoTestGroup name t =   testGroup name
tests/Types.hs view
@@ -6,4 +6,4 @@ import Data.Word import Data.ShortWord.TH -mkShortWord "U16" "U16" "I16" "I16" ''Word64 16 []+mkShortWord "U16" "U16" "aU16" "I16" "I16" "anI16" ''Word64 16 []