44 unsigned char* in = &((*src)[0]);
45 unsigned char* out = &((*dst)[0]);
46 unsigned int src_idx = 0;
47 unsigned int dst_idx = 0;
50 stream_data.zalloc = Z_NULL;
51 stream_data.zfree = Z_NULL;
52 stream_data.opaque = Z_NULL;
53 ret = deflateInit(&stream_data, Z_BEST_SPEED);
59 in = &((*src)[src_idx]);
64 stream_data.avail_in =
static_cast<unsigned int>(src->size()) - src_idx;
67 stream_data.next_in = in;
68 src_idx += stream_data.avail_in;
74 stream_data.next_out = out;
75 ret = deflate(&stream_data, flush);
76 DCHECK_NE(ret, Z_STREAM_ERROR);
82 out = &((*dst)[dst_idx]);
83 }
while (stream_data.avail_out == 0);
84 DCHECK_EQ(stream_data.avail_in, 0U);
87 }
while (flush != Z_FINISH);
88 DCHECK_EQ(ret, Z_STREAM_END);
91 (void)deflateEnd(&stream_data);
100 z_stream stream_data;
101 unsigned char* in = &((*src)[0]);
102 unsigned char* out = &((*dst)[0]);
103 unsigned int src_idx = 0;
104 unsigned int dst_idx = 0;
107 std::memset(&stream_data, 0,
sizeof(z_stream));
109 ret = inflateInit(&stream_data);
115 in = &((*src)[src_idx]);
119 stream_data.avail_in =
static_cast<unsigned int>(src->size()) - src_idx;
121 stream_data.next_in = in;
122 src_idx += stream_data.avail_in;
123 if (stream_data.avail_in == 0) {
129 stream_data.next_out = out;
130 ret = inflate(&stream_data, Z_NO_FLUSH);
131 DCHECK_NE(ret, Z_STREAM_ERROR);
137 (void)inflateEnd(&stream_data);
145 out = &((*dst)[dst_idx]);
146 }
while (stream_data.avail_out == 0);
149 }
while (ret != Z_STREAM_END);
152 (void)inflateEnd(&stream_data);
153 dst->resize(dst_idx);
154 return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR;