-- Copyright (c) 2016-present, Facebook, Inc. -- Copyright (c) 2019-present, Luis Pedro Coelho -- All rights reserved. -- -- This source code is licensed under the BSD-style license found in -- the LICENSE file in the root directory of this source tree. An -- additional grant of patent rights can be found in the PATENTS file -- in the same directory. {-# LANGUAGE BangPatterns #-} -- | -- Module : Codec.Compression.Zstd.Types -- Copyright : (c) 2016-present, Facebook, Inc. All rights reserved. -- -- License : BSD3 -- Maintainer : bryano@fb.com -- Stability : experimental -- Portability : GHC -- -- Types supporting zstd compression and decompression. module Codec.Compression.Zstd.Types ( Decompress(..) , Dict(..) , mkDict ) where import Control.DeepSeq (NFData(..)) import Data.ByteString (ByteString) -- | The result of a decompression operation. data Decompress = Skip -- ^ Either the compressed frame was empty, or it was compressed in -- streaming mode and so its size is not known. | Error String -- ^ An error occurred. | Decompress ByteString -- ^ The payload was successfully decompressed. deriving (Eq, Read, Show) -- | Compression dictionary. newtype Dict = Dict { fromDict :: ByteString } deriving (Eq, Ord) -- | Smart constructor. mkDict :: ByteString -> Dict mkDict d = Dict d instance Show Dict where showsPrec n (Dict d) r = showsPrec n d r instance Read Dict where readsPrec n s = map (\(a,b) -> (Dict a, b)) (readsPrec n s) instance NFData Dict where rnf (Dict d) = rnf d