data-msgpack 0.0.7 → 0.0.8
raw patch · 2 files changed
+27/−1 lines, 2 filesdep +vectorPVP ok
version bump matches the API change (PVP)
Dependencies added: vector
API changes (from Hackage documentation)
+ Data.MessagePack.Class: instance (Data.MessagePack.Class.MessagePack a, Data.Vector.Unboxed.Base.Unbox a) => Data.MessagePack.Class.MessagePack (Data.Vector.Unboxed.Base.Vector a)
+ Data.MessagePack.Class: instance (Data.MessagePack.Class.MessagePack a, Foreign.Storable.Storable a) => Data.MessagePack.Class.MessagePack (Data.Vector.Storable.Vector a)
+ Data.MessagePack.Class: instance Data.MessagePack.Class.MessagePack a => Data.MessagePack.Class.MessagePack (Data.Vector.Vector a)
Files
- data-msgpack.cabal +7/−1
- src/Data/MessagePack/Class.hs +20/−0
data-msgpack.cabal view
@@ -1,5 +1,5 @@ name: data-msgpack-version: 0.0.7+version: 0.0.8 synopsis: A Haskell implementation of MessagePack homepage: http://msgpack.org/ license: BSD3@@ -18,6 +18,10 @@ since the original author is unreachable. This fork incorporates a number of bugfixes and is actively being developed. +extra-source-files:+ bench/Data/MessagePack/IntBench.hs+ bench/Data/MessagePackBench.hs+ source-repository head type: git location: https://github.com/TokTok/hs-msgpack.git@@ -50,6 +54,7 @@ , hashable , text , unordered-containers+ , vector , void executable msgpack-parser@@ -84,6 +89,7 @@ , hspec , text , unordered-containers+ , vector , void benchmark benchmark
src/Data/MessagePack/Class.hs view
@@ -36,6 +36,9 @@ import qualified Data.Map as Map import qualified Data.Text as T import qualified Data.Text.Lazy as LT+import qualified Data.Vector as V+import qualified Data.Vector.Storable as VS+import qualified Data.Vector.Unboxed as VU import Data.Word (Word, Word16, Word32, Word64, Word8) import GHC.Generics @@ -188,6 +191,23 @@ ObjectArray xs -> mapM fromObject xs _ -> fail "invalid encoding for list" +instance MessagePack a => MessagePack (V.Vector a) where+ toObject = ObjectArray . map toObject . V.toList+ fromObject = \case+ ObjectArray o -> V.fromList <$> mapM fromObject o+ _ -> fail "invalid encoding for Vector"++instance (MessagePack a, VU.Unbox a) => MessagePack (VU.Vector a) where+ toObject = ObjectArray . map toObject . VU.toList+ fromObject = \case+ ObjectArray o -> VU.fromList <$> mapM fromObject o+ _ -> fail "invalid encoding for Unboxed Vector"++instance (MessagePack a, VS.Storable a) => MessagePack (VS.Vector a) where+ toObject = ObjectArray . map toObject . VS.toList+ fromObject = \case+ ObjectArray o -> VS.fromList <$> mapM fromObject o+ _ -> fail "invalid encoding for Storable Vector" -- Instances for map-like data structures.