Module: LZ4Native::LZ4HC

Defined in:
ext/lz4_native/lz4_native.c

Constant Summary collapse

CLEVEL_MIN =
INT2NUM(LZ4HC_CLEVEL_MIN)
CLEVEL_DEFAULT =
INT2NUM(LZ4HC_CLEVEL_DEFAULT)
CLEVEL_MAX =
INT2NUM(LZ4HC_CLEVEL_MAX)

Class Method Summary collapse

Class Method Details

.compress(source, compression_level = 9) ⇒ Object

Compresses using high-compression mode. compression_level: 1-12 (default 9), higher = better compression, slower.



181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
# File 'ext/lz4_native/lz4_native.c', line 181

static VALUE
lz4hc_compress_wrapper(int argc, VALUE *argv, VALUE self)
{
    VALUE source, level;
    rb_scan_args(argc, argv, "11", &source, &level);

    Check_Type(source, T_STRING);
    int compression_level = NIL_P(level) ? LZ4HC_CLEVEL_DEFAULT : NUM2INT(level);

    if (compression_level < LZ4HC_CLEVEL_MIN) {
        compression_level = LZ4HC_CLEVEL_MIN;
    } else if (compression_level > LZ4HC_CLEVEL_MAX) {
        compression_level = LZ4HC_CLEVEL_MAX;
    }

    const char* src = RSTRING_PTR(source);
    int src_size = (int)RSTRING_LEN(source);

    int max_dst_size = LZ4_compressBound(src_size);
    VALUE result = rb_str_buf_new(max_dst_size);
    char* dst = RSTRING_PTR(result);

    int compressed_size = LZ4_compress_HC(src, dst, src_size, max_dst_size, compression_level);

    if (compressed_size <= 0) {
        rb_raise(eLZ4CompressionError, "HC compression failed");
    }

    rb_str_set_len(result, compressed_size);
    return result;
}

.sizeof_stateInteger

Returns the size needed for HC compression state.

Returns:

  • (Integer)


219
220
221
222
223
# File 'ext/lz4_native/lz4_native.c', line 219

static VALUE
lz4hc_sizeof_state_wrapper(VALUE self)
{
    return INT2NUM(LZ4_sizeofStateHC());
}