Class: Babeltrace2::BTValue::Array
Constant Summary
collapse
- AppendElementStatus =
BTValueArrayAppendElementStatus
- SetElementByIndexStatus =
BTValueArraySetElementByIndexStatus
ArrayAppendElementStatus, ArraySetElementByIndexStatus, IntegerSigned, IntegerUnsigned, MapExtendStatus, MapForeachEntryConstFuncStatus, MapForeachEntryConstStatus, MapForeachEntryFuncStatus, MapForeachEntryStatus, StringSetStatus, TYPE_MAP
Instance Attribute Summary
#handle
Instance Method Summary
collapse
#copy, from_handle, from_value, #get_type, #is_equal, #to_s
inherited
#==, #to_ptr
Constructor Details
#initialize(handle = nil, retain: true, auto_release: true) ⇒ Array
Returns a new instance of Array.
494
495
496
497
498
499
500
501
502
|
# 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
|
Instance Method Details
#[]=(index, value) ⇒ Object
559
560
561
562
|
# File 'lib/babeltrace2/value.rb', line 559
def []=(index, value)
set_element_by_index(index, value)
value
end
|
#append_element(value) ⇒ Object
Also known as:
push
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
|
# 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
|
#each ⇒ Object
583
584
585
586
587
588
589
590
591
|
# 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? ⇒ Boolean
579
580
581
|
# File 'lib/babeltrace2/value.rb', line 579
def empty?
length == 0
end
|
#get_element_by_index(index) ⇒ Object
Also known as:
[]
564
565
566
567
568
569
570
|
# 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
|
#get_length ⇒ Object
Also known as:
length
573
574
575
|
# File 'lib/babeltrace2/value.rb', line 573
def get_length
Babeltrace2.bt_value_array_get_length(@handle)
end
|
#set_element_by_index(index, value) ⇒ Object
548
549
550
551
552
553
554
555
556
557
|
# 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 ⇒ Object
Also known as:
to_a
593
594
595
|
# File 'lib/babeltrace2/value.rb', line 593
def value
each.collect(&:value)
end
|