compression.h (2247B)
1 #ifndef COMPRESSION_H 2 #define COMPRESSION_H 3 4 #include <stdint.h> 5 #include <lua.h> 6 7 /* Compression result structure */ 8 typedef struct { 9 uint8_t* data; // Compressed/decompressed data 10 uint32_t size; // Size of data 11 int error; // Error code (0 = success) 12 char error_msg[256]; // Error message 13 } compression_result_t; 14 15 /* Compression levels */ 16 typedef enum { 17 COMPRESS_LEVEL_FASTEST = 1, // Fastest compression 18 COMPRESS_LEVEL_FAST = 3, // Fast compression 19 COMPRESS_LEVEL_DEFAULT = 6, // Default balance 20 COMPRESS_LEVEL_BEST = 9 // Best compression 21 } compression_level_t; 22 23 /* Error codes */ 24 #define COMPRESS_OK 0 25 #define COMPRESS_ERROR -1 26 #define COMPRESS_MEM_ERROR -2 27 #define COMPRESS_DATA_ERROR -3 28 #define COMPRESS_BUFFER_ERROR -4 29 30 /* Common compression functions */ 31 compression_result_t* compression_result_create(void); 32 void compression_result_destroy(compression_result_t* result); 33 34 /* Helper functions */ 35 uint32_t calculate_max_compressed_size(uint32_t input_size); 36 uint32_t adler32(uint32_t adler, const uint8_t* buf, uint32_t len); 37 uint32_t crc32_calc(uint32_t crc, const uint8_t* buf, uint32_t len); 38 39 /* Deflate (zlib) functions - compression/Deflate.c */ 40 compression_result_t* deflate_compress(const uint8_t* input, uint32_t input_size, int level); 41 compression_result_t* deflate_decompress(const uint8_t* input, uint32_t input_size); 42 43 /* LZMA functions - compression/LZMA.c */ 44 compression_result_t* lzma_compress(const uint8_t* input, uint32_t input_size, int level); 45 compression_result_t* lzma_decompress(const uint8_t* input, uint32_t input_size); 46 47 /* GZip functions - compression/GZip.c */ 48 compression_result_t* gzip_compress(const uint8_t* input, uint32_t input_size, int level); 49 compression_result_t* gzip_decompress(const uint8_t* input, uint32_t input_size); 50 51 /* Lua bindings */ 52 int lua_deflate_compress(lua_State* L); 53 int lua_deflate_decompress(lua_State* L); 54 int lua_lzma_compress(lua_State* L); 55 int lua_lzma_decompress(lua_State* L); 56 int lua_gzip_compress(lua_State* L); 57 int lua_gzip_decompress(lua_State* L); 58 59 /* Utility Lua bindings */ 60 int lua_adler32(lua_State* L); 61 int lua_crc32(lua_State* L); 62 63 #endif /* COMPRESSION_H */