class Babeltrace2::BTValue::Array
Constants
- AppendElementStatus
- SetElementByIndexStatus
Public Class Methods
new(handle = nil, retain: true, auto_release: true)
click to toggle source
Calls superclass method
Babeltrace2::BTSharedObject::new
# File lib/babeltrace2/value.rb, line 494 def initialize(handle = nil, retain: true, auto_release: true) if handle super(handle, retain: retain, auto_release: auto_release) else handle = Babeltrace2.bt_value_array_create() raise Babeltrace2.process_error if handle.null? super(handle) end end
Public Instance Methods
[]=(index, value)
click to toggle source
# File lib/babeltrace2/value.rb, line 559 def []=(index, value) set_element_by_index(index, value) value end
append_element(value)
click to toggle source
# File lib/babeltrace2/value.rb, line 504 def append_element(value) res = case value when BTValue Babeltrace2.bt_value_array_append_element(@handle, value) when nil Babeltrace2.bt_value_array_append_element(@handle, Babeltrace2.bt_value_null) when true Babeltrace2.bt_value_array_append_bool_element(@handle, BT_TRUE) when false Babeltrace2.bt_value_array_append_bool_element(@handle, BT_FALSE) when ::Integer if value > (1<<63) - 1 Babeltrace2.bt_value_array_append_unsigned_integer_element(@handle, value) else Babeltrace2.bt_value_array_append_signed_integer_element(@handle, value) end when ::Float Babeltrace2.bt_value_array_append_real_element(@handle, value) when ::String Babeltrace2.bt_value_array_append_string_element(@handle, value) when ::Array ptr = FFI::MemoryPointer.new(:pointer) res = Babeltrace2.bt_value_array_append_empty_array_element(@handle, ptr) raise Babeltrace2.process_error(res) if res != :BT_VALUE_ARRAY_APPEND_ELEMENT_STATUS_OK arr = BTValueArray.new(BTValueArrayHandle.new(ptr.read_pointer), retain: false, auto_release: false) value.each { |v| arr.append_element(v) } :BT_VALUE_ARRAY_APPEND_ELEMENT_STATUS_OK when ::Hash ptr = FFI::MemoryPointer.new(:pointer) res = Babeltrace2.bt_value_array_append_empty_map_element(@handle, ptr) raise Babeltrace2.process_error(res) if res != :BT_VALUE_ARRAY_APPEND_ELEMENT_STATUS_OK map = BTValueMap.new(BTValueMapHandle.new(ptr.read_pointer), retain: false, auto_release: false) value.each { |k, v| map.insert_entry(k, v) } :BT_VALUE_ARRAY_APPEND_ELEMENT_STATUS_OK else raise TypeError, "unsupported value type" end raise Babeltrace2.process_error(res) if res != :BT_VALUE_ARRAY_APPEND_ELEMENT_STATUS_OK self end
Also aliased as: push
each() { |get_element_by_index(i)| ... }
click to toggle source
# File lib/babeltrace2/value.rb, line 583 def each if block_given? length.times { |i| yield get_element_by_index(i) } else to_enum(:each) end end
empty?()
click to toggle source
# File lib/babeltrace2/value.rb, line 579 def empty? length == 0 end
get_element_by_index(index)
click to toggle source
# File lib/babeltrace2/value.rb, line 564 def get_element_by_index(index) l = length index += l if index < 0 raise IndexError, "invalid index" if index < 0 || index >= l handle = Babeltrace2.bt_value_array_borrow_element_by_index(@handle, index) BTValue.from_handle(handle) end
Also aliased as: []
get_length()
click to toggle source
# File lib/babeltrace2/value.rb, line 573 def get_length Babeltrace2.bt_value_array_get_length(@handle) end
Also aliased as: length
set_element_by_index(index, value)
click to toggle source
# File lib/babeltrace2/value.rb, line 548 def set_element_by_index(index, value) l = length index += l if index < 0 raise IndexError, "invalid index" if index < 0 || index >= l val = value val = BTValue.from_value(val) unless val.kind_of?(BTValue) res = Babeltrace2.bt_value_array_set_element_by_index(@handle, index, val) raise Babeltrace2.process_error(res) if res != :BT_VALUE_ARRAY_SET_ELEMENT_BY_INDEX_STATUS_OK self end
value()
click to toggle source
# File lib/babeltrace2/value.rb, line 593 def value each.collect(&:value) end
Also aliased as: to_a