comparison mupdf-source/thirdparty/brotli/docs/decode.h.3 @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
comparison
equal deleted inserted replaced
1:1d09e1dec1d9 2:b50eed0cc0ef
1 .TH "decode.h" 3 "August 2021" "Brotli" \" -*- nroff -*-
2 .ad l
3 .nh
4 .SH NAME
5 decode.h \- API for Brotli decompression\&.
6
7 .SH SYNOPSIS
8 .br
9 .PP
10 .SS "Macros"
11
12 .in +1c
13 .ti -1c
14 .RI "#define \fBBROTLI_DECODER_ERROR_CODES_LIST\fP(BROTLI_ERROR_CODE, SEPARATOR) "
15 .br
16 .RI "\fITemplate that evaluates items of \fBBrotliDecoderErrorCode\fP\&. \fP"
17 .ti -1c
18 .RI "#define \fBBROTLI_LAST_ERROR_CODE\fP BROTLI_DECODER_ERROR_UNREACHABLE"
19 .br
20 .RI "\fIThe value of the last error code, negative integer\&. \fP"
21 .in -1c
22 .SS "Typedefs"
23
24 .in +1c
25 .ti -1c
26 .RI "typedef void(* \fBbrotli_decoder_metadata_chunk_func\fP) (void *opaque, const uint8_t *data, size_t size)"
27 .br
28 .RI "\fICallback to fire on metadata block chunk becomes available\&. \fP"
29 .ti -1c
30 .RI "typedef void(* \fBbrotli_decoder_metadata_start_func\fP) (void *opaque, size_t size)"
31 .br
32 .RI "\fICallback to fire on metadata block start\&. \fP"
33 .ti -1c
34 .RI "typedef enum \fBBrotliDecoderParameter\fP \fBBrotliDecoderParameter\fP"
35 .br
36 .RI "\fIOptions to be used with \fBBrotliDecoderSetParameter\fP\&. \fP"
37 .ti -1c
38 .RI "typedef struct BrotliDecoderStateStruct \fBBrotliDecoderState\fP"
39 .br
40 .RI "\fIOpaque structure that holds decoder state\&. \fP"
41 .in -1c
42 .SS "Enumerations"
43 .SS "Functions"
44
45 .in +1c
46 .ti -1c
47 .RI "\fBBROTLI_BOOL\fP \fBBrotliDecoderAttachDictionary\fP (\fBBrotliDecoderState\fP *state, BrotliSharedDictionaryType type, size_t data_size, const uint8_t data[data_size])"
48 .br
49 .RI "\fIAdds LZ77 prefix dictionary, adds or replaces built-in static dictionary and transforms\&. \fP"
50 .ti -1c
51 .RI "\fBBrotliDecoderState\fP * \fBBrotliDecoderCreateInstance\fP (\fBbrotli_alloc_func\fP alloc_func, \fBbrotli_free_func\fP free_func, void *opaque)"
52 .br
53 .RI "\fICreates an instance of \fBBrotliDecoderState\fP and initializes it\&. \fP"
54 .ti -1c
55 .RI "\fBBrotliDecoderResult\fP \fBBrotliDecoderDecompress\fP (size_t encoded_size, const uint8_t encoded_buffer[encoded_size], size_t *decoded_size, uint8_t decoded_buffer[*decoded_size])"
56 .br
57 .RI "\fIPerforms one-shot memory-to-memory decompression\&. \fP"
58 .ti -1c
59 .RI "\fBBrotliDecoderResult\fP \fBBrotliDecoderDecompressStream\fP (\fBBrotliDecoderState\fP *state, size_t *available_in, const uint8_t **next_in, size_t *available_out, uint8_t **next_out, size_t *total_out)"
60 .br
61 .RI "\fIDecompresses the input stream to the output stream\&. \fP"
62 .ti -1c
63 .RI "void \fBBrotliDecoderDestroyInstance\fP (\fBBrotliDecoderState\fP *state)"
64 .br
65 .RI "\fIDeinitializes and frees \fBBrotliDecoderState\fP instance\&. \fP"
66 .ti -1c
67 .RI "const char * \fBBrotliDecoderErrorString\fP (\fBBrotliDecoderErrorCode\fP c)"
68 .br
69 .RI "\fIConverts error code to a c-string\&. \fP"
70 .ti -1c
71 .RI "\fBBrotliDecoderErrorCode\fP \fBBrotliDecoderGetErrorCode\fP (const \fBBrotliDecoderState\fP *state)"
72 .br
73 .RI "\fIAcquires a detailed error code\&. \fP"
74 .ti -1c
75 .RI "\fBBROTLI_BOOL\fP \fBBrotliDecoderHasMoreOutput\fP (const \fBBrotliDecoderState\fP *state)"
76 .br
77 .RI "\fIChecks if decoder has more output\&. \fP"
78 .ti -1c
79 .RI "\fBBROTLI_BOOL\fP \fBBrotliDecoderIsFinished\fP (const \fBBrotliDecoderState\fP *state)"
80 .br
81 .RI "\fIChecks if decoder instance reached the final state\&. \fP"
82 .ti -1c
83 .RI "\fBBROTLI_BOOL\fP \fBBrotliDecoderIsUsed\fP (const \fBBrotliDecoderState\fP *state)"
84 .br
85 .RI "\fIChecks if instance has already consumed input\&. \fP"
86 .ti -1c
87 .RI "void \fBBrotliDecoderSetMetadataCallbacks\fP (\fBBrotliDecoderState\fP *state, \fBbrotli_decoder_metadata_start_func\fP start_func, \fBbrotli_decoder_metadata_chunk_func\fP chunk_func, void *opaque)"
88 .br
89 .RI "\fISets callback for receiving metadata blocks\&. \fP"
90 .ti -1c
91 .RI "\fBBROTLI_BOOL\fP \fBBrotliDecoderSetParameter\fP (\fBBrotliDecoderState\fP *state, \fBBrotliDecoderParameter\fP param, uint32_t value)"
92 .br
93 .RI "\fISets the specified parameter to the given decoder instance\&. \fP"
94 .ti -1c
95 .RI "const uint8_t * \fBBrotliDecoderTakeOutput\fP (\fBBrotliDecoderState\fP *state, size_t *size)"
96 .br
97 .RI "\fIAcquires pointer to internal output buffer\&. \fP"
98 .ti -1c
99 .RI "uint32_t \fBBrotliDecoderVersion\fP (void)"
100 .br
101 .RI "\fIGets a decoder library version\&. \fP"
102 .in -1c
103 .SH "Detailed Description"
104 .PP
105 API for Brotli decompression\&.
106
107
108 .SH "Macro Definition Documentation"
109 .PP
110 .SS "#define BROTLI_DECODER_ERROR_CODES_LIST(BROTLI_ERROR_CODE, SEPARATOR)"
111
112 .PP
113 Template that evaluates items of \fBBrotliDecoderErrorCode\fP\&. Example:
114 .PP
115 .nf
116 // Log Brotli error code\&.
117 switch (brotliDecoderErrorCode) {
118 #define CASE_(PREFIX, NAME, CODE) \
119 case BROTLI_DECODER ## PREFIX ## NAME: \
120 LOG(INFO) << "error code:" << #NAME; \
121 break;
122 #define NEWLINE_
123 BROTLI_DECODER_ERROR_CODES_LIST(CASE_, NEWLINE_)
124 #undef CASE_
125 #undef NEWLINE_
126 default: LOG(FATAL) << "unknown brotli error code";
127 }
128
129 .fi
130 .PP
131
132 .SS "#define BROTLI_LAST_ERROR_CODE BROTLI_DECODER_ERROR_UNREACHABLE"
133
134 .PP
135 The value of the last error code, negative integer\&. All other error code values are in the range from \fBBROTLI_LAST_ERROR_CODE\fP to \fC-1\fP\&. There are also 4 other possible non-error codes \fC0\fP \&.\&. \fC3\fP in \fBBrotliDecoderErrorCode\fP enumeration\&.
136 .SH "Typedef Documentation"
137 .PP
138 .SS "typedef void(* brotli_decoder_metadata_chunk_func) (void *opaque, const uint8_t *data, size_t size)"
139
140 .PP
141 Callback to fire on metadata block chunk becomes available\&. This function can be invoked multiple times per metadata block; block should be considered finished when sum of \fCsize\fP matches the announced metadata block size\&. Chunks contents pointed by \fCdata\fP are transient and shouln not be accessed after leaving the callback\&.
142 .PP
143 \fBParameters:\fP
144 .RS 4
145 \fIopaque\fP callback handle
146 .br
147 \fIdata\fP pointer to metadata contents
148 .br
149 \fIsize\fP size of metadata block chunk, at least \fC1\fP
150 .RE
151 .PP
152
153 .SS "typedef void(* brotli_decoder_metadata_start_func) (void *opaque, size_t size)"
154
155 .PP
156 Callback to fire on metadata block start\&. After this callback is fired, if \fCsize\fP is not \fC0\fP, it is followed by \fBbrotli_decoder_metadata_chunk_func\fP as more metadata block contents become accessible\&.
157 .PP
158 \fBParameters:\fP
159 .RS 4
160 \fIopaque\fP callback handle
161 .br
162 \fIsize\fP size of metadata block
163 .RE
164 .PP
165
166 .SS "typedef enum \fBBrotliDecoderParameter\fP \fBBrotliDecoderParameter\fP"
167
168 .PP
169 Options to be used with \fBBrotliDecoderSetParameter\fP\&.
170 .SS "typedef struct BrotliDecoderStateStruct \fBBrotliDecoderState\fP"
171
172 .PP
173 Opaque structure that holds decoder state\&. Allocated and initialized with \fBBrotliDecoderCreateInstance\fP\&. Cleaned up and deallocated with \fBBrotliDecoderDestroyInstance\fP\&.
174 .SH "Enumeration Type Documentation"
175 .PP
176 .SS "enum \fBBrotliDecoderErrorCode\fP"
177
178 .PP
179 Error code for detailed logging / production debugging\&. See \fBBrotliDecoderGetErrorCode\fP and \fBBROTLI_LAST_ERROR_CODE\fP\&.
180 .SS "enum \fBBrotliDecoderParameter\fP"
181
182 .PP
183 Options to be used with \fBBrotliDecoderSetParameter\fP\&.
184 .PP
185 \fBEnumerator\fP
186 .in +1c
187 .TP
188 \fB\fIBROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION \fP\fP
189 Disable 'canny' ring buffer allocation strategy\&. Ring buffer is allocated according to window size, despite the real size of the content\&.
190 .TP
191 \fB\fIBROTLI_DECODER_PARAM_LARGE_WINDOW \fP\fP
192 Flag that determines if 'Large Window Brotli' is used\&.
193 .SS "enum \fBBrotliDecoderResult\fP"
194
195 .PP
196 Result type for \fBBrotliDecoderDecompress\fP and \fBBrotliDecoderDecompressStream\fP functions\&.
197 .PP
198 \fBEnumerator\fP
199 .in +1c
200 .TP
201 \fB\fIBROTLI_DECODER_RESULT_ERROR \fP\fP
202 Decoding error, e\&.g\&. corrupted input or memory allocation problem\&.
203 .TP
204 \fB\fIBROTLI_DECODER_RESULT_SUCCESS \fP\fP
205 Decoding successfully completed\&.
206 .TP
207 \fB\fIBROTLI_DECODER_RESULT_NEEDS_MORE_INPUT \fP\fP
208 Partially done; should be called again with more input\&.
209 .TP
210 \fB\fIBROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT \fP\fP
211 Partially done; should be called again with more output\&.
212 .SH "Function Documentation"
213 .PP
214 .SS "\fBBROTLI_BOOL\fP BrotliDecoderAttachDictionary (\fBBrotliDecoderState\fP * state, BrotliSharedDictionaryType type, size_t data_size, const uint8_t data[data_size])"
215
216 .PP
217 Adds LZ77 prefix dictionary, adds or replaces built-in static dictionary and transforms\&. Attached dictionary ownership is not transferred\&. Data provided to this method should be kept accessible until decoding is finished and decoder instance is destroyed\&.
218 .PP
219 \fBNote:\fP
220 .RS 4
221 Dictionaries can NOT be attached after actual decoding is started\&.
222 .RE
223 .PP
224 \fBParameters:\fP
225 .RS 4
226 \fIstate\fP decoder instance
227 .br
228 \fItype\fP dictionary data format
229 .br
230 \fIdata_size\fP length of memory region pointed by \fCdata\fP
231 .br
232 \fIdata\fP dictionary data in format corresponding to \fCtype\fP
233 .RE
234 .PP
235 \fBReturns:\fP
236 .RS 4
237 \fBBROTLI_FALSE\fP if dictionary is corrupted, or dictionary count limit is reached
238 .PP
239 \fBBROTLI_TRUE\fP if dictionary is accepted / attached
240 .RE
241 .PP
242
243 .SS "\fBBrotliDecoderState\fP* BrotliDecoderCreateInstance (\fBbrotli_alloc_func\fP alloc_func, \fBbrotli_free_func\fP free_func, void * opaque)"
244
245 .PP
246 Creates an instance of \fBBrotliDecoderState\fP and initializes it\&. The instance can be used once for decoding and should then be destroyed with \fBBrotliDecoderDestroyInstance\fP, it cannot be reused for a new decoding session\&.
247 .PP
248 \fCalloc_func\fP and \fCfree_func\fP \fBMUST\fP be both zero or both non-zero\&. In the case they are both zero, default memory allocators are used\&. \fCopaque\fP is passed to \fCalloc_func\fP and \fCfree_func\fP when they are called\&. \fCfree_func\fP has to return without doing anything when asked to free a NULL pointer\&.
249 .PP
250 \fBParameters:\fP
251 .RS 4
252 \fIalloc_func\fP custom memory allocation function
253 .br
254 \fIfree_func\fP custom memory free function
255 .br
256 \fIopaque\fP custom memory manager handle
257 .RE
258 .PP
259 \fBReturns:\fP
260 .RS 4
261 \fC0\fP if instance can not be allocated or initialized
262 .PP
263 pointer to initialized \fBBrotliDecoderState\fP otherwise
264 .RE
265 .PP
266
267 .SS "\fBBrotliDecoderResult\fP BrotliDecoderDecompress (size_t encoded_size, const uint8_t encoded_buffer[encoded_size], size_t * decoded_size, uint8_t decoded_buffer[*decoded_size])"
268
269 .PP
270 Performs one-shot memory-to-memory decompression\&. Decompresses the data in \fCencoded_buffer\fP into \fCdecoded_buffer\fP, and sets \fC*decoded_size\fP to the decompressed length\&.
271 .PP
272 \fBParameters:\fP
273 .RS 4
274 \fIencoded_size\fP size of \fCencoded_buffer\fP
275 .br
276 \fIencoded_buffer\fP compressed data buffer with at least \fCencoded_size\fP addressable bytes
277 .br
278 \fIdecoded_size\fP \fBin:\fP size of \fCdecoded_buffer\fP;
279 .br
280 \fBout:\fP length of decompressed data written to \fCdecoded_buffer\fP
281 .br
282 \fIdecoded_buffer\fP decompressed data destination buffer
283 .RE
284 .PP
285 \fBReturns:\fP
286 .RS 4
287 \fBBROTLI_DECODER_RESULT_ERROR\fP if input is corrupted, memory allocation failed, or \fCdecoded_buffer\fP is not large enough;
288 .PP
289 \fBBROTLI_DECODER_RESULT_SUCCESS\fP otherwise
290 .RE
291 .PP
292
293 .SS "\fBBrotliDecoderResult\fP BrotliDecoderDecompressStream (\fBBrotliDecoderState\fP * state, size_t * available_in, const uint8_t ** next_in, size_t * available_out, uint8_t ** next_out, size_t * total_out)"
294
295 .PP
296 Decompresses the input stream to the output stream\&. The values \fC*available_in\fP and \fC*available_out\fP must specify the number of bytes addressable at \fC*next_in\fP and \fC*next_out\fP respectively\&. When \fC*available_out\fP is \fC0\fP, \fCnext_out\fP is allowed to be \fCNULL\fP\&.
297 .PP
298 After each call, \fC*available_in\fP will be decremented by the amount of input bytes consumed, and the \fC*next_in\fP pointer will be incremented by that amount\&. Similarly, \fC*available_out\fP will be decremented by the amount of output bytes written, and the \fC*next_out\fP pointer will be incremented by that amount\&.
299 .PP
300 \fCtotal_out\fP, if it is not a null-pointer, will be set to the number of bytes decompressed since the last \fCstate\fP initialization\&.
301 .PP
302 \fBNote:\fP
303 .RS 4
304 Input is never overconsumed, so \fCnext_in\fP and \fCavailable_in\fP could be passed to the next consumer after decoding is complete\&.
305 .RE
306 .PP
307 \fBParameters:\fP
308 .RS 4
309 \fIstate\fP decoder instance
310 .br
311 \fIavailable_in\fP \fBin:\fP amount of available input;
312 .br
313 \fBout:\fP amount of unused input
314 .br
315 \fInext_in\fP pointer to the next compressed byte
316 .br
317 \fIavailable_out\fP \fBin:\fP length of output buffer;
318 .br
319 \fBout:\fP remaining size of output buffer
320 .br
321 \fInext_out\fP output buffer cursor; can be \fCNULL\fP if \fCavailable_out\fP is \fC0\fP
322 .br
323 \fItotal_out\fP number of bytes decompressed so far; can be \fCNULL\fP
324 .RE
325 .PP
326 \fBReturns:\fP
327 .RS 4
328 \fBBROTLI_DECODER_RESULT_ERROR\fP if input is corrupted, memory allocation failed, arguments were invalid, etc\&.; use \fBBrotliDecoderGetErrorCode\fP to get detailed error code
329 .PP
330 \fBBROTLI_DECODER_RESULT_NEEDS_MORE_INPUT\fP decoding is blocked until more input data is provided
331 .PP
332 \fBBROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT\fP decoding is blocked until more output space is provided
333 .PP
334 \fBBROTLI_DECODER_RESULT_SUCCESS\fP decoding is finished, no more input might be consumed and no more output will be produced
335 .RE
336 .PP
337
338 .SS "void BrotliDecoderDestroyInstance (\fBBrotliDecoderState\fP * state)"
339
340 .PP
341 Deinitializes and frees \fBBrotliDecoderState\fP instance\&.
342 .PP
343 \fBParameters:\fP
344 .RS 4
345 \fIstate\fP decoder instance to be cleaned up and deallocated
346 .RE
347 .PP
348
349 .SS "\fBBrotliDecoderErrorCode\fP BrotliDecoderGetErrorCode (const \fBBrotliDecoderState\fP * state)"
350
351 .PP
352 Acquires a detailed error code\&. Should be used only after \fBBrotliDecoderDecompressStream\fP returns \fBBROTLI_DECODER_RESULT_ERROR\fP\&.
353 .PP
354 See also \fBBrotliDecoderErrorString\fP
355 .PP
356 \fBParameters:\fP
357 .RS 4
358 \fIstate\fP decoder instance
359 .RE
360 .PP
361 \fBReturns:\fP
362 .RS 4
363 last saved error code
364 .RE
365 .PP
366
367 .SS "\fBBROTLI_BOOL\fP BrotliDecoderHasMoreOutput (const \fBBrotliDecoderState\fP * state)"
368
369 .PP
370 Checks if decoder has more output\&.
371 .PP
372 \fBParameters:\fP
373 .RS 4
374 \fIstate\fP decoder instance
375 .RE
376 .PP
377 \fBReturns:\fP
378 .RS 4
379 \fBBROTLI_TRUE\fP, if decoder has some unconsumed output
380 .PP
381 \fBBROTLI_FALSE\fP otherwise
382 .RE
383 .PP
384
385 .SS "\fBBROTLI_BOOL\fP BrotliDecoderIsFinished (const \fBBrotliDecoderState\fP * state)"
386
387 .PP
388 Checks if decoder instance reached the final state\&.
389 .PP
390 \fBParameters:\fP
391 .RS 4
392 \fIstate\fP decoder instance
393 .RE
394 .PP
395 \fBReturns:\fP
396 .RS 4
397 \fBBROTLI_TRUE\fP if decoder is in a state where it reached the end of the input and produced all of the output
398 .PP
399 \fBBROTLI_FALSE\fP otherwise
400 .RE
401 .PP
402
403 .SS "\fBBROTLI_BOOL\fP BrotliDecoderIsUsed (const \fBBrotliDecoderState\fP * state)"
404
405 .PP
406 Checks if instance has already consumed input\&. Instance that returns \fBBROTLI_FALSE\fP is considered 'fresh' and could be reused\&.
407 .PP
408 \fBParameters:\fP
409 .RS 4
410 \fIstate\fP decoder instance
411 .RE
412 .PP
413 \fBReturns:\fP
414 .RS 4
415 \fBBROTLI_TRUE\fP if decoder has already used some input bytes
416 .PP
417 \fBBROTLI_FALSE\fP otherwise
418 .RE
419 .PP
420
421 .SS "void BrotliDecoderSetMetadataCallbacks (\fBBrotliDecoderState\fP * state, \fBbrotli_decoder_metadata_start_func\fP start_func, \fBbrotli_decoder_metadata_chunk_func\fP chunk_func, void * opaque)"
422
423 .PP
424 Sets callback for receiving metadata blocks\&.
425 .PP
426 \fBParameters:\fP
427 .RS 4
428 \fIstate\fP decoder instance
429 .br
430 \fIstart_func\fP callback on metadata block start
431 .br
432 \fIchunk_func\fP callback on metadata block chunk
433 .br
434 \fIopaque\fP callback handle
435 .RE
436 .PP
437
438 .SS "\fBBROTLI_BOOL\fP BrotliDecoderSetParameter (\fBBrotliDecoderState\fP * state, \fBBrotliDecoderParameter\fP param, uint32_t value)"
439
440 .PP
441 Sets the specified parameter to the given decoder instance\&.
442 .PP
443 \fBParameters:\fP
444 .RS 4
445 \fIstate\fP decoder instance
446 .br
447 \fIparam\fP parameter to set
448 .br
449 \fIvalue\fP new parameter value
450 .RE
451 .PP
452 \fBReturns:\fP
453 .RS 4
454 \fBBROTLI_FALSE\fP if parameter is unrecognized, or value is invalid
455 .PP
456 \fBBROTLI_TRUE\fP if value is accepted
457 .RE
458 .PP
459
460 .SS "const uint8_t* BrotliDecoderTakeOutput (\fBBrotliDecoderState\fP * state, size_t * size)"
461
462 .PP
463 Acquires pointer to internal output buffer\&. This method is used to make language bindings easier and more efficient:
464 .IP "1." 4
465 push data to \fBBrotliDecoderDecompressStream\fP, until \fBBROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT\fP is reported
466 .IP "2." 4
467 use \fBBrotliDecoderTakeOutput\fP to peek bytes and copy to language-specific entity
468 .PP
469 .PP
470 Also this could be useful if there is an output stream that is able to consume all the provided data (e\&.g\&. when data is saved to file system)\&.
471 .PP
472 \fBAttention:\fP
473 .RS 4
474 After every call to \fBBrotliDecoderTakeOutput\fP \fC*size\fP bytes of output are considered consumed for all consecutive calls to the instance methods; returned pointer becomes invalidated as well\&.
475 .RE
476 .PP
477 \fBNote:\fP
478 .RS 4
479 Decoder output is not guaranteed to be contiguous\&. This means that after the size-unrestricted call to \fBBrotliDecoderTakeOutput\fP, immediate next call to \fBBrotliDecoderTakeOutput\fP may return more data\&.
480 .RE
481 .PP
482 \fBParameters:\fP
483 .RS 4
484 \fIstate\fP decoder instance
485 .br
486 \fIsize\fP \fBin:\fP number of bytes caller is ready to take, \fC0\fP if any amount could be handled;
487 .br
488 \fBout:\fP amount of data pointed by returned pointer and considered consumed;
489 .br
490 out value is never greater than in value, unless it is \fC0\fP
491 .RE
492 .PP
493 \fBReturns:\fP
494 .RS 4
495 pointer to output data
496 .RE
497 .PP
498
499 .SS "uint32_t BrotliDecoderVersion (void)"
500
501 .PP
502 Gets a decoder library version\&. Look at BROTLI_MAKE_HEX_VERSION for more information\&.
503 .SH "Author"
504 .PP
505 Generated automatically by Doxygen for Brotli from the source code\&.