]> code.bitgloo.com Git - clyne/consteval-huffman.git/commitdiff
Update readme for new features
authorclyne <clyne@bitgloo.com>
Mon, 28 Dec 2020 00:40:29 +0000 (19:40 -0500)
committerGitHub <noreply@github.com>
Mon, 28 Dec 2020 00:40:29 +0000 (19:40 -0500)
README.md

index b834d1c6ed5285748ff4f2b81c2ec0dd5cde449a..242c4035ebb2dfb3d9b6a9a0bee29ef9d8487032 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,20 +1,18 @@
 # consteval-huffman
 
-Allows for long string or data constants to be compressed at compile-time, with a small decoder routine for decompression at run-time. 
+Allows for long strings of text or data to be compressed at compile-time, with an efficient decoder routine for decompression at run-time. The decoder conforms to `std::forward_iterator`, allowing for use in ranged-for or standard algorithms.
 
-Compression is achieved using [Huffman coding](https://en.wikipedia.org/wiki/Huffman_coding), which works by creating short (measured in bits) codes for frequently-occuring characters.
+Compression is achieved using [Huffman coding](https://en.wikipedia.org/wiki/Huffman_coding), which works by creating short codes (measured in bits) for frequently-occuring characters. This works best on larger pieces of data, or more so data that is limited in its range of values (e.g. written text).
 
 ## Use cases
 
 **1. Text configurations (e.g. JSON)**
 
-A ~3.5kB string of JSON can be compressed down ~2.5kB ([see it on Godbolt](https://godbolt.org/z/P6a9Kr)).
+A ~3.5kB string of JSON can be compressed down ~2.5kB ([see it on Godbolt](https://godbolt.org/z/1MzG1v)).
 
 **2. Scripts (e.g. Lisp)**
 
-A ~40 line commented sample of Lisp can be reduced from 1,662 bytes to 1,244 (418 bytes saved) ([on Godbolt](https://godbolt.org/z/c64Pzz)).
-
-Compression will work best on larger blocks of text or data, as a decoding tree must be stored with the compressed data that requires three bytes per unique data byte.
+A ~40 line comment-including sample of Lisp can be reduced from 1,662 bytes to 1,244 (418 bytes saved) ([Godbolt](https://godbolt.org/z/jcnKza)).
 
 ## How to Use
 
@@ -23,15 +21,17 @@ Compression will work best on larger blocks of text or data, as a decoding tree
 
 constexpr static const char some_data_raw[] = /* insert text here */;
 
-constinit static const auto some_data = consteval_huffman<some_data_raw>();
+// Creates an object with the compressed data
+// If data is not smaller after compression, huffman_compress will keep the data uncompressed
+constinit static const auto some_data = huffman_compress<some_data_raw>();
 
 // Or, with a set data length:
-// ... some_data = consteval_huffman<some_data_raw, 1500>();
+// ... some_data = huffman_compress<some_data_raw, 1500>();
 
 int main()
 {
     // Decompress and print out the data
-    for (auto decode = some_data.get_decoder(); decode; ++decode)
-        putchar(*decode);
+    for (auto c : some_data)
+        putchar(c);
 }
 ```