Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 35.2k
gh-132983: Reduce the size of _zstdmodule.h#133793
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
Changes from all commits
b158d3fae9e303d2e189f8e5e1ca161b826942be5ba71aa3c9548b6a223216dbb20445File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,132 +1,29 @@ | ||
| #pragma once | ||
| /* | ||
| Low level interface to Meta's zstd library for use in the compression.zstd | ||
| Python module. | ||
| */ | ||
| /* Declarations shared between different parts of the _zstd module*/ | ||
| #include "Python.h" | ||
| #include "zstd.h" | ||
| #include "zdict.h" | ||
| /* Forward declaration of module state */ | ||
| typedef struct _zstd_state _zstd_state; | ||
| /* Forward reference of module def */ | ||
| extern PyModuleDef _zstdmodule; | ||
| /* For clinic type calculations */ | ||
| static inline _zstd_state * | ||
| get_zstd_state_from_type(PyTypeObject *type) | ||
| { | ||
| PyObject *module = PyType_GetModuleByDef(type, &_zstdmodule); | ||
| if (module == NULL) { | ||
| return NULL; | ||
| } | ||
| void *state = PyModule_GetState(module); | ||
| assert(state != NULL); | ||
| return (_zstd_state *)state; | ||
| } | ||
| #ifndef ZSTD_MODULE_H | ||
AA-Turner marked this conversation as resolved.
Uh oh!There was an error while loading. Please reload this page. | ||
| #define ZSTD_MODULE_H | ||
| /* Type specs */ | ||
| extern PyType_Spec zstd_dict_type_spec; | ||
| extern PyType_Spec zstd_compressor_type_spec; | ||
| extern PyType_Spec zstd_decompressor_type_spec; | ||
| struct _zstd_state { | ||
| typedef struct { | ||
| /* Module heap types. */ | ||
| PyTypeObject *ZstdDict_type; | ||
| PyTypeObject *ZstdCompressor_type; | ||
| PyTypeObject *ZstdDecompressor_type; | ||
| PyObject *ZstdError; | ||
| /* enum types set by set_parameter_types. */ | ||
| PyTypeObject *CParameter_type; | ||
| PyTypeObject *DParameter_type; | ||
| }; | ||
| typedef struct { | ||
| PyObject_HEAD | ||
| /* Reusable compress/decompress dictionary, they are created once and | ||
| can be shared by multiple threads concurrently, since its usage is | ||
| read-only. | ||
| c_dicts is a dict, int(compressionLevel):PyCapsule(ZSTD_CDict*) */ | ||
| ZSTD_DDict *d_dict; | ||
| PyObject *c_dicts; | ||
| /* Content of the dictionary, bytes object. */ | ||
| PyObject *dict_content; | ||
| /* Dictionary id */ | ||
| uint32_t dict_id; | ||
| /* __init__ has been called, 0 or 1. */ | ||
| int inited; | ||
| } ZstdDict; | ||
| typedef struct { | ||
| PyObject_HEAD | ||
| /* Compression context */ | ||
| ZSTD_CCtx *cctx; | ||
| /* ZstdDict object in use */ | ||
| PyObject *dict; | ||
| /* Last mode, initialized to ZSTD_e_end */ | ||
| int last_mode; | ||
| /* (nbWorker >= 1) ? 1 : 0 */ | ||
| int use_multithread; | ||
| /* Compression level */ | ||
| int compression_level; | ||
| /* __init__ has been called, 0 or 1. */ | ||
| int inited; | ||
| } ZstdCompressor; | ||
| typedef struct { | ||
| PyObject_HEAD | ||
| /* Decompression context */ | ||
| ZSTD_DCtx *dctx; | ||
| /* ZstdDict object in use */ | ||
| PyObject *dict; | ||
| /* Unconsumed input data */ | ||
| char *input_buffer; | ||
| size_t input_buffer_size; | ||
| size_t in_begin, in_end; | ||
| /* Unused data */ | ||
| PyObject *unused_data; | ||
| /* 0 if decompressor has (or may has) unconsumed input data, 0 or 1. */ | ||
| char needs_input; | ||
| /* For decompress(), 0 or 1. | ||
| 1 when both input and output streams are at a frame edge, means a | ||
| frame is completely decoded and fully flushed, or the decompressor | ||
| just be initialized. */ | ||
| char at_frame_edge; | ||
| /* For ZstdDecompressor, 0 or 1. | ||
| 1 means the end of the first frame has been reached. */ | ||
| char eof; | ||
| /* Used for fast reset above three variables */ | ||
| char _unused_char_for_align; | ||
| /* __init__ has been called, 0 or 1. */ | ||
| int inited; | ||
| } ZstdDecompressor; | ||
| typedef enum { | ||
| TYPE_DECOMPRESSOR, // <D>, ZstdDecompressor class | ||
| TYPE_ENDLESS_DECOMPRESSOR, // <E>, decompress() function | ||
| } decompress_type; | ||
| } _zstd_state; | ||
| typedef enum { | ||
| ERR_DECOMPRESS, | ||
| @@ -149,12 +46,6 @@ typedef enum { | ||
| DICT_TYPE_PREFIX = 2 | ||
| } dictionary_type; | ||
emmatyping marked this conversation as resolved.
Uh oh!There was an error while loading. Please reload this page. | ||
| static inline int | ||
| mt_continue_should_break(ZSTD_inBuffer *in, ZSTD_outBuffer *out) | ||
| { | ||
| return in->size == in->pos && out->size != out->pos; | ||
| } | ||
| /* Format error message and set ZstdError. */ | ||
| extern void | ||
| set_zstd_error(const _zstd_state* const state, | ||
| @@ -164,4 +55,4 @@ extern void | ||
| set_parameter_error(const _zstd_state* const state, int is_compress, | ||
| int key_v, int value_v); | ||
| static const char init_twice_msg[] = "__init__ method is called twice."; | ||
| #endif // !ZSTD_MODULE_H | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -3,9 +3,13 @@ Low level interface to Meta's zstd library for use in the compression.zstd | ||
| Python module. | ||
| */ | ||
| #include "_zstdmodule.h" | ||
| #ifndef ZSTD_BUFFER_H | ||
AA-Turner marked this conversation as resolved.
Uh oh!There was an error while loading. Please reload this page. | ||
| #define ZSTD_BUFFER_H | ||
| #include "pycore_blocks_output_buffer.h" | ||
| #include <zstd.h> // ZSTD_outBuffer | ||
| /* Blocks output buffer wrapper code */ | ||
| /* Initialize the buffer, and grow the buffer. | ||
| @@ -102,3 +106,5 @@ _OutputBuffer_ReachedMaxLength(_BlocksOutputBuffer *buffer, ZSTD_outBuffer *ob) | ||
| return buffer->allocated == buffer->max_length; | ||
| } | ||
| #endif // !ZSTD_BUFFER_H | ||
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.