diff --git a/src/Main.hs b/src/Main.hs index c161d09..7944151 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -89,13 +89,15 @@ testCompression _ bs = . (compress :: BS.ByteString -> Maybe ([TreeDir], HuffmanTree a)) $ bs -encodeCompressed :: (C.Serialize a) => Maybe ([TreeDir], HuffmanTree a) -> (BS.ByteString) +encodeCompressed :: (C.Serialize a) => Maybe ([TreeDir], HuffmanTree a) -> BS.ByteString encodeCompressed = C.encode . fmap (Bi.first encodeTreeDirs) where encodeTreeDirs = cloneToByteStringWithLen . V.fromList . map (BV.Bit . (== R)) +cloneToByteStringWithLen :: V.Vector BV.Bit -> (BS.ByteString, Int) cloneToByteStringWithLen vec = (BV.cloneToByteString vec, V.length vec) +cloneFromByteStringWithLen :: (BS.ByteString, Int) -> V.Vector BV.Bit cloneFromByteStringWithLen (bs, len) = V.take len . BV.cloneFromByteString $ bs decodeTreeDirs :: (BS.ByteString, Int) -> [TreeDir]