xref: /aosp_15_r20/external/zlib/google/compression_utils_portable.h (revision 86ee64e75fa5f8bce2c8c356138035642429cd05)
1*86ee64e7SAndroid Build Coastguard Worker /* compression_utils_portable.h
2*86ee64e7SAndroid Build Coastguard Worker  *
3*86ee64e7SAndroid Build Coastguard Worker  * Copyright 2019 The Chromium Authors
4*86ee64e7SAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
5*86ee64e7SAndroid Build Coastguard Worker  * found in the Chromium source repository LICENSE file.
6*86ee64e7SAndroid Build Coastguard Worker  */
7*86ee64e7SAndroid Build Coastguard Worker #ifndef THIRD_PARTY_ZLIB_GOOGLE_COMPRESSION_UTILS_PORTABLE_H_
8*86ee64e7SAndroid Build Coastguard Worker #define THIRD_PARTY_ZLIB_GOOGLE_COMPRESSION_UTILS_PORTABLE_H_
9*86ee64e7SAndroid Build Coastguard Worker 
10*86ee64e7SAndroid Build Coastguard Worker #include <stdint.h>
11*86ee64e7SAndroid Build Coastguard Worker 
12*86ee64e7SAndroid Build Coastguard Worker /* TODO(cavalcantii): remove support for Chromium ever building with a system
13*86ee64e7SAndroid Build Coastguard Worker  * zlib.
14*86ee64e7SAndroid Build Coastguard Worker  */
15*86ee64e7SAndroid Build Coastguard Worker #if defined(USE_SYSTEM_ZLIB)
16*86ee64e7SAndroid Build Coastguard Worker #include <zlib.h>
17*86ee64e7SAndroid Build Coastguard Worker /* AOSP build requires relative paths. */
18*86ee64e7SAndroid Build Coastguard Worker #else
19*86ee64e7SAndroid Build Coastguard Worker #include "zlib.h"
20*86ee64e7SAndroid Build Coastguard Worker #endif
21*86ee64e7SAndroid Build Coastguard Worker 
22*86ee64e7SAndroid Build Coastguard Worker namespace zlib_internal {
23*86ee64e7SAndroid Build Coastguard Worker 
24*86ee64e7SAndroid Build Coastguard Worker enum WrapperType {
25*86ee64e7SAndroid Build Coastguard Worker   ZLIB,
26*86ee64e7SAndroid Build Coastguard Worker   GZIP,
27*86ee64e7SAndroid Build Coastguard Worker   ZRAW,
28*86ee64e7SAndroid Build Coastguard Worker };
29*86ee64e7SAndroid Build Coastguard Worker 
30*86ee64e7SAndroid Build Coastguard Worker uLongf GzipExpectedCompressedSize(uLongf input_size);
31*86ee64e7SAndroid Build Coastguard Worker 
32*86ee64e7SAndroid Build Coastguard Worker uint32_t GetGzipUncompressedSize(const Bytef* compressed_data, size_t length);
33*86ee64e7SAndroid Build Coastguard Worker 
34*86ee64e7SAndroid Build Coastguard Worker int GzipCompressHelper(Bytef* dest,
35*86ee64e7SAndroid Build Coastguard Worker                        uLongf* dest_length,
36*86ee64e7SAndroid Build Coastguard Worker                        const Bytef* source,
37*86ee64e7SAndroid Build Coastguard Worker                        uLong source_length,
38*86ee64e7SAndroid Build Coastguard Worker                        void* (*malloc_fn)(size_t),
39*86ee64e7SAndroid Build Coastguard Worker                        void (*free_fn)(void*));
40*86ee64e7SAndroid Build Coastguard Worker 
41*86ee64e7SAndroid Build Coastguard Worker int CompressHelper(WrapperType wrapper_type,
42*86ee64e7SAndroid Build Coastguard Worker                    Bytef* dest,
43*86ee64e7SAndroid Build Coastguard Worker                    uLongf* dest_length,
44*86ee64e7SAndroid Build Coastguard Worker                    const Bytef* source,
45*86ee64e7SAndroid Build Coastguard Worker                    uLong source_length,
46*86ee64e7SAndroid Build Coastguard Worker                    int compression_level,
47*86ee64e7SAndroid Build Coastguard Worker                    void* (*malloc_fn)(size_t),
48*86ee64e7SAndroid Build Coastguard Worker                    void (*free_fn)(void*));
49*86ee64e7SAndroid Build Coastguard Worker 
50*86ee64e7SAndroid Build Coastguard Worker int GzipUncompressHelper(Bytef* dest,
51*86ee64e7SAndroid Build Coastguard Worker                          uLongf* dest_length,
52*86ee64e7SAndroid Build Coastguard Worker                          const Bytef* source,
53*86ee64e7SAndroid Build Coastguard Worker                          uLong source_length);
54*86ee64e7SAndroid Build Coastguard Worker 
55*86ee64e7SAndroid Build Coastguard Worker int UncompressHelper(WrapperType wrapper_type,
56*86ee64e7SAndroid Build Coastguard Worker                      Bytef* dest,
57*86ee64e7SAndroid Build Coastguard Worker                      uLongf* dest_length,
58*86ee64e7SAndroid Build Coastguard Worker                      const Bytef* source,
59*86ee64e7SAndroid Build Coastguard Worker                      uLong source_length);
60*86ee64e7SAndroid Build Coastguard Worker 
61*86ee64e7SAndroid Build Coastguard Worker }  // namespace zlib_internal
62*86ee64e7SAndroid Build Coastguard Worker 
63*86ee64e7SAndroid Build Coastguard Worker #endif  // THIRD_PARTY_ZLIB_GOOGLE_COMPRESSION_UTILS_PORTABLE_H_
64