コード例 #1
0
ファイル: packer_class.c プロジェクト: ysei/mruby-msgpack
static mrb_value Packer_write_array_header(mrb_state* mrb, mrb_value self)
{
  mrb_int n;

  mrb_get_args(mrb, "i", &n);
  PACKER(mrb, self, pk);
  msgpack_packer_write_array_header(mrb, pk, n);
  return self;
}
コード例 #2
0
ファイル: packer.c プロジェクト: Anters/msgpack-ruby
void msgpack_packer_write_array_value(msgpack_packer_t* pk, VALUE v)
{
    /* actual return type of RARRAY_LEN is long */
    unsigned long len = RARRAY_LEN(v);
    if(len > 0xffffffffUL) {
        rb_raise(rb_eArgError, "size of array is too long to pack: %lu bytes should be <= %lu", len, 0xffffffffUL);
    }
    unsigned int len32 = (unsigned int)len;
    msgpack_packer_write_array_header(pk, len32);

    unsigned int i;
    for(i=0; i < len32; ++i) {
        VALUE e = rb_ary_entry(v, i);
        msgpack_packer_write_value(pk, e);
    }
}
コード例 #3
0
ファイル: packer_class.c プロジェクト: CoolCloud/msgpack-ruby
static VALUE Packer_write_array_header(VALUE self, VALUE n)
{
    PACKER(self, pk);
    msgpack_packer_write_array_header(pk, NUM2UINT(n));
    return self;
}