Ignore BC size budget on very cheap regions
[hiphop-php.git] / hphp / util / gzip.h
blobced38f0d769b030b185d927de837316e132ce3cb
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 #pragma once
19 #include "hphp/util/string-holder.h"
20 #include <zlib.h>
22 // encoding_mode
23 #define CODING_GZIP 1
24 #define CODING_DEFLATE 2
26 namespace HPHP {
27 ///////////////////////////////////////////////////////////////////////////////
29 // inefficient way of testing whether a file can be compressed to smaller size
30 bool is_compressible_file(const char *filename);
32 char *gzencode(const char *data, int &len, int level, int encoding_mode);
33 char *gzdecode(const char *data, int &len);
35 ///////////////////////////////////////////////////////////////////////////////
37 // Supports producing GZIP- or DEFLATE-compatible output via the encoding_mode
38 // flag.
39 struct GzipCompressor {
40 GzipCompressor(int level, int encoding_mode, bool header);
41 ~GzipCompressor();
43 /**
44 * Compress one chunk a time.
46 StringHolder compress(const char *data, int &len, bool trailer);
48 public:
49 static bool s_useLocalArena;
51 private:
52 int m_encoding;
53 bool m_header;
54 z_stream m_stream;
55 uLong m_crc;
56 bool m_ended;
59 ///////////////////////////////////////////////////////////////////////////////