Class: Babeltrace2::BTField::Structure
Constant Summary
TYPE_MAP
Instance Attribute Summary
#handle
Instance Method Summary
collapse
from_handle, #get_class, #get_class_type
#==, #initialize, #to_ptr
Instance Method Details
#[]=(member_field, value) ⇒ Object
652
653
654
655
|
# File 'lib/babeltrace2/trace-ir/field.rb', line 652
def []=(member_field, value)
get_member_field(member_field).set_value(value)
value
end
|
#each ⇒ Object
657
658
659
660
661
662
663
664
665
|
# File 'lib/babeltrace2/trace-ir/field.rb', line 657
def each
if block_given?
get_member_count.times { |i|
yield get_member_field_by_index(i)
}
else
to_enum(:each)
end
end
|
#field_names ⇒ Object
676
677
678
679
|
# File 'lib/babeltrace2/trace-ir/field.rb', line 676
def field_names
klass = get_class
get_member_count.times.collect { |i| klass.get_member_by_index(i).name }
end
|
#get_member_count ⇒ Object
Also known as:
member_count
620
621
622
|
# File 'lib/babeltrace2/trace-ir/field.rb', line 620
def get_member_count
@member_count ||= get_class.get_member_count
end
|
#get_member_field(member_field) ⇒ Object
Also known as:
[]
640
641
642
643
644
645
646
647
648
649
|
# File 'lib/babeltrace2/trace-ir/field.rb', line 640
def get_member_field(member_field)
case member_field
when ::String, Symbol
get_member_field_by_name(member_field)
when ::Integer
get_member_field_by_index(member_field)
else
raise TypeError, "wrong type for member field query"
end
end
|
#get_member_field_by_index(index) ⇒ Object
625
626
627
628
629
630
631
|
# File 'lib/babeltrace2/trace-ir/field.rb', line 625
def get_member_field_by_index(index)
count = get_member_count
index += count if index < 0
return nil if index >= count || index < 0
BTField.from_handle(
Babeltrace2.bt_field_structure_borrow_member_field_by_index(@handle, index))
end
|
#get_member_field_by_name(name) ⇒ Object
633
634
635
636
637
638
|
# File 'lib/babeltrace2/trace-ir/field.rb', line 633
def get_member_field_by_name(name)
name = name.inspect if name.kind_of?(Symbol)
handle = Babeltrace2.bt_field_structure_borrow_member_field_by_name(@handle, name)
return nil if handle.null?
BTField.from_handle(handle)
end
|
#to_s ⇒ Object
681
682
683
684
685
686
687
688
689
690
|
# File 'lib/babeltrace2/trace-ir/field.rb', line 681
def to_s
s = "{"
klass = get_class
s << get_member_count.times.collect { |i|
name = klass.get_member_by_index(i).name
name = name.inspect if name.kind_of?(Symbol)
"#{name}: #{get_member_field_by_index(i)}"
}.join(", ")
s << "}"
end
|
#value ⇒ Object
667
668
669
670
671
672
673
674
|
# File 'lib/babeltrace2/trace-ir/field.rb', line 667
def value
v = {}
klass = get_class
get_member_count.times { |i|
v[klass.get_member_by_index(i).name] = get_member_field_by_index(i).value
}
v
end
|