Class: ArrowFormat::VariableSizeBinaryArray

Inherits:
Array
  • Object
show all
Defined in:
lib/arrow-format/array.rb

Instance Attribute Summary

Attributes inherited from Array

#offset, #size, #type, #validity_buffer

Instance Method Summary collapse

Methods inherited from Array

#empty?, #n_nulls, #null?, #slice, #valid?

Constructor Details

#initialize(size, validity_buffer, offsets_buffer, values_buffer) ⇒ VariableSizeBinaryArray

Returns a new instance of VariableSizeBinaryArray.



394
395
396
397
398
# File 'lib/arrow-format/array.rb', line 394

def initialize(size, validity_buffer, offsets_buffer, values_buffer)
  super(self.class.type, size, validity_buffer)
  @offsets_buffer = offsets_buffer
  @values_buffer = values_buffer
end

Instance Method Details

#each_buffer {|slice_bitmap_buffer(:validity, @validity_buffer)| ... } ⇒ Object

Yields:



400
401
402
403
404
405
406
407
408
409
410
411
412
413
# File 'lib/arrow-format/array.rb', line 400

def each_buffer
  return to_enum(__method__) unless block_given?

  yield(slice_bitmap_buffer(:validity, @validity_buffer))
  yield(slice_offsets_buffer(:offsets,
                             @offsets_buffer,
                             @type.offset_buffer_type))
  sliced_values_buffer = slice_buffer(:values, @values_buffer) do
    first_offset = @offsets_buffer.get_value(@type.offset_buffer_type,
                                             offset_size * @offset)
    @values_buffer.slice(first_offset)
  end
  yield(sliced_values_buffer)
end

#offsetsObject



415
416
417
418
419
420
421
# File 'lib/arrow-format/array.rb', line 415

def offsets
  return [0] if empty?

  @offsets_buffer.
    each(@type.offset_buffer_type, offset_size * @offset, @size + 1).
    collect {|_, offset| offset}
end

#to_aObject



423
424
425
426
427
428
429
430
431
# File 'lib/arrow-format/array.rb', line 423

def to_a
  return [] if empty?

  values = offsets.each_cons(2).collect do |offset, next_offset|
    length = next_offset - offset
    @values_buffer.get_string(offset, length, @type.encoding)
  end
  apply_validity(values)
end