From 0c375acd686f2e7f3116e243bf9c89a836d5be99 Mon Sep 17 00:00:00 2001
From: pacien
Date: Fri, 30 Nov 2018 21:16:04 +0100
Subject: rename main file
---
src/gziplike.nim | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
create mode 100644 src/gziplike.nim
(limited to 'src/gziplike.nim')
diff --git a/src/gziplike.nim b/src/gziplike.nim
new file mode 100644
index 0000000..cf76f5e
--- /dev/null
+++ b/src/gziplike.nim
@@ -0,0 +1,56 @@
+# gzip-like LZSS compressor
+# Copyright (C) 2018 Pacien TRAN-GIRARD
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+import os, streams, sugar
+import bitio/bitreader, bitio/bitwriter, blocks/streamblock
+
+proc transform*(operation: (BitReader, BitWriter) -> void, input, output: string) =
+ let inputStream = openFileStream(input, fmRead)
+ defer: inputStream.close()
+ let outputStream = openFileStream(output, fmWrite)
+ defer: outputStream.close()
+ operation(inputStream.bitReader(), outputStream.bitWriter())
+
+proc compress*(bitReader: BitReader, bitWriter: BitWriter) =
+ while not bitReader.atEnd():
+ let streamBlock = streamblock.readRaw(bitReader)
+ streamBlock.writeSerialisedTo(bitWriter)
+ bitWriter.flush()
+
+proc decompress*(bitReader: BitReader, bitWriter: BitWriter) =
+ var hasMore = true
+ while hasMore:
+ let streamBlock = streamblock.readSerialised(bitReader)
+ streamBlock.writeRawTo(bitWriter)
+ hasMore = not streamBlock.isLast()
+ bitWriter.flush()
+
+proc printUsage(output: File) =
+ output.writeLine("Usage: " & paramStr(0) & "