class Babeltrace2::BTFieldClass::Structure

Public Class Methods

from_h(trace_class, h, stream_class_h = nil) click to toggle source
# File lib/babeltrace2/trace-ir/field-class.rb, line 1100
def self.from_h(trace_class, h, stream_class_h = nil)
  o = self.new(trace_class: trace_class).from_h(h)
  h[:members].each_with_index { |v, i|
    o.append_member(v[:name],
      BTFieldClass.from_h(trace_class, v[:field_class], stream_class_h))
    o.get_member_by_index(i).from_h(v)
  }
  h[:bt_field_class] = o
  o
end
new(handle = nil, retain: true, auto_release: true, trace_class: nil) click to toggle source
Calls superclass method
# File lib/babeltrace2/trace-ir/field-class.rb, line 1042
def initialize(handle = nil, retain: true, auto_release: true,
               trace_class: nil)
  if handle
    super(handle, retain: retain, auto_release: auto_release)
  else
    handle = Babeltrace2.bt_field_class_structure_create(trace_class)
    raise Babeltrace2.process_error if handle.null?
    super(handle, retain: false)
  end
end

Public Instance Methods

[](member)
Alias for: get_member
append(name, member_field_class)
Alias for: append_member
append_member(name, member_field_class) click to toggle source
# File lib/babeltrace2/trace-ir/field-class.rb, line 1053
def append_member(name, member_field_class)
  name = name.inspect if name.kind_of?(Symbol)
  res = Babeltrace2.bt_field_class_structure_append_member(
          @handle, name, member_field_class)
  raise Babeltrace2.process_error(res) if res != :BT_FIELD_CLASS_STRUCTURE_APPEND_MEMBER_STATUS_OK
  self
end
Also aliased as: append
get_member(member) click to toggle source
# File lib/babeltrace2/trace-ir/field-class.rb, line 1082
def get_member(member)
  case member
  when ::String, ::Symbol
    get_member_by_name(member)
  when ::Integer
    get_member_by_index(member)
  else
    raise TypeError, "wrong type for member query"
  end
end
Also aliased as: []
get_member_by_index(index) click to toggle source
# File lib/babeltrace2/trace-ir/field-class.rb, line 1067
def get_member_by_index(index)
  count = get_member_count
  index += count if index < 0
  return nil if index >= count || index < 0
  BTFieldClassStructureMember.new(
    Babeltrace2.bt_field_class_structure_borrow_member_by_index(@handle, index))
end
get_member_by_name(name) click to toggle source
# File lib/babeltrace2/trace-ir/field-class.rb, line 1075
def get_member_by_name(name)
  name = name.inspect if name.kind_of?(Symbol)
  handle = Babeltrace2.bt_field_class_structure_borrow_member_by_name(@handle, name)
  return nil if handle.null?
  BTFieldClassStructureMember.new(handle)
end
get_member_count() click to toggle source
# File lib/babeltrace2/trace-ir/field-class.rb, line 1062
def get_member_count
  Babeltrace2.bt_field_class_structure_get_member_count(@handle)
end
Also aliased as: member_count
member_count()
Alias for: get_member_count
to_h() click to toggle source
Calls superclass method Babeltrace2::BTFieldClass#to_h
# File lib/babeltrace2/trace-ir/field-class.rb, line 1094
def to_h
  res = super
  res[:members] = member_count.times.collect { |i| get_member_by_index(i).to_h }
  res
end