module BinUtils::Native

Public Instance Methods

append_ber!(*args) click to toggle source
static VALUE
rb_append_ber(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 0);
    append_var_ber(args.argc, args.argv, args.str);
    return args.str;
}
append_ber_int8!(*args) click to toggle source
static VALUE
rb_append_ber_int8(int argc, VALUE *argv, VALUE self)
{
    append_args2 args;
    check_argc_append_2(argc, argv, &args, 8, 0);
    append_var_ber(1, &args.int0, args.str);
    return append_var_int8(args.argc, args.argv, args.str);
}
append_bersize_ber!(*args) click to toggle source
static VALUE
rb_append_bersize_ber(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    VALUE add_str = rb_str_new(0, 0);
    check_argc_append(argc, argv, &args, 0);
    append_var_ber(args.argc, args.argv, add_str);
    return rb_append_bersize_string(self, args.str, add_str);
}
append_bersize_string!(p1, p2) click to toggle source
static VALUE
rb_append_bersize_string(VALUE self, VALUE str, VALUE add)
{
    if (!RTEST(str)) str = rb_str_new(0, 0);
    StringValue(add);
    append_ber(str, RSTRING_LEN(add));
    rb_str_cat(str, RSTRING_PTR(add), RSTRING_LEN(add));
    RB_GC_GUARD(add);
    return str;
}
append_int16_be!(*args) click to toggle source
static VALUE
rb_append_int16_be(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 16);
    return append_var_int16_be(args.argc, args.argv, args.str);
}
append_int16_le!(*args) click to toggle source
static VALUE
rb_append_int16_le(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 16);
    return append_var_int16_le(args.argc, args.argv, args.str);
}
append_int24_be!(*args) click to toggle source
static VALUE
rb_append_int24_be(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 24);
    return append_var_int24_be(args.argc, args.argv, args.str);
}
append_int24_le!(*args) click to toggle source
static VALUE
rb_append_int24_le(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 24);
    return append_var_int24_le(args.argc, args.argv, args.str);
}
append_int32_be!(*args) click to toggle source
static VALUE
rb_append_int32_be(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 32);
    return append_var_int32_be(args.argc, args.argv, args.str);
}
append_int32_le!(*args) click to toggle source
static VALUE
rb_append_int32_le(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 32);
    return append_var_int32_le(args.argc, args.argv, args.str);
}
append_int32size_ber_be!(*args) click to toggle source
static VALUE
rb_append_int32size_ber_be(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    long ss, bs;
    uint8_t *ptr;
    check_argc_append(argc, argv, &args, 0);
    rb_str_cat(args.str, zeros, 4);
    ss = RSTRING_LEN(args.str) - 4;
    bs = append_var_ber(args.argc, args.argv, args.str);
    ptr = ((uint8_t*)RSTRING_PTR(args.str)) + ss;
    ptr[3] = bs & 255;
    ptr[2] = (bs >> 8) & 255;
    ptr[1] = (bs >> 16) & 255;
    ptr[0] = (bs >> 24) & 255;
    return args.str;
}
append_int32size_ber_le!(*args) click to toggle source
static VALUE
rb_append_int32size_ber_le(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    long ss, bs;
    uint8_t *ptr;
    check_argc_append(argc, argv, &args, 0);
    rb_str_cat(args.str, zeros, 4);
    ss = RSTRING_LEN(args.str) - 4;
    bs = append_var_ber(args.argc, args.argv, args.str);
    ptr = ((uint8_t*)RSTRING_PTR(args.str)) + ss;
    ptr[0] = bs & 255;
    ptr[1] = (bs >> 8) & 255;
    ptr[2] = (bs >> 16) & 255;
    ptr[3] = (bs >> 24) & 255;
    return args.str;
}
append_int32size_string_be!(p1, p2) click to toggle source
static VALUE
rb_append_int32size_string_be(VALUE self, VALUE str, VALUE add)
{
    if (!RTEST(str)) str = rb_str_new(0, 0);
    StringValue(add);
    append_int32_be(str, RSTRING_LEN(add));
    rb_str_cat(str, RSTRING_PTR(add), RSTRING_LEN(add));
    RB_GC_GUARD(add);
    return str;
}
append_int32size_string_le!(p1, p2) click to toggle source
static VALUE
rb_append_int32size_string_le(VALUE self, VALUE str, VALUE add)
{
    if (!RTEST(str)) str = rb_str_new(0, 0);
    StringValue(add);
    append_int32_le(str, RSTRING_LEN(add));
    rb_str_cat(str, RSTRING_PTR(add), RSTRING_LEN(add));
    RB_GC_GUARD(add);
    return str;
}
append_int40_be!(*args) click to toggle source
static VALUE
rb_append_int40_be(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 40);
    return append_var_int40_be(args.argc, args.argv, args.str);
}
append_int40_le!(*args) click to toggle source
static VALUE
rb_append_int40_le(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 40);
    return append_var_int40_le(args.argc, args.argv, args.str);
}
append_int48_be!(*args) click to toggle source
static VALUE
rb_append_int48_be(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 48);
    return append_var_int48_be(args.argc, args.argv, args.str);
}
append_int48_le!(*args) click to toggle source
static VALUE
rb_append_int48_le(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 48);
    return append_var_int48_le(args.argc, args.argv, args.str);
}
append_int56_be!(*args) click to toggle source
static VALUE
rb_append_int56_be(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 56);
    return append_var_int56_be(args.argc, args.argv, args.str);
}
append_int56_le!(*args) click to toggle source
static VALUE
rb_append_int56_le(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 56);
    return append_var_int56_le(args.argc, args.argv, args.str);
}
append_int64_be!(*args) click to toggle source
static VALUE
rb_append_int64_be(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 64);
    return append_var_int64_be(args.argc, args.argv, args.str);
}
append_int64_le!(*args) click to toggle source
static VALUE
rb_append_int64_le(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 64);
    return append_var_int64_le(args.argc, args.argv, args.str);
}
append_int8!(*args) click to toggle source
static VALUE
rb_append_int8(int argc, VALUE* argv, VALUE self)
{
    append_args args;
    check_argc_append(argc, argv, &args, 8);
    return append_var_int8(args.argc, args.argv, args.str);
}
append_int8_ber!(*args) click to toggle source

APPEND COMPLEX

static VALUE
rb_append_int8_ber(int argc, VALUE *argv, VALUE self)
{
    append_args2 args;
    check_argc_append_2(argc, argv, &args, 8, 0);
    append_var_int8(1, &args.int0, args.str);
    append_var_ber(args.argc, args.argv, args.str);
    return args.str;
}
append_string!(p1, p2) click to toggle source

APPEND STRING

static VALUE
rb_append_string(VALUE self, VALUE str, VALUE add)
{
    if (!RTEST(str)) str = rb_str_new(0, 0);
    StringValue(add);
    rb_str_cat(str, RSTRING_PTR(add), RSTRING_LEN(add));
    RB_GC_GUARD(add);
    return str;
}
get_ber(*args) click to toggle source
static VALUE
rb_get_ber(int argc, VALUE *argv, VALUE self)
{
    return U642NUM(get_ber(argv[0], check_argc(argc, argv)));
}
get_int16_be(*args) click to toggle source
static VALUE
rb_get_int16_be(int argc, VALUE *argv, VALUE self)
{
    return INT2FIX(get_int16_be(argv[0], check_argc(argc, argv)));
}
get_int16_le(*args) click to toggle source
static VALUE
rb_get_int16_le(int argc, VALUE *argv, VALUE self)
{
    return INT2FIX(get_int16_le(argv[0], check_argc(argc, argv)));
}
get_int24_be(*args) click to toggle source
static VALUE
rb_get_int24_be(int argc, VALUE *argv, VALUE self)
{
    return INT2FIX(get_int24_be(argv[0], check_argc(argc, argv)));
}
get_int24_le(*args) click to toggle source
static VALUE
rb_get_int24_le(int argc, VALUE *argv, VALUE self)
{
    return INT2FIX(get_int24_le(argv[0], check_argc(argc, argv)));
}
get_int32_be(*args) click to toggle source
static VALUE
rb_get_int32_be(int argc, VALUE *argv, VALUE self)
{
    return UINT2NUM(get_int32_be(argv[0], check_argc(argc, argv)));
}
get_int32_le(*args) click to toggle source
static VALUE
rb_get_int32_le(int argc, VALUE *argv, VALUE self)
{
    return UINT2NUM(get_int32_le(argv[0], check_argc(argc, argv)));
}
get_int40_be(*args) click to toggle source
static VALUE
rb_get_int40_be(int argc, VALUE *argv, VALUE self)
{
    return I642NUM(get_int40_be(argv[0], check_argc(argc, argv)));
}
get_int40_le(*args) click to toggle source
static VALUE
rb_get_int40_le(int argc, VALUE *argv, VALUE self)
{
    return I642NUM(get_int40_le(argv[0], check_argc(argc, argv)));
}
get_int48_be(*args) click to toggle source
static VALUE
rb_get_int48_be(int argc, VALUE *argv, VALUE self)
{
    return I642NUM(get_int48_be(argv[0], check_argc(argc, argv)));
}
get_int48_le(*args) click to toggle source
static VALUE
rb_get_int48_le(int argc, VALUE *argv, VALUE self)
{
    return I642NUM(get_int48_le(argv[0], check_argc(argc, argv)));
}
get_int56_be(*args) click to toggle source
static VALUE
rb_get_int56_be(int argc, VALUE *argv, VALUE self)
{
    return I642NUM(get_int56_be(argv[0], check_argc(argc, argv)));
}
get_int56_le(*args) click to toggle source
static VALUE
rb_get_int56_le(int argc, VALUE *argv, VALUE self)
{
    return I642NUM(get_int56_le(argv[0], check_argc(argc, argv)));
}
get_int64_be(*args) click to toggle source
static VALUE
rb_get_int64_be(int argc, VALUE *argv, VALUE self)
{
    return U642NUM(get_int64_be(argv[0], check_argc(argc, argv)));
}
get_int64_le(*args) click to toggle source
static VALUE
rb_get_int64_le(int argc, VALUE *argv, VALUE self)
{
    return U642NUM(get_int64_le(argv[0], check_argc(argc, argv)));
}
get_int8(*args) click to toggle source
static VALUE
rb_get_int8(int argc, VALUE *argv, VALUE self)
{
    return INT2FIX(get_int8(argv[0], check_argc(argc, argv)));
}
get_sint16_be(*args) click to toggle source
static VALUE
rb_get_sint16_be(int argc, VALUE *argv, VALUE self)
{
    return INT2FIX(get_sint16_be(argv[0], check_argc(argc, argv)));
}
get_sint16_le(*args) click to toggle source
static VALUE
rb_get_sint16_le(int argc, VALUE *argv, VALUE self)
{
    return INT2FIX(get_sint16_le(argv[0], check_argc(argc, argv)));
}
get_sint24_be(*args) click to toggle source
static VALUE
rb_get_sint24_be(int argc, VALUE *argv, VALUE self)
{
    return INT2FIX(get_sint24_be(argv[0], check_argc(argc, argv)));
}
get_sint24_le(*args) click to toggle source
static VALUE
rb_get_sint24_le(int argc, VALUE *argv, VALUE self)
{
    return INT2FIX(get_sint24_le(argv[0], check_argc(argc, argv)));
}
get_sint32_be(*args) click to toggle source
static VALUE
rb_get_sint32_be(int argc, VALUE *argv, VALUE self)
{
    return INT2NUM(get_sint32_be(argv[0], check_argc(argc, argv)));
}
get_sint32_le(*args) click to toggle source
static VALUE
rb_get_sint32_le(int argc, VALUE *argv, VALUE self)
{
    return INT2NUM(get_sint32_le(argv[0], check_argc(argc, argv)));
}
get_sint40_be(*args) click to toggle source
static VALUE
rb_get_sint40_be(int argc, VALUE *argv, VALUE self)
{
    return I642NUM(get_sint40_be(argv[0], check_argc(argc, argv)));
}
get_sint40_le(*args) click to toggle source
static VALUE
rb_get_sint40_le(int argc, VALUE *argv, VALUE self)
{
    return I642NUM(get_sint40_le(argv[0], check_argc(argc, argv)));
}
get_sint48_be(*args) click to toggle source
static VALUE
rb_get_sint48_be(int argc, VALUE *argv, VALUE self)
{
    return I642NUM(get_sint48_be(argv[0], check_argc(argc, argv)));
}
get_sint48_le(*args) click to toggle source
static VALUE
rb_get_sint48_le(int argc, VALUE *argv, VALUE self)
{
    return I642NUM(get_sint48_le(argv[0], check_argc(argc, argv)));
}
get_sint56_be(*args) click to toggle source
static VALUE
rb_get_sint56_be(int argc, VALUE *argv, VALUE self)
{
    return I642NUM(get_sint56_be(argv[0], check_argc(argc, argv)));
}
get_sint56_le(*args) click to toggle source
static VALUE
rb_get_sint56_le(int argc, VALUE *argv, VALUE self)
{
    return I642NUM(get_sint56_le(argv[0], check_argc(argc, argv)));
}
get_sint64_be(*args) click to toggle source
static VALUE
rb_get_sint64_be(int argc, VALUE *argv, VALUE self)
{
    return I642NUM(get_sint64_be(argv[0], check_argc(argc, argv)));
}
get_sint64_le(*args) click to toggle source
static VALUE
rb_get_sint64_le(int argc, VALUE *argv, VALUE self)
{
    return I642NUM(get_sint64_le(argv[0], check_argc(argc, argv)));
}
get_sint8(*args) click to toggle source
static VALUE
rb_get_sint8(int argc, VALUE *argv, VALUE self)
{
    return INT2FIX(get_sint8(argv[0], check_argc(argc, argv)));
}
slice_ber!(p1) click to toggle source
static VALUE
rb_slice_ber(VALUE self, VALUE rstr)
{
    long i = 0;
    int64_t res = slice_ber(rstr, &i);
    rb_str_drop_bytes(rstr, i+1);
    return U642NUM(res);
}
slice_int16_be!(p1) click to toggle source
static VALUE
rb_slice_int16_be(VALUE self, VALUE rstr)
{
    uint32_t res = get_int16_be(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 2);
    return INT2FIX(res);
}
slice_int16_le!(p1) click to toggle source
static VALUE
rb_slice_int16_le(VALUE self, VALUE rstr)
{
    uint32_t res = get_int16_le(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 2);
    return INT2FIX(res);
}
slice_int24_be!(p1) click to toggle source
static VALUE
rb_slice_int24_be(VALUE self, VALUE rstr)
{
    uint32_t res = get_int24_be(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 3);
    return INT2FIX(res);
}
slice_int24_le!(p1) click to toggle source
static VALUE
rb_slice_int24_le(VALUE self, VALUE rstr)
{
    uint32_t res = get_int24_le(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 3);
    return INT2FIX(res);
}
slice_int32_be!(p1) click to toggle source
static VALUE
rb_slice_int32_be(VALUE self, VALUE rstr)
{
    uint32_t res = get_int32_be(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 4);
    return UINT2NUM(res);
}
slice_int32_le!(p1) click to toggle source
static VALUE
rb_slice_int32_le(VALUE self, VALUE rstr)
{
    uint32_t res = get_int32_le(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 4);
    return UINT2NUM(res);
}
slice_int40_be!(p1) click to toggle source
static VALUE
rb_slice_int40_be(VALUE self, VALUE rstr)
{
    uint64_t res = get_int40_be(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 5);
    return I642NUM(res);
}
slice_int40_le!(p1) click to toggle source
static VALUE
rb_slice_int40_le(VALUE self, VALUE rstr)
{
    uint64_t res = get_int40_le(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 5);
    return I642NUM(res);
}
slice_int48_be!(p1) click to toggle source
static VALUE
rb_slice_int48_be(VALUE self, VALUE rstr)
{
    uint64_t res = get_int48_be(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 6);
    return I642NUM(res);
}
slice_int48_le!(p1) click to toggle source
static VALUE
rb_slice_int48_le(VALUE self, VALUE rstr)
{
    uint64_t res = get_int48_le(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 6);
    return I642NUM(res);
}
slice_int56_be!(p1) click to toggle source
static VALUE
rb_slice_int56_be(VALUE self, VALUE rstr)
{
    uint64_t res = get_int56_be(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 7);
    return I642NUM(res);
}
slice_int56_le!(p1) click to toggle source
static VALUE
rb_slice_int56_le(VALUE self, VALUE rstr)
{
    uint64_t res = get_int56_le(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 7);
    return I642NUM(res);
}
slice_int64_be!(p1) click to toggle source
static VALUE
rb_slice_int64_be(VALUE self, VALUE rstr)
{
    uint64_t res = get_int64_be(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 8);
    return U642NUM(res);
}
slice_int64_le!(p1) click to toggle source
static VALUE
rb_slice_int64_le(VALUE self, VALUE rstr)
{
    uint64_t res = get_int64_le(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 8);
    return U642NUM(res);
}
slice_int8!(p1) click to toggle source
static VALUE
rb_slice_int8(VALUE self, VALUE rstr)
{
    uint32_t res = get_int8(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 1);
    return INT2FIX(res);
}
slice_sint16_be!(p1) click to toggle source
static VALUE
rb_slice_sint16_be(VALUE self, VALUE rstr)
{
    int32_t res = get_sint16_be(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 2);
    return INT2FIX(res);
}
slice_sint16_le!(p1) click to toggle source
static VALUE
rb_slice_sint16_le(VALUE self, VALUE rstr)
{
    int32_t res = get_sint16_le(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 2);
    return INT2FIX(res);
}
slice_sint24_be!(p1) click to toggle source
static VALUE
rb_slice_sint24_be(VALUE self, VALUE rstr)
{
    int32_t res = get_sint24_be(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 3);
    return INT2FIX(res);
}
slice_sint24_le!(p1) click to toggle source
static VALUE
rb_slice_sint24_le(VALUE self, VALUE rstr)
{
    int32_t res = get_sint24_le(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 3);
    return INT2FIX(res);
}
slice_sint32_be!(p1) click to toggle source
static VALUE
rb_slice_sint32_be(VALUE self, VALUE rstr)
{
    int32_t res = get_sint32_be(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 4);
    return INT2NUM(res);
}
slice_sint32_le!(p1) click to toggle source
static VALUE
rb_slice_sint32_le(VALUE self, VALUE rstr)
{
    int32_t res = get_sint32_le(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 4);
    return INT2NUM(res);
}
slice_sint40_be!(p1) click to toggle source
static VALUE
rb_slice_sint40_be(VALUE self, VALUE rstr)
{
    uint64_t res = get_sint40_be(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 5);
    return I642NUM(res);
}
slice_sint40_le!(p1) click to toggle source
static VALUE
rb_slice_sint40_le(VALUE self, VALUE rstr)
{
    uint64_t res = get_sint40_le(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 5);
    return I642NUM(res);
}
slice_sint48_be!(p1) click to toggle source
static VALUE
rb_slice_sint48_be(VALUE self, VALUE rstr)
{
    uint64_t res = get_sint48_be(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 6);
    return I642NUM(res);
}
slice_sint48_le!(p1) click to toggle source
static VALUE
rb_slice_sint48_le(VALUE self, VALUE rstr)
{
    uint64_t res = get_sint48_le(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 6);
    return I642NUM(res);
}
slice_sint56_be!(p1) click to toggle source
static VALUE
rb_slice_sint56_be(VALUE self, VALUE rstr)
{
    uint64_t res = get_sint56_be(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 7);
    return I642NUM(res);
}
slice_sint56_le!(p1) click to toggle source
static VALUE
rb_slice_sint56_le(VALUE self, VALUE rstr)
{
    uint64_t res = get_sint56_le(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 7);
    return I642NUM(res);
}
slice_sint64_be!(p1) click to toggle source
static VALUE
rb_slice_sint64_be(VALUE self, VALUE rstr)
{
    uint64_t res = get_sint64_be(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 8);
    return I642NUM(res);
}
slice_sint64_le!(p1) click to toggle source
static VALUE
rb_slice_sint64_le(VALUE self, VALUE rstr)
{
    uint64_t res = get_sint64_le(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 8);
    return I642NUM(res);
}
slice_sint8!(p1) click to toggle source
static VALUE
rb_slice_sint8(VALUE self, VALUE rstr)
{
    int32_t res = get_sint8(rstr, INT2FIX(0));
    rb_str_drop_bytes(rstr, 1);
    return INT2FIX(res);
}