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); }