/* * Document-method: Fixnum#to_msgpack * * call-seq: * fixnum.to_msgpack(out = '') -> String * * Serializes the Fixnum into raw bytes. */ static VALUE MessagePack_Fixnum_to_msgpack(int argc, VALUE *argv, VALUE self) { ARG_BUFFER(out, argc, argv); #ifdef JRUBY msgpack_pack_long(out, FIXNUM_P(self) ? FIX2LONG(self) : rb_num2ll(self)); #else msgpack_pack_long(out, FIX2LONG(self)); #endif return out; }
struct CRhoRubyStringOrInt rho_ruby_getstringorint(VALUE val) { struct CRhoRubyStringOrInt oRes; oRes.m_szStr = ""; oRes.m_nInt = 0; if (TYPE(val) == T_FIXNUM || TYPE(val) == T_BIGNUM) oRes.m_nInt = rb_num2ll(val); else { VALUE strVal = rb_funcall(val, rb_intern("to_s"), 0); oRes.m_szStr = RSTRING_PTR(strVal); } return oRes; }
int rho_ruby_unpack_byte_array(VALUE array_value, unsigned char* buf, int max_length) { int size = 0; int i = 0; if (TYPE(array_value) != T_ARRAY) { return -1; } size = RARRAY_LEN(array_value); if (buf == NULL) { return size; } if (size > max_length) { size = max_length; } for (i = 0; i < size; i++) { VALUE item = rb_ary_entry( array_value, i); long n = rb_num2ll(item); buf[i] = (unsigned char)n; } return size; }