packages feed

messagepack 0.2.1 → 0.3.0

raw patch · 3 files changed

+38/−1 lines, 3 files

Files

CHANGELOG view
@@ -1,3 +1,7 @@+2014-12-03 Sebastian Witte <woozletoff@gmail.com>++    * Add support for extension types+ 2014-11-13 Rodrigo Setti <rodrigosetti@gmail.com>      * Changes `ObjectInt` data from `Int` to `Int64`, so it can be possible
Data/MessagePack.hs view
@@ -35,6 +35,7 @@             | ObjectBinary BS.ByteString             | ObjectArray  [Object]             | ObjectMap    (M.Map Object Object )+            | ObjectExt    !Int8 BS.ByteString     deriving (Eq, Ord, Show)  instance Serialize Object where@@ -97,6 +98,19 @@             | size < 0x10000 = putWord8 map16 >> putWord16be (fromIntegral size)             | otherwise      = putWord8 map32 >> putWord32be (fromIntegral size) +    put (ObjectExt t bytes) = header >> putWord8 (fromIntegral t) >> putByteString bytes+      where+        size = BS.length bytes+        header+          | size == 1      = putWord8 fixext1+          | size == 2      = putWord8 fixext2+          | size == 4      = putWord8 fixext4+          | size == 8      = putWord8 fixext8+          | size == 16     = putWord8 fixext16+          | size < 0x100   = putWord8 ext8  >> putWord8 (fromIntegral size)+          | size < 0x10000 = putWord8 ext16 >> putWord16be (fromIntegral size)+          | otherwise      = putWord8 ext32 >> putWord32be (fromIntegral size)+     get =         getWord8 >>= getObject       where@@ -148,6 +162,25 @@                                                    ObjectMap <$> M.fromList <$> replicateM n get           | k == map32                        = do n <- fromIntegral <$> getWord32be                                                    ObjectMap <$> M.fromList <$> replicateM n get+          | k == ext8                         = do n <- fromIntegral <$> getWord8+                                                   ObjectExt <$> (fromIntegral <$> getWord8)+                                                             <*> getByteString n+          | k == ext16                        = do n <- fromIntegral <$> getWord16be+                                                   ObjectExt <$> (fromIntegral <$> getWord8)+                                                             <*> getByteString n+          | k == ext32                        = do n <- fromIntegral <$> getWord32be+                                                   ObjectExt <$> (fromIntegral <$> getWord8)+                                                             <*> getByteString n+          | k == fixext1                      = ObjectExt <$> (fromIntegral <$> getWord8)+                                                          <*> getByteString 1+          | k == fixext2                      = ObjectExt <$> (fromIntegral <$> getWord8)+                                                          <*> getByteString 2+          | k == fixext4                      = ObjectExt <$> (fromIntegral <$> getWord8)+                                                          <*> getByteString 4+          | k == fixext8                      = ObjectExt <$> (fromIntegral <$> getWord8)+                                                          <*> getByteString 8+          | k == fixext16                     = ObjectExt <$> (fromIntegral <$> getWord8)+                                                          <*> getByteString 16            | otherwise                         = fail $ "mark byte not supported: " ++ show k 
messagepack.cabal view
@@ -1,5 +1,5 @@ name               : messagepack-version            : 0.2.1+version            : 0.3.0 synopsis           : Serialize instance for Message Pack Object description        : Serialize instance for Message Pack Object homepage           : https://github.com/rodrigosetti/messagepack