Add logging for comparison behaviors
[hiphop-php.git] / hphp / util / gzip.h
blob552526f068675f4a576186eb8b3ce1a637822147
1 /*
2 +----------------------------------------------------------------------+
3 | HipHop for PHP |
4 +----------------------------------------------------------------------+
5 | Copyright (c) 2010-present Facebook, Inc. (http://www.facebook.com) |
6 +----------------------------------------------------------------------+
7 | This source file is subject to version 3.01 of the PHP license, |
8 | that is bundled with this package in the file LICENSE, and is |
9 | available through the world-wide-web at the following url: |
10 | http://www.php.net/license/3_01.txt |
11 | If you did not receive a copy of the PHP license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@php.net so we can mail you a copy immediately. |
14 +----------------------------------------------------------------------+
17 #ifndef incl_HPHP_GZIP_H_
18 #define incl_HPHP_GZIP_H_
20 #include "hphp/util/string-holder.h"
21 #include <zlib.h>
23 // encoding_mode
24 #define CODING_GZIP 1
25 #define CODING_DEFLATE 2
27 namespace HPHP {
28 ///////////////////////////////////////////////////////////////////////////////
30 // inefficient way of testing whether a file can be compressed to smaller size
31 bool is_compressible_file(const char *filename);
33 char *gzencode(const char *data, int &len, int level, int encoding_mode);
34 char *gzdecode(const char *data, int &len);
36 ///////////////////////////////////////////////////////////////////////////////
38 // Supports producing GZIP- or DEFLATE-compatible output via the encoding_mode
39 // flag.
40 struct GzipCompressor {
41 GzipCompressor(int level, int encoding_mode, bool header);
42 ~GzipCompressor();
44 /**
45 * Compress one chunk a time.
47 StringHolder compress(const char *data, int &len, bool trailer);
49 public:
50 static bool s_useLocalArena;
52 private:
53 int m_encoding;
54 bool m_header;
55 z_stream m_stream;
56 uLong m_crc;
57 bool m_ended;
60 ///////////////////////////////////////////////////////////////////////////////
63 #endif // incl_HPHP_GZIP_H_