comparison mupdf-source/thirdparty/brotli/c/common/shared_dictionary_internal.h @ 3:2c135c81b16c

MERGE: upstream PyMuPDF 1.26.4 with MuPDF 1.26.7
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:44:09 +0200
parents b50eed0cc0ef
children
comparison
equal deleted inserted replaced
0:6015a75abc2d 3:2c135c81b16c
1 /* Copyright 2017 Google Inc. All Rights Reserved.
2
3 Distributed under MIT license.
4 See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5 */
6
7 /* (Transparent) Shared Dictionary definition. */
8
9 #ifndef BROTLI_COMMON_SHARED_DICTIONARY_INTERNAL_H_
10 #define BROTLI_COMMON_SHARED_DICTIONARY_INTERNAL_H_
11
12 #include <brotli/shared_dictionary.h>
13 #include <brotli/types.h>
14
15 #include "dictionary.h"
16 #include "transform.h"
17
18 #if defined(__cplusplus) || defined(c_plusplus)
19 extern "C" {
20 #endif
21
22 struct BrotliSharedDictionaryStruct {
23 /* LZ77 prefixes (compound dictionary). */
24 uint32_t num_prefix; /* max SHARED_BROTLI_MAX_COMPOUND_DICTS */
25 size_t prefix_size[SHARED_BROTLI_MAX_COMPOUND_DICTS];
26 const uint8_t* prefix[SHARED_BROTLI_MAX_COMPOUND_DICTS];
27
28 /* If set, the context map is used to select word and transform list from 64
29 contexts, if not set, the context map is not used and only words[0] and
30 transforms[0] are to be used. */
31 BROTLI_BOOL context_based;
32
33 uint8_t context_map[SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS];
34
35 /* Amount of word_list+transform_list combinations. */
36 uint8_t num_dictionaries;
37
38 /* Must use num_dictionaries values. */
39 const BrotliDictionary* words[SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS];
40
41 /* Must use num_dictionaries values. */
42 const BrotliTransforms* transforms[SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS];
43
44 /* Amount of custom word lists. May be 0 if only Brotli's built-in is used */
45 uint8_t num_word_lists;
46
47 /* Contents of the custom words lists. Must be NULL if num_word_lists is 0. */
48 BrotliDictionary* words_instances;
49
50 /* Amount of custom transform lists. May be 0 if only Brotli's built-in is
51 used */
52 uint8_t num_transform_lists;
53
54 /* Contents of the custom transform lists. Must be NULL if num_transform_lists
55 is 0. */
56 BrotliTransforms* transforms_instances;
57
58 /* Concatenated prefix_suffix_maps of the custom transform lists. Must be NULL
59 if num_transform_lists is 0. */
60 uint16_t* prefix_suffix_maps;
61
62 /* Memory management */
63 brotli_alloc_func alloc_func;
64 brotli_free_func free_func;
65 void* memory_manager_opaque;
66 };
67
68 typedef struct BrotliSharedDictionaryStruct BrotliSharedDictionaryInternal;
69 #define BrotliSharedDictionary BrotliSharedDictionaryInternal
70
71 #if defined(__cplusplus) || defined(c_plusplus)
72 } /* extern "C" */
73 #endif
74
75 #endif /* BROTLI_COMMON_SHARED_DICTIONARY_INTERNAL_H_ */