Class: Bzip3::BlockProcessor
- Inherits:
-
Object
- Object
- Bzip3::BlockProcessor
- Defined in:
- ext/extbzip3.c
Instance Method Summary collapse
- #blocksize ⇒ Object
- #decode(src, dest, originalsize) ⇒ Object
- #encode(src, dest) ⇒ Object
- #initialize ⇒ Object constructor
Constructor Details
#initialize ⇒ Object
Instance Method Details
#blocksize ⇒ Object
136 137 138 139 140 |
# File 'ext/extbzip3.c', line 136 static VALUE block_processor_blocksize(VALUE self) { return SIZET2NUM(get_block_processor(self)->blocksize); } |
#decode(src, dest, originalsize) ⇒ Object
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
# File 'ext/extbzip3.c', line 142 static VALUE block_processor_decode(VALUE self, VALUE src, VALUE dest, VALUE originalsize) { rb_check_type(src, RUBY_T_STRING); rb_check_type(dest, RUBY_T_STRING); struct block_processor *p = get_block_processor(self); size_t origsize = NUM2SIZET(originalsize); if (origsize > (size_t)p->blocksize) { rb_raise(rb_eRuntimeError, "originalsize too big - %" PRIsVALUE, originalsize); } size_t srclen = RSTRING_LEN(src); size_t destcapa = bz3_bound((uint32_t)origsize); rb_str_modify(dest); rb_str_set_len(dest, 0); (dest, destcapa); memmove(RSTRING_PTR(dest), RSTRING_PTR(src), srclen); int32_t ret = aux_bz3_decode_block_nogvl(p->bzip3, RSTRING_PTR(dest), srclen, NUM2UINT(originalsize)); extbzip3_check_error(ret); rb_str_set_len(dest, ret); return dest; } |
#encode(src, dest) ⇒ Object
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 |
# File 'ext/extbzip3.c', line 170 static VALUE block_processor_encode(VALUE self, VALUE src, VALUE dest) { rb_check_type(src, RUBY_T_STRING); rb_check_type(dest, RUBY_T_STRING); struct block_processor *p = get_block_processor(self); size_t srclen = RSTRING_LEN(src); if (srclen > p->blocksize) { rb_raise(rb_eRuntimeError, "src too big - #<%" PRIsVALUE ":0x%" PRIxVALUE ">", rb_class_of(src), src); } size_t destcapa = bz3_bound((uint32_t)srclen); rb_str_modify(dest); rb_str_set_len(dest, 0); (dest, (uint32_t)destcapa); memmove(RSTRING_PTR(dest), RSTRING_PTR(src), srclen); int32_t ret = aux_bz3_encode_block_nogvl(p->bzip3, RSTRING_PTR(dest), (int32_t)srclen); extbzip3_check_error(ret); rb_str_set_len(dest, ret); return dest; } |