luajitos

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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 */