Need help with gzip-hpp?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

mapbox
202 Stars 45 Forks BSD 2-Clause "Simplified" License 90 Commits 11 Opened issues

Description

Gzip header-only C++ library

Services available

!
?

Need anything else?

Contributors list

Gzip C++ lib for gzip compression and decompression. Extracted from mapnik-vector-tile for light-weight modularity.

Build Status hpp-skel badge

Usage

// 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

Compress

// 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 passed

std::string compressed_data = gzip::compress(tile->data(), size, level);

Decompress

// 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());

Test

# build test binaries
make

run tests

make test

You can make Release test binaries as well

shell
BUILDTYPE=Release make
BUILDTYPE=Release make test

Versioning

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++

if GZIPVERSIONMAJOR > 2

// use version 2 api

else

// use older verion apis

endif

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++

if GZIPVERSIONCODE > 20001

// use feature provided in v2.0.1

endif

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.