15 #include <lzo/lzoconf.h> 
   16 #include <lzo/lzoutil.h> 
   17 #include <lzo/lzo1x.h> 
   45         uint8_t* &compressed, uint64_t &compressed_size, int32_t level)
 
   47     uint64_t initial_buffer_size=0;
 
   49     if (uncompressed_size==0)
 
   60                 initial_buffer_size=uncompressed_size;
 
   61                 compressed_size=uncompressed_size;
 
   62                 compressed=SG_MALLOC(uint8_t, compressed_size);
 
   63                 memcpy(compressed, uncompressed, uncompressed_size);
 
   69                 if (lzo_init() != LZO_E_OK)
 
   70                     SG_ERROR(
"Error initializing LZO Compression\n")
 
   72                 lzo_bytep lzo_wrkmem = (lzo_bytep) lzo_malloc(LZO1X_999_MEM_COMPRESS);
 
   74                     SG_ERROR(
"Error allocating LZO workmem\n")
 
   76                 initial_buffer_size=uncompressed_size +
 
   77                     uncompressed_size / 16+ 64 + 3;
 
   79                 compressed_size=initial_buffer_size;
 
   80                 compressed=SG_MALLOC(uint8_t, initial_buffer_size);
 
   82                 lzo_uint lzo_size=compressed_size;
 
   87                     ret=lzo1x_1_15_compress(uncompressed, uncompressed_size,
 
   88                                 compressed, &lzo_size, lzo_wrkmem);
 
   92                     ret=lzo1x_999_compress(uncompressed, uncompressed_size,
 
   93                                 compressed, &lzo_size, lzo_wrkmem);
 
   96                 compressed_size=lzo_size;
 
  100                     SG_ERROR(
"Error lzo-compressing data\n")
 
  108                 initial_buffer_size=1.001*uncompressed_size + 12;
 
  109                 compressed_size=initial_buffer_size;
 
  110                 compressed=SG_MALLOC(uint8_t, initial_buffer_size);
 
  111                 uLongf gz_size=compressed_size;
 
  113                 if (compress2(compressed, &gz_size, uncompressed,
 
  114                             uncompressed_size, level) != Z_OK)
 
  116                     SG_ERROR(
"Error gzip-compressing data\n")
 
  118                 compressed_size=gz_size;
 
  129                 initial_buffer_size=1.01*uncompressed_size + 600;
 
  130                 compressed_size=initial_buffer_size;
 
  131                 compressed=SG_MALLOC(uint8_t, initial_buffer_size);
 
  132                 if (BZ2_bzCompressInit(&strm, level, 0, 0)!=BZ_OK)
 
  133                     SG_ERROR(
"Error initializing bzip2 compressor\n")
 
  135                 strm.next_in=(
char*) uncompressed;
 
  136                 strm.avail_in=(
unsigned int) uncompressed_size;
 
  137                 strm.next_out=(
char*) compressed;
 
  138                 strm.avail_out=(
unsigned int) compressed_size;
 
  139                 if (BZ2_bzCompress(&strm, BZ_RUN) != BZ_RUN_OK)
 
  140                     SG_ERROR(
"Error bzip2-compressing data (BZ_RUN)\n")
 
  145                     ret=BZ2_bzCompress(&strm, BZ_FINISH);
 
  146                     if (ret==BZ_FINISH_OK)
 
  148                     if (ret==BZ_STREAM_END)
 
  151                         SG_ERROR(
"Error bzip2-compressing data (BZ_FINISH)\n")
 
  153                 BZ2_bzCompressEnd(&strm);
 
  154                 compressed_size=(((uint64_t) strm.total_out_hi32) << 32) + strm.total_out_lo32;
 
  161                 lzma_stream strm = LZMA_STREAM_INIT;
 
  162                 initial_buffer_size = lzma_stream_buffer_bound(uncompressed_size);
 
  163                 compressed_size=initial_buffer_size;
 
  164                 compressed=SG_MALLOC(uint8_t, initial_buffer_size);
 
  165                 strm.next_in=uncompressed;
 
  166                 strm.avail_in=(size_t) uncompressed_size;
 
  167                 strm.next_out=compressed;
 
  168                 strm.avail_out=(size_t) compressed_size;
 
  170                 if (lzma_easy_encoder(&strm, level, LZMA_CHECK_CRC32) != LZMA_OK)
 
  171                     SG_ERROR(
"Error initializing lzma compressor\n")
 
  172                 if (lzma_code(&strm, LZMA_RUN) != LZMA_OK)
 
  173                     SG_ERROR(
"Error lzma-compressing data (LZMA_RUN)\n")
 
  178                     ret=lzma_code(&strm, LZMA_FINISH);
 
  181                     if (ret==LZMA_STREAM_END)
 
  184                         SG_ERROR(
"Error lzma-compressing data (LZMA_FINISH)\n")
 
  187                 compressed_size=strm.total_out;
 
  194                 compressed=SG_MALLOC(uint8_t, snappy::MaxCompressedLength((
size_t) uncompressed_size));
 
  195                 size_t output_length;
 
  196                 snappy::RawCompress((
char*) uncompressed, 
size_t(uncompressed_size), (
char*) compressed, &output_length);
 
  197                 compressed_size=(uint64_t) output_length;
 
  202             SG_ERROR(
"Unknown compression type\n")
 
  206         compressed = SG_REALLOC(uint8_t, compressed, initial_buffer_size, compressed_size);
 
  210         uint8_t* uncompressed, uint64_t& uncompressed_size)
 
  212     if (compressed_size==0)
 
  222                 ASSERT(uncompressed_size>=compressed_size)
 
  223                 uncompressed_size=compressed_size;
 
  224                 memcpy(uncompressed, compressed, uncompressed_size);
 
  230                 if (lzo_init() != LZO_E_OK)
 
  231                     SG_ERROR(
"Error initializing LZO Compression\n")
 
  233                 lzo_bytep lzo_wrkmem = (lzo_bytep) lzo_malloc(LZO1X_999_MEM_COMPRESS);
 
  235                     SG_ERROR(
"Error allocating LZO workmem\n")
 
  237                 lzo_uint lzo_size=uncompressed_size;
 
  238                 if (lzo1x_decompress(compressed, compressed_size, uncompressed,
 
  239                             &lzo_size, NULL) != LZO_E_OK)
 
  241                     SG_ERROR(
"Error uncompressing lzo-data\n")
 
  243                 uncompressed_size=lzo_size;
 
  245                 lzo_free(lzo_wrkmem);
 
  252                 uLongf gz_size=uncompressed_size;
 
  253                 if (uncompress(uncompressed, &gz_size, compressed,
 
  254                             compressed_size) != Z_OK)
 
  256                     SG_ERROR(
"Error uncompressing gzip-data\n")
 
  258                 uncompressed_size=gz_size;
 
  269                 if (BZ2_bzDecompressInit(&strm, 0, 0)!=BZ_OK)
 
  270                     SG_ERROR(
"Error initializing bzip2 decompressor\n")
 
  271                 strm.next_in=(
char*) compressed;
 
  272                 strm.avail_in=(
unsigned int) compressed_size;
 
  273                 strm.next_out=(
char*) uncompressed;
 
  274                 strm.avail_out=(
unsigned int) uncompressed_size;
 
  275                 if (BZ2_bzDecompress(&strm) != BZ_STREAM_END || strm.avail_in!=0)
 
  276                     SG_ERROR(
"Error uncompressing bzip2-data\n")
 
  277                 BZ2_bzDecompressEnd(&strm);
 
  284                 lzma_stream strm = LZMA_STREAM_INIT;
 
  285                 strm.next_in=compressed;
 
  286                 strm.avail_in=(size_t) compressed_size;
 
  287                 strm.next_out=uncompressed;
 
  288                 strm.avail_out=(size_t) uncompressed_size;
 
  290                 uint64_t memory_limit=lzma_easy_decoder_memusage(9);
 
  292                 if (lzma_stream_decoder(&strm, memory_limit, 0)!= LZMA_OK)
 
  293                     SG_ERROR(
"Error initializing lzma decompressor\n")
 
  294                 if (lzma_code(&strm, LZMA_RUN) != LZMA_STREAM_END)
 
  295                     SG_ERROR(
"Error decompressing lzma data\n")
 
  303                 size_t uncompressed_length;
 
  304                 if (!snappy::GetUncompressedLength( (
char*) compressed,
 
  305                         (
size_t) compressed_size, &uncompressed_length))
 
  306                     SG_ERROR(
"Error obtaining uncompressed length\n")
 
  308                 ASSERT(uncompressed_length<=uncompressed_size)
 
  309                 uncompressed_size=uncompressed_length;
 
  310                 if (!snappy::RawUncompress((
char*) compressed,
 
  311                             (
size_t) compressed_size,
 
  312                             (
char*) uncompressed))
 
  313                     SG_ERROR(
"Error uncompressing snappy data\n")
 
  319             SG_ERROR(
"Unknown compression type\n")
 
E_COMPRESSION_TYPE compression_type
 
Class SGObject is the base class of all shogun objects. 
 
void compress(uint8_t *uncompressed, uint64_t uncompressed_size, uint8_t *&compressed, uint64_t &compressed_size, int32_t level=1)
 
all of classes and functions are contained in the shogun namespace 
 
void decompress(uint8_t *compressed, uint64_t compressed_size, uint8_t *uncompressed, uint64_t &uncompressed_size)
 
#define SG_UNSTABLE(func,...)