Module: Lzmat
- Defined in:
- ext/lzmat.c
Class Method Summary collapse
Class Method Details
.decode(str_in) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'ext/lzmat.c', line 71
static VALUE rb_lzmat_decode(VALUE self, VALUE str_in) {
unsigned char *pbOut, *pbIn;
int cbOut, cbIn;
int err;
VALUE str_out;
pbIn = StringValuePtr(str_in);
cbIn = RSTRING(str_in)->len - sizeof(int);
cbOut = *(int*)pbIn;
str_out = rb_str_new(0, cbOut);
pbOut = StringValuePtr(str_out);
err = lzmat_decode(pbOut, &cbOut, pbIn + sizeof(int), cbIn);
if (err) {
lzmat_raise_error(err);
}
return str_out;
}
|
.encode(str_in) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'ext/lzmat.c', line 47
static VALUE rb_lzmat_encode(VALUE self, VALUE str_in) {
unsigned char *pbOut, *pbIn;
int cbOut, cbIn;
int err;
VALUE str_out;
pbIn = StringValuePtr(str_in);
cbIn = RSTRING(str_in)->len;
cbOut = MAX_LZMAT_ENCODED_SIZE(cbIn);
str_out = rb_str_new(0, cbOut + sizeof(int));
pbOut = StringValuePtr(str_out);
err = lzmat_encode(pbOut + sizeof(int), &cbOut, pbIn, cbIn);
if (err) {
lzmat_raise_error(err);
}
*(int*)pbOut = cbIn;
rb_str_resize(str_out, cbOut + sizeof(int));
return str_out;
}
|