25 #ifndef DOZERG_COMPRESSOR_SNAPPY_H_20131210 26 #define DOZERG_COMPRESSOR_SNAPPY_H_20131210 30 #include "impl/environment.hh" 51 bool compress(
const std::vector<char> & input, std::vector<char> & output)
const{
52 return compressTemplate(input, output);
54 bool compress(
const std::vector<signed char> & input, std::vector<signed char> & output)
const{
55 return compressTemplate(input, output);
57 bool compress(
const std::vector<unsigned char> & input, std::vector<unsigned char> & output)
const{
58 return compressTemplate(input, output);
60 bool compress(
const std::string & input, std::string & output)
const{
61 return compressTemplate(input, output);
73 bool decompress(
const std::vector<char> & input, std::vector<char> & output)
const{
74 return decompressTemplate(input, output);
76 bool decompress(
const std::vector<signed char> & input, std::vector<signed char> & output)
const{
77 return decompressTemplate(input, output);
79 bool decompress(
const std::vector<unsigned char> & input, std::vector<unsigned char> & output)
const{
80 return decompressTemplate(input, output);
82 bool decompress(
const std::string & input, std::string & output)
const{
83 return decompressTemplate(input, output);
87 template<
class Buffer>
88 bool compressTemplate(
const Buffer & input, Buffer & output)
const{
89 size_t sz = snappy::MaxCompressedLength(input.size());
91 snappy::RawCompress(reinterpret_cast<const char *>(&input[0]), input.size(),
reinterpret_cast<char *
>(&output[0]), &sz);
95 template<
class Buffer>
96 bool decompressTemplate(
const Buffer & input, Buffer & output)
const{
97 if(!snappy::IsValidCompressedBuffer(reinterpret_cast<const char *>(&input[0]), input.size()))
100 if(!snappy::GetUncompressedLength(reinterpret_cast<const char *>(&input[0]), input.size(), &sz))
103 snappy::RawUncompress(reinterpret_cast<const char *>(&input[0]), input.size(),
reinterpret_cast<char *
>(&output[0]));
A convenient interface for Snappy compression algorithm.
Definition: compress_snappy.hh:39