Bryan O'Sullivan committed dd76365

Add docs

Comments (0)

Files changed (1)


 {-# LANGUAGE ForeignFunctionInterface #-}
+-- Module:      Codec.Compression.Snappy
+-- Copyright:   (c) 2011 MailRank, Inc.
+-- License:     Apache
+-- Maintainer:  Bryan O'Sullivan <>
+-- Stability:   experimental
+-- Portability: portable
+-- This library provides fast, pure Haskell bindings to Google's
+-- Snappy compression and decompression library:
+-- <>
 module Codec.Compression.Snappy
 import System.IO.Unsafe (unsafePerformIO)
 import qualified Data.ByteString as B
+-- | Compress data into the Snappy format.
 compress :: ByteString -> ByteString
 compress bs@(PS sfp off len) = unsafePerformIO $ do
   let dlen0 = fromIntegral . c_MaxCompressedLength . fromIntegral $ len
         c_RawCompress (sptr `plusPtr` off) (fromIntegral len) dptr dlenPtr
         (PS dfp 0 . fromIntegral) `fmap` peek dlenPtr
+-- | Decompress data in the Snappy format.
+-- If the input is not compressed or is corrupt, an exception will be
+-- thrown.
 decompress :: ByteString -> ByteString
 decompress (PS sfp off slen) = unsafePerformIO $
   withForeignPtr sfp $ \sptr0 -> do
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.