Class: Babeltrace2::BTFieldClass::Variant
Defined Under Namespace
Modules: WithSelectorField, WithoutSelectorField
Classes: Option
Constant Summary
IntegerSigned, IntegerUnsigned, RealDoublePrecision, RealSinglePrecision, TYPE_MAP
Instance Attribute Summary
#handle
Class Method Summary
collapse
Instance Method Summary
collapse
#from_h, from_handle, #get_type, #get_user_attributes, #set_user_attributes, #type_is, #user_attributes=
inherited
#==, #to_ptr
Constructor Details
#initialize(handle = nil, retain: true, auto_release: true, trace_class: nil, selector_field_class: nil) ⇒ Variant
Returns a new instance of Variant.
Class Method Details
.from_h(trace_class, h, stream_class_h = nil) ⇒ Object
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
|
# File 'lib/babeltrace2/trace-ir/field-class.rb', line 1718
def self.from_h(trace_class, h, stream_class_h = nil)
if (stream_class_h && h[:selector_field_path])
selector_field_class = BTStreamClass.locate_field_class(
BTFieldPath.path_from_s_to_h(h[:selector_field_path]), stream_class_h)
else
selector_field_class = nil
end
o = self.new(trace_class: trace_class,
selector_field_class: selector_field_class).from_h(h)
if selector_field_class
h[:options].each { |v|
o.append_option(v[:name],
BTFieldClass.from_h(trace_class, v[:field_class], stream_class_h),
v[:ranges]) }
else
h[:options].each { |v|
o.append_option(v[:name],
BTFieldClass.from_h(trace_class, v[:field_class], stream_class_h)) }
end
h[:bt_field_class] = o
o
end
|
Instance Method Details
#get_option(option) ⇒ Object
Also known as:
[]
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
|
# File 'lib/babeltrace2/trace-ir/field-class.rb', line 1698
def get_option(option)
case option
when ::String, Symbol
get_option_by_name(option)
when ::Integer
get_option_by_index(option)
else
raise TypeError, "wrong type for option query"
end
end
|
#get_option_by_index(index) ⇒ Object
1683
1684
1685
1686
1687
1688
1689
|
# File 'lib/babeltrace2/trace-ir/field-class.rb', line 1683
def get_option_by_index(index)
count = get_option_count
index += count if index < 0
return nil if index >= count || index < 0
BTFieldClassVariantOption.new(
Babeltrace2.bt_field_class_variant_borrow_option_by_index(@handle, index))
end
|
#get_option_by_name(name) ⇒ Object
1691
1692
1693
1694
1695
1696
|
# File 'lib/babeltrace2/trace-ir/field-class.rb', line 1691
def get_option_by_name(name)
name = name.inspect if name.kind_of?(Symbol)
handle = Babeltrace2.bt_field_class_variant_borrow_option_by_name(@handle, name)
return nil if handle.null?
BTFieldClassVariantOption.new(handle)
end
|
#get_option_count ⇒ Object
Also known as:
option_count
1678
1679
1680
|
# File 'lib/babeltrace2/trace-ir/field-class.rb', line 1678
def get_option_count
Babeltrace2.bt_field_class_variant_get_option_count(@handle)
end
|
#to_h ⇒ Object
1710
1711
1712
1713
1714
1715
1716
|
# File 'lib/babeltrace2/trace-ir/field-class.rb', line 1710
def to_h
res = super
res[:options] = option_count.times.collect { |i|
get_option_by_index(i).to_h
}
res
end
|