Class: VibeZstd::DDict

Inherits:
Object
  • Object
show all
Defined in:
ext/vibe_zstd/vibe_zstd.c

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dict_data) ⇒ Object

DDict initialize method



71
72
73
74
75
76
77
78
79
80
81
# File 'ext/vibe_zstd/dict.c', line 71

static VALUE
vibe_zstd_ddict_initialize(VALUE self, VALUE dict_data) {
    vibe_zstd_ddict* ddict;
    TypedData_Get_Struct(self, vibe_zstd_ddict, &vibe_zstd_ddict_type, ddict);
    StringValue(dict_data);
    ddict->ddict = ZSTD_createDDict(RSTRING_PTR(dict_data), RSTRING_LEN(dict_data));
    if (!ddict->ddict) {
        rb_raise(rb_eRuntimeError, "Failed to create ZSTD_DDict");
    }
    return self;
}

Class Method Details

.estimate_memory(dict_size) ⇒ Object

DDict.estimate_memory(dict_size)



552
553
554
555
556
557
# File 'ext/vibe_zstd/dict.c', line 552

static VALUE
vibe_zstd_ddict_estimate_memory(VALUE self, VALUE dict_size) {
    size_t size = NUM2SIZET(dict_size);
    size_t estimate = ZSTD_estimateDDictSize(size, ZSTD_dlm_byCopy);
    return SIZET2NUM(estimate);
}

Instance Method Details

#dict_idObject

DDict dict_id method - returns dictionary ID



96
97
98
99
100
101
102
103
104
105
# File 'ext/vibe_zstd/dict.c', line 96

static VALUE
vibe_zstd_ddict_dict_id(VALUE self) {
    vibe_zstd_ddict* ddict;
    TypedData_Get_Struct(self, vibe_zstd_ddict, &vibe_zstd_ddict_type, ddict);
    if (!ddict->ddict) {
        rb_raise(rb_eRuntimeError, "DDict not initialized");
    }
    unsigned dictID = ZSTD_getDictID_fromDDict(ddict->ddict);
    return UINT2NUM(dictID);
}

#sizeObject

DDict size method - returns the size in memory



84
85
86
87
88
89
90
91
92
93
# File 'ext/vibe_zstd/dict.c', line 84

static VALUE
vibe_zstd_ddict_size(VALUE self) {
    vibe_zstd_ddict* ddict;
    TypedData_Get_Struct(self, vibe_zstd_ddict, &vibe_zstd_ddict_type, ddict);
    if (!ddict->ddict) {
        rb_raise(rb_eRuntimeError, "DDict not initialized");
    }
    size_t size = ZSTD_sizeof_DDict(ddict->ddict);
    return SIZET2NUM(size);
}