/* Copyright 2017 Google Inc. All Rights Reserved.
Distributed under MIT license .
See file LICENSE for detail or copy at https : //opensource.org/licenses/MIT
*/
/* (Opaque) Shared Dictionary definition and utilities. */
#ifndef BROTLI_COMMON_SHARED_DICTIONARY_H_
#define BROTLI_COMMON_SHARED_DICTIONARY_H_
#include <brotli/port.h>
#include <brotli/types.h>
#if defined (__cplusplus) || defined (c_plusplus)
extern "C" {
#endif
#define SHARED_BROTLI_MIN_DICTIONARY_WORD_LENGTH 4
#define SHARED_BROTLI_MAX_DICTIONARY_WORD_LENGTH 31
#define SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS 64
#define SHARED_BROTLI_MAX_COMPOUND_DICTS 15
/**
* Opaque structure that holds shared dictionary data .
*
* Allocated and initialized with : : BrotliSharedDictionaryCreateInstance .
* Cleaned up and deallocated with : : BrotliSharedDictionaryDestroyInstance .
*/
typedef struct BrotliSharedDictionaryStruct BrotliSharedDictionary;
/**
* Input data type for : : BrotliSharedDictionaryAttach .
*/
typedef enum BrotliSharedDictionaryType {
/** Raw LZ77 prefix dictionary. */
BROTLI_SHARED_DICTIONARY_RAW = 0 ,
/** Serialized shared dictionary.
*
* DO NOT USE : methods accepting this value will fail .
*/
BROTLI_SHARED_DICTIONARY_SERIALIZED = 1
} BrotliSharedDictionaryType;
/**
* Creates an instance of : : BrotliSharedDictionary .
*
* Fresh instance has default word dictionary and transforms
* and no LZ77 prefix dictionary .
*
* @ p alloc_func and @ p free_func @ b MUST be both zero or both non - zero . In the
* case they are both zero , default memory allocators are used . @ p opaque is
* passed to @ p alloc_func and @ p free_func when they are called . @ p free_func
* has to return without doing anything when asked to free a NULL pointer .
*
* @ param alloc_func custom memory allocation function
* @ param free_func custom memory free function
* @ param opaque custom memory manager handle
* @ returns @ c 0 if instance can not be allocated or initialized
* @ returns pointer to initialized : : BrotliSharedDictionary otherwise
*/
BROTLI_COMMON_API BrotliSharedDictionary* BrotliSharedDictionaryCreateInstance(
brotli_alloc_func alloc_func, brotli_free_func free_func, void * opaque);
/**
* Deinitializes and frees : : BrotliSharedDictionary instance .
*
* @ param dict shared dictionary instance to be cleaned up and deallocated
*/
BROTLI_COMMON_API void BrotliSharedDictionaryDestroyInstance(
BrotliSharedDictionary* dict);
/**
* Attaches dictionary to a given instance of : : BrotliSharedDictionary .
*
* Dictionary to be attached is represented in a serialized format as a region
* of memory .
*
* Provided data it partially referenced by a resulting ( compound ) dictionary ,
* and should be kept untouched , while at least one compound dictionary uses it .
* This way memory overhead is kept minimal by the cost of additional resource
* management .
*
* @ param dict dictionary to extend
* @ param type type of dictionary to attach
* @ param data_size size of @ p data
* @ param data serialized dictionary of type @ p type , with at least @ p data_size
* addressable bytes
* @ returns : : BROTLI_TRUE if provided dictionary is successfully attached
* @ returns : : BROTLI_FALSE otherwise
*/
BROTLI_COMMON_API BROTLI_BOOL BrotliSharedDictionaryAttach(
BrotliSharedDictionary* dict, BrotliSharedDictionaryType type,
size_t data_size, const uint8_t data[BROTLI_ARRAY_PARAM(data_size)]);
#if defined (__cplusplus) || defined (c_plusplus)
} /* extern "C" */
#endif
#endif /* BROTLI_COMMON_SHARED_DICTIONARY_H_ */
Messung V0.5 in Prozent C=96 H=98 G=96
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-08-25)
¤
*© Formatika GbR, Deutschland