packages feed

safecopy 0.5.1 → 0.6.0

raw patch · 4 files changed

+47/−30 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Data.SafeCopy: Prim :: a -> Prim a
+ Data.SafeCopy: getPrimitive :: Prim a -> a
+ Data.SafeCopy: newtype Prim a

Files

safecopy.cabal view
@@ -7,7 +7,7 @@ -- The package version. See the Haskell package versioning policy -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for -- standards guiding when and how versions should be incremented.-Version:             0.5.1+Version:             0.6.0  -- A short (one-line) description of the package. Synopsis:            Binary serialization with version control.@@ -61,3 +61,6 @@   -- Build-tools:    GHC-Options:         -Wall++  if(impl(ghc >= 7.2.1))+    cpp-options: -DDEFAULT_SIGNATURES
src/Data/SafeCopy.hs view
@@ -74,6 +74,7 @@       safeGet     , safePut     , SafeCopy(version, kind, getCopy, putCopy)+    , Prim(..)     , Migrate(..)     , Kind     , extension
src/Data/SafeCopy/Instances.hs view
@@ -35,8 +35,15 @@ import           System.Time (ClockTime(..), TimeDiff(..), CalendarTime(..), Month(..)) import qualified System.Time as OT +instance SafeCopy a => SafeCopy (Prim a) where+  kind = primitive+  getCopy = contain $+            do e <- unsafeUnPack getCopy+               return $ Prim e+  putCopy (Prim e)+    = contain $ unsafeUnPack (putCopy e)+ instance SafeCopy a => SafeCopy [a] where-    kind = primitive     getCopy = contain $               do n <- get                  getSafeGet >>= replicateM n@@ -46,7 +53,6 @@              getSafePut >>= forM_ lst  instance SafeCopy a => SafeCopy (Maybe a) where-    kind = primitive     getCopy = contain $ do n <- get                            if n then liftM Just safeGet                                 else return Nothing@@ -102,31 +108,25 @@   instance (SafeCopy a, SafeCopy b) => SafeCopy (a,b) where-    kind = primitive     getCopy = contain $ liftM2 (,) safeGet safeGet     putCopy (a,b) = contain $ safePut a >> safePut b instance (SafeCopy a, SafeCopy b, SafeCopy c) => SafeCopy (a,b,c) where-    kind = primitive     getCopy = contain $ liftM3 (,,) safeGet safeGet safeGet     putCopy (a,b,c) = contain $ safePut a >> safePut b >> safePut c instance (SafeCopy a, SafeCopy b, SafeCopy c, SafeCopy d) => SafeCopy (a,b,c,d) where-    kind = primitive     getCopy = contain $ liftM4 (,,,) safeGet safeGet safeGet safeGet     putCopy (a,b,c,d) = contain $ safePut a >> safePut b >> safePut c >> safePut d instance (SafeCopy a, SafeCopy b, SafeCopy c, SafeCopy d, SafeCopy e) =>          SafeCopy (a,b,c,d,e) where-    kind = primitive     getCopy = contain $ liftM5 (,,,,) safeGet safeGet safeGet safeGet safeGet     putCopy (a,b,c,d,e) = contain $ safePut a >> safePut b >> safePut c >> safePut d >> safePut e instance (SafeCopy a, SafeCopy b, SafeCopy c, SafeCopy d, SafeCopy e, SafeCopy f) =>          SafeCopy (a,b,c,d,e,f) where-    kind = primitive     getCopy = contain $ (,,,,,) <$> safeGet <*> safeGet <*> safeGet <*> safeGet <*> safeGet <*> safeGet     putCopy (a,b,c,d,e,f) = contain $ safePut a >> safePut b >> safePut c >> safePut d >>                                       safePut e >> safePut f instance (SafeCopy a, SafeCopy b, SafeCopy c, SafeCopy d, SafeCopy e, SafeCopy f, SafeCopy g) =>          SafeCopy (a,b,c,d,e,f,g) where-    kind = primitive     getCopy = contain $ (,,,,,,) <$> safeGet <*> safeGet <*> safeGet <*> safeGet <*>                                      safeGet <*> safeGet <*> safeGet     putCopy (a,b,c,d,e,f,g) = contain $ safePut a >> safePut b >> safePut c >> safePut d >>@@ -134,55 +134,52 @@   instance SafeCopy Int where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy Integer where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy Float where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy Double where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy L.ByteString where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy B.ByteString where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy Char where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy Word8 where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy Word16 where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy Word32 where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy Word64 where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy Ordering where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy Int8 where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy Int16 where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy Int32 where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy Int64 where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance (Integral a, SafeCopy a) => SafeCopy (Ratio a) where-    kind = primitive;     getCopy   = contain $ do n <- safeGet                              d <- safeGet                              return (n % d)     putCopy r = contain $ do safePut (numerator   r)                              safePut (denominator r) instance (HasResolution a, Fractional (Fixed a)) => SafeCopy (Fixed a) where-    kind = primitive     getCopy   = contain $ fromRational <$> safeGet     putCopy   = contain . safePut . toRational  instance SafeCopy () where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance SafeCopy Bool where-    kind = primitive; getCopy = contain get; putCopy = contain . put+    getCopy = contain get; putCopy = contain . put instance (SafeCopy a, SafeCopy b) => SafeCopy (Either a b) where-    kind = primitive     getCopy = contain $ do n <- get                            if n then liftM Right safeGet                                 else liftM Left safeGet
src/Data/SafeCopy/SafeCopy.hs view
@@ -1,5 +1,11 @@ {-# LANGUAGE GADTs, TypeFamilies, FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-}++{-# LANGUAGE CPP #-}+#ifdef DEFAULT_SIGNATURES+{-# LANGUAGE DefaultSignatures #-}+#endif+ ----------------------------------------------------------------------------- -- | -- Module      :  Data.SafeCopy.SafeCopy@@ -51,6 +57,9 @@     Base      :: Kind a     Extends   :: (Migrate a) => Proxy (MigrateFrom a) -> Kind a +-- | Wrapper for data that was saved without a version tag.+newtype Prim a = Prim { getPrimitive :: a }+ -- | The centerpiece of this library. Defines a version for a data type --   together with how it should be serialized/parsed. --@@ -100,6 +109,13 @@             proxy = proxyFromConsistency ret         in ret +#ifdef DEFAULT_SIGNATURES+    default getCopy :: Serialize a => Contained (Get a)+    getCopy = contain get++    default putCopy :: Serialize a => a -> Contained Put+    putCopy = contain . put+#endif   constructGetterFromVersion :: SafeCopy a => Version a -> Proxy a -> Get a