Gzip header-only C++ library
Gzip C++ lib for gzip compression and decompression. Extracted from mapnik-vector-tile for light-weight modularity.
// Include the specific gzip headers your code needs, for example... #include #include #include #include #include// All function calls must pass in a pointer of an // immutable character sequence (aka a string in C) and its size std::string data = "hello"; const char * pointer = data.data(); std::size_t size = data.size();
// Check if compressed. Can check both gzip and zlib. bool c = gzip::is_compressed(pointer, size); // false
// Compress returns a std::string std::string compressed_data = gzip::compress(pointer, size);
// Decompress returns a std::string and decodes both zlib and gzip const char * compressed_pointer = compressed_data.data(); std::string decompressed_data = gzip::decompress(compressed_pointer, compressed_data.size());
// Or like so std::string compressed_data = gzip::compress(tile->data(), tile->data.size());
// Or like so std::string value = gzip::compress(node::Buffer::Data(obj), node::Buffer::Length(obj));
// Or...etc
// Optionally include compression level std::size_t size; // No default value, but what happens when not passed?? int level = Z_DEFAULT_COMPRESSION; // Z_DEFAULT_COMPRESSION is the default if no arg is passedstd::string compressed_data = gzip::compress(tile->data(), size, level);
// No args other than the std:string std::string data = "hello"; std::string compressed_data = gzip::compress(data); const char * compressed_pointer = compressed_data.data();std::string decompressed_data = gzip::decompress(compressed_pointer, compressed_data.size());
# build test binaries makerun tests
make test
You can make Release test binaries as well
shell BUILDTYPE=Release make BUILDTYPE=Release make test
This library is semantically versioned using the /include/gzip/version.cpp file. This defines a number of macros that can be used to check the current major, minor, or patch versions, as well as the full version string.
Here's how you can check for a particular version to use specific API methods ```c++
// use version 2 api
// use older verion apis
Here's how to check the version string ```c++ std::cout << "version: " << GZIP_VERSION_STRING << "/n"; // => version: 0.2.0
And lastly, mathematically checking for a specific version: ```c++
// use feature provided in v2.0.1