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