class Babeltrace2::BTValue::Map
Constants
- ExtendStatus
- ForeachEntryConstFuncStatus
- ForeachEntryConstStatus
- ForeachEntryFuncStatus
- ForeachEntryStatus
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 743 def initialize(handle = nil, retain: true, auto_release: true) if handle super(handle, retain: retain, auto_release: auto_release) else handle = Babeltrace2.bt_value_map_create() raise Babeltrace2.process_error if handle.null? super(handle) end end
Public Instance Methods
[]=(key, value)
click to toggle source
# File lib/babeltrace2/value.rb, line 797 def []=(key, value) insert_entry(key, value) value end
each(&block)
click to toggle source
# File lib/babeltrace2/value.rb, line 825 def each(&block) if block_given? block_wrapper = lambda { |key, handle, ptr| begin val = BTValue.from_handle(handle) key = key[1..-1].to_sym if key[0] == ':' block.call(key, val) :BT_VALUE_MAP_FOREACH_ENTRY_FUNC_STATUS_OK rescue Exception => e Babeltrace2.stack_ruby_error(e, source: nil) :BT_VALUE_MAP_FOREACH_ENTRY_FUNC_STATUS_ERROR end } Babeltrace2.bt_value_map_foreach_entry(@handle, block_wrapper, nil) else to_enum(:each) end end
empty?()
click to toggle source
# File lib/babeltrace2/value.rb, line 807 def empty? size == 0 end
extend(other)
click to toggle source
# File lib/babeltrace2/value.rb, line 857 def extend(other) hsh = self.class.new hsh.extend!(self) hsh.extend!(other) end
extend!(other)
click to toggle source
# File lib/babeltrace2/value.rb, line 851 def extend!(other) res = Babeltrace2.bt_value_map_extend(@handle, other) raise Babeltrace2.process_error(res) if res != :BT_VALUE_COPY_STATUS_OK self end
get_entry_value(key)
click to toggle source
# File lib/babeltrace2/value.rb, line 817 def get_entry_value(key) key = key.inspect if key.kind_of?(Symbol) handle = Babeltrace2.bt_value_map_borrow_entry_value(@handle, key) return nil if handle.null? BTValue.from_handle(handle) end
Also aliased as: []
get_size()
click to toggle source
# File lib/babeltrace2/value.rb, line 802 def get_size Babeltrace2.bt_value_map_get_size(@handle) end
Also aliased as: size
has_entry(key)
click to toggle source
# File lib/babeltrace2/value.rb, line 811 def has_entry(key) key = key.inspect if key.kind_of?(Symbol) Babeltrace2.bt_value_map_has_entry(@handle, key) != BT_FALSE end
Also aliased as: include?
insert_entry(key, value)
click to toggle source
# File lib/babeltrace2/value.rb, line 753 def insert_entry(key, value) key = key.inspect if key.kind_of?(Symbol) res = case value when BTValue Babeltrace2.bt_value_map_insert_entry(@handle, key, value) when nil Babeltrace2.bt_value_map_insert_entry(@handle, key, Babeltrace2.bt_value_null) when true Babeltrace2.bt_value_map_insert_bool_entry(@handle, key, BT_TRUE) when false Babeltrace2.bt_value_map_insert_bool_entry(@handle, key, BT_FALSE) when ::Integer if value > (1<<63) - 1 Babeltrace2.bt_value_map_insert_unsigned_integer_entry(@handle, key, value) else Babeltrace2.bt_value_map_insert_signed_integer_entry(@handle, key, value) end when ::Float Babeltrace2.bt_value_map_insert_real_entry(@handle, key, value) when ::String Babeltrace2.bt_value_map_insert_string_entry(@handle, key, value) when ::Array ptr = FFI::MemoryPointer.new(:pointer) res = Babeltrace2.bt_value_map_insert_empty_array_entry(@handle, key, ptr) raise Babeltrace2.process_error(res) if res != :BT_VALUE_MAP_INSERT_ENTRY_STATUS_OK arr = BTValueArray.new(BTValueArrayHandle.new(ptr.read_pointer), retain: false, auto_release: false) value.each { |v| arr.append_element(v) } :BT_VALUE_MAP_INSERT_ENTRY_STATUS_OK when ::Hash ptr = FFI::MemoryPointer.new(:pointer) res = Babeltrace2.bt_value_map_insert_empty_map_entry(@handle, key, ptr) raise Babeltrace2.process_error(res) if res != :BT_VALUE_MAP_INSERT_ENTRY_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_MAP_INSERT_ENTRY_STATUS_OK else raise TypeError, "unsupported value type" end raise Babeltrace2.process_error(res) if res != :BT_VALUE_MAP_INSERT_ENTRY_STATUS_OK self end
value()
click to toggle source
# File lib/babeltrace2/value.rb, line 844 def value val = {} each { |k, v| val[k] = v.value } val end
Also aliased as: to_h