Class: Babeltrace2::BTFieldClass::Structure
Defined Under Namespace
Classes: Member
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) ⇒ Structure
Returns a new instance of Structure.
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
|
# 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
|
Class Method Details
.from_h(trace_class, h, stream_class_h = nil) ⇒ Object
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
|
# 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
|
Instance Method Details
#append_member(name, member_field_class) ⇒ Object
Also known as:
append
1053
1054
1055
1056
1057
1058
1059
|
# 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
|
#get_member(member) ⇒ Object
Also known as:
[]
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
|
# 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
|
#get_member_by_index(index) ⇒ Object
1067
1068
1069
1070
1071
1072
1073
|
# 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) ⇒ Object
1075
1076
1077
1078
1079
1080
|
# 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 ⇒ Object
Also known as:
member_count
1062
1063
1064
|
# File 'lib/babeltrace2/trace-ir/field-class.rb', line 1062
def get_member_count
Babeltrace2.bt_field_class_structure_get_member_count(@handle)
end
|
#to_h ⇒ Object
1094
1095
1096
1097
1098
|
# 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
|