primitive-extras 0.6.3 → 0.6.4
raw patch · 3 files changed
+32/−1 lines, 3 filesdep +bytestringPVP ok
version bump matches the API change (PVP)
Dependencies added: bytestring
API changes (from Hackage documentation)
+ PrimitiveExtras.PrimArray: cerealGetAsInMemory :: Prim element => Get Int -> Get (PrimArray element)
+ PrimitiveExtras.PrimArray: cerealPutAsInMemory :: Prim element => Putter Int -> Putter (PrimArray element)
+ PrimitiveExtras.PrimMultiArray: cerealGetAsInMemory :: Prim element => Get Int -> Get (PrimMultiArray element)
+ PrimitiveExtras.PrimMultiArray: cerealPutAsInMemory :: Prim element => Putter Int -> Putter (PrimMultiArray element)
Files
- library/PrimitiveExtras/PrimArray.hs +15/−0
- library/PrimitiveExtras/PrimMultiArray.hs +15/−0
- primitive-extras.cabal +2/−1
library/PrimitiveExtras/PrimArray.hs view
@@ -8,6 +8,7 @@ import qualified Data.Vector.Primitive as PrimitiveVector import qualified PrimitiveExtras.Folds as Folds import qualified PrimitiveExtras.FoldMs as FoldMs+import qualified Data.ByteString.Short.Internal as ShortByteString oneHot :: Prim a => Int {-^ Size -} -> Int {-^ Index -} -> a -> PrimArray a@@ -95,12 +96,26 @@ size <- int replicateM size element +cerealGetAsInMemory :: Prim element => Cereal.Get Int -> Cereal.Get (PrimArray element)+cerealGetAsInMemory int =+ do+ size <- int+ ShortByteString.SBS ba <- Cereal.getShortByteString size+ return (PrimArray ba)+ cerealPut :: Prim element => Cereal.Putter Int -> Cereal.Putter element -> Cereal.Putter (PrimArray element) cerealPut int element primArrayValue = size <> elements where size = int (sizeofPrimArray primArrayValue) elements = traverse_ element primArrayValue++cerealPutAsInMemory :: Prim element => Cereal.Putter Int -> Cereal.Putter (PrimArray element)+cerealPutAsInMemory int primArrayValue@(PrimArray ba) =+ size <> elements+ where+ size = int (sizeofPrimArray primArrayValue)+ elements = Cereal.putShortByteString (ShortByteString.SBS ba) {-| Given a size of the array,
library/PrimitiveExtras/PrimMultiArray.hs view
@@ -11,7 +11,9 @@ toIndicesUnfoldM, toUnfoldAtM, cerealGet,+ cerealGetAsInMemory, cerealPut,+ cerealPutAsInMemory, fold, ) where@@ -90,12 +92,25 @@ size <- int replicateM size (PrimArray.cerealGet int element) +cerealGetAsInMemory :: Prim element => Cereal.Get Int -> Cereal.Get (PrimMultiArray element)+cerealGetAsInMemory int =+ do+ size <- int+ replicateM size (PrimArray.cerealGetAsInMemory int)+ cerealPut :: Prim element => Cereal.Putter Int -> Cereal.Putter element -> Cereal.Putter (PrimMultiArray element) cerealPut int element (PrimMultiArray outerArrayValue) = size <> innerArrays where size = int (sizeofUnliftedArray outerArrayValue) innerArrays = UnliftedArray.traverse_ (PrimArray.cerealPut int element) outerArrayValue++cerealPutAsInMemory :: Prim element => Cereal.Putter Int -> Cereal.Putter (PrimMultiArray element)+cerealPutAsInMemory int (PrimMultiArray outerArrayValue) =+ size <> innerArrays+ where+ size = int (sizeofUnliftedArray outerArrayValue)+ innerArrays = UnliftedArray.traverse_ (PrimArray.cerealPutAsInMemory int) outerArrayValue {-| Having a priorly computed array of inner dimension sizes,
primitive-extras.cabal view
@@ -1,7 +1,7 @@ name: primitive-extras version:- 0.6.3+ 0.6.4 category: Primitive synopsis:@@ -53,6 +53,7 @@ PrimitiveExtras.FoldMs build-depends: base >=4.7 && <5,+ bytestring >=0.10 && <0.11, cereal >=0.5.5 && <0.6, deferred-folds >=0.6.5 && <0.7, focus >=1 && <1.1,