Class: ZstdNative::DCtx
- Inherits:
-
Object
- Object
- ZstdNative::DCtx
- Defined in:
- ext/zstd_native/zstd_native.c
Instance Method Summary collapse
- #decompress(data) ⇒ Object
- #load_dictionary(dict) ⇒ Object
- #ref_ddict(ddict_val) ⇒ Object
- #ref_prefix(prefix) ⇒ Object
- #reset ⇒ Object
- #sizeof ⇒ Object
Instance Method Details
#decompress(data) ⇒ Object
246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 |
# File 'ext/zstd_native/zstd_native.c', line 246 static VALUE dctx_decompress(VALUE self, VALUE data) { Check_Type(data, T_STRING); ZSTD_DCtx *ctx; TypedData_Get_Struct(self, ZSTD_DCtx, &dctx_type, ctx); const char *src = RSTRING_PTR(data); size_t src_size = RSTRING_LEN(data); unsigned long long const dst_capacity = ZSTD_getFrameContentSize(src, src_size); if (dst_capacity == ZSTD_CONTENTSIZE_ERROR) { rb_raise(eZstdError, "Invalid compressed data"); } if (dst_capacity == ZSTD_CONTENTSIZE_UNKNOWN) { rb_raise(eZstdError, "Content size unknown"); } VALUE result = rb_str_buf_new(dst_capacity); char *dst = RSTRING_PTR(result); size_t decompressed_size = ZSTD_decompressDCtx(ctx, dst, dst_capacity, src, src_size); check_zstd_error(decompressed_size, "DCtx decompression failed"); rb_str_set_len(result, decompressed_size); return result; } |
#load_dictionary(dict) ⇒ Object
283 284 285 286 287 288 289 290 291 292 293 294 295 |
# File 'ext/zstd_native/zstd_native.c', line 283 static VALUE dctx_load_dictionary(VALUE self, VALUE dict) { Check_Type(dict, T_STRING); ZSTD_DCtx *ctx; TypedData_Get_Struct(self, ZSTD_DCtx, &dctx_type, ctx); const char *dict_data = RSTRING_PTR(dict); size_t dict_size = RSTRING_LEN(dict); size_t result = ZSTD_DCtx_loadDictionary(ctx, dict_data, dict_size); check_zstd_error(result, "Failed to load dictionary"); return Qnil; } |
#ref_ddict(ddict_val) ⇒ Object
297 298 299 300 301 302 303 304 305 306 307 |
# File 'ext/zstd_native/zstd_native.c', line 297 static VALUE dctx_ref_ddict(VALUE self, VALUE ddict_val) { ZSTD_DCtx *ctx; TypedData_Get_Struct(self, ZSTD_DCtx, &dctx_type, ctx); ZSTD_DDict *ddict; TypedData_Get_Struct(ddict_val, ZSTD_DDict, &ddict_type, ddict); size_t result = ZSTD_DCtx_refDDict(ctx, ddict); check_zstd_error(result, "Failed to reference DDict"); return Qnil; } |
#ref_prefix(prefix) ⇒ Object
309 310 311 312 313 314 315 316 317 318 319 320 321 |
# File 'ext/zstd_native/zstd_native.c', line 309 static VALUE dctx_ref_prefix(VALUE self, VALUE prefix) { Check_Type(prefix, T_STRING); ZSTD_DCtx *ctx; TypedData_Get_Struct(self, ZSTD_DCtx, &dctx_type, ctx); const char *prefix_data = RSTRING_PTR(prefix); size_t prefix_size = RSTRING_LEN(prefix); size_t result = ZSTD_DCtx_refPrefix(ctx, prefix_data, prefix_size); check_zstd_error(result, "Failed to reference prefix"); return Qnil; } |
#reset ⇒ Object
274 275 276 277 278 279 280 281 |
# File 'ext/zstd_native/zstd_native.c', line 274 static VALUE dctx_reset(VALUE self) { ZSTD_DCtx *ctx; TypedData_Get_Struct(self, ZSTD_DCtx, &dctx_type, ctx); size_t result = ZSTD_DCtx_reset(ctx, ZSTD_reset_session_only); check_zstd_error(result, "DCtx reset failed"); return Qnil; } |
#sizeof ⇒ Object
323 324 325 326 327 |
# File 'ext/zstd_native/zstd_native.c', line 323 static VALUE dctx_sizeof(VALUE self) { ZSTD_DCtx *ctx; TypedData_Get_Struct(self, ZSTD_DCtx, &dctx_type, ctx); return SIZET2NUM(ZSTD_sizeof_DCtx(ctx)); } |