1-- | 2-- Module : Crypto.Internal.DeepSeq 3-- License : BSD-style 4-- Maintainer : Vincent Hanquez <vincent@snarc.org> 5-- Stability : experimental 6-- Portability : unknown 7-- 8-- Simple abstraction module to allow compilation without deepseq 9-- by defining our own NFData class if not compiling with deepseq 10-- support. 11-- 12{-# LANGUAGE CPP #-} 13module Crypto.Internal.DeepSeq 14 ( NFData(..) 15 ) where 16 17#ifdef WITH_DEEPSEQ_SUPPORT 18import Control.DeepSeq 19#else 20import Data.Word 21import Data.ByteArray 22 23class NFData a where rnf :: a -> () 24 25instance NFData Word8 where rnf w = w `seq` () 26instance NFData Word16 where rnf w = w `seq` () 27instance NFData Word32 where rnf w = w `seq` () 28instance NFData Word64 where rnf w = w `seq` () 29 30instance NFData Bytes where rnf b = b `seq` () 31instance NFData ScrubbedBytes where rnf b = b `seq` () 32 33instance NFData Integer where rnf i = i `seq` () 34 35#endif 36