Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →
instance method
IO::Buffer#set_values
set_values(buffer_types, offset, values) → offset
io_buffer.c
View on GitHub ↗
static VALUE
io_buffer_set_values(VALUE self, VALUE buffer_types, VALUE _offset, VALUE values)
{
struct rb_io_buffer_view *buffer = get_io_buffer_view_for_writing(self);
if (!RB_TYPE_P(buffer_types, T_ARRAY)) {
rb_raise(rb_eArgError, "Argument buffer_types should be an array!");
}
size_t offset = io_buffer_extract_offset(_offset);
if (!RB_TYPE_P(values, T_ARRAY)) {
rb_raise(rb_eArgError, "Argument values should be an array!");
}
if (RARRAY_LEN(buffer_types) != RARRAY_LEN(values)) {
rb_raise(rb_eArgError, "Argument buffer_types and values should have the same length!");
}
for (rb_len_t i = 0; i < RARRAY_LEN(buffer_types); i++) {
VALUE type = rb_ary_entry(buffer_types, i);
VALUE value = rb_ary_entry(values, i);
rb_io_buffer_set_value(buffer, type, &offset, value);
}
return SIZET2NUM(offset);
}
Write values of buffer_types at offset to the buffer. buffer_types should be an array of symbols as described in get_value. values should be an array of values to write. Returns the offset just after the last written value.
Example
buffer = IO::Buffer.new(8) buffer.set_values([:U8, :U16], 0, [1, 2]) # => 3 buffer # => # #<IO::Buffer 0x696f717561746978+8 INTERNAL> # 0x00000000 01 00 02 00 00 00 00 00 ........