module Codec.HaskellCompression.Shared where
import Data.List
import qualified Data.Bimap as Map
import Data.Maybe
import Data.BooleanList
import qualified Data.ByteString as B (pack,unpack,ByteString)
import Control.Arrow
viaNum f d = B.pack ( map fromIntegral (f ( map fromIntegral (B.unpack d))))
startingLength = fromIntegral 9
viaBool f ns = int8Chunks (f (toBoolean8s ns))
lengthOfKeys = (2 ^ (startingLength 1)) 1
initdb :: Map.Bimap [[Bool]] Int
initdb = Map.fromList (Data.List.zipWith (\x y ->([x],y)) (integersToBooleanListsPadded startingLength [0..lengthOfKeys]) [0..])
initdb2 :: Map.Bimap (Maybe Int,Int) Int
initdb2 = Map.fromList (Data.List.zipWith (\x y ->((Nothing,fromIntegral x),fromIntegral y)) [0..lengthOfKeys] [0..])
via = viaNum . viaBool