Class: Babeltrace2::BTTraceClass

Inherits:
BTSharedObject show all
Defined in:
lib/babeltrace2/trace-ir/trace-class.rb

Constant Summary collapse

AddListenerStatus =
BTTraceClassAddListenerStatus
RemoveListenerStatus =
BTTraceClassRemoveListenerStatus

Instance Attribute Summary

Attributes inherited from BTObject

#handle

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BTSharedObject

inherited

Methods inherited from BTObject

#==, #to_ptr

Constructor Details

#initialize(handle = nil, retain: true, auto_release: true, self_component: nil) ⇒ BTTraceClass

Returns a new instance of BTTraceClass.



102
103
104
105
106
107
108
109
110
111
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 102

def initialize(handle = nil, retain: true, auto_release: true,
               self_component: nil)
  if(handle)
    super(handle, retain: retain, auto_release: auto_release)
  else
    handle = Babeltrace2.bt_trace_class_create(self_component)
    raise Babeltrace2.process_error if handle.null?
    super(handle, retain: false)
  end
end

Class Method Details

.from_h(self_component, h) ⇒ Object



353
354
355
356
357
358
359
360
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 353

def self.from_h(self_component, h)
  o = self_component.create_trace_class
  o.assigns_automatic_stream_class_id = h[:assigns_automatic_stream_class_id] unless h[:assigns_automatic_stream_class_id].nil?
  h[:stream_classes].each { |v| BTStreamClass.from_h(self_component, o, v) }
  o.user_attributes = h[:user_attributes] if h[:user_attributes]
  h[:bt_trace_class] = o
  o
end

Instance Method Details

#add_destruction_listener(user_func, user_data: nil) ⇒ Object



164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 164

def add_destruction_listener(user_func, user_data: nil)
  user_func = Babeltrace2._wrap_trace_class_destruction_listener_func(user_func)
  id = @handle.to_i
  ptr = FFI::MemoryPointer.new(:uint64)
  res = Babeltrace2.bt_trace_class_add_destruction_listener(@handle, user_func, user_data, ptr)
  raise Babeltrace2.process_error(res) if res != :BT_TRACE_CLASS_ADD_LISTENER_STATUS_OK
  listener_id = ptr.read_uint64
  h = Babeltrace2._callbacks[id][:destruction_listener_funcs]
  if h.nil?
    h = {}
    Babeltrace2._callbacks[id][:destruction_listener_funcs] = h
  end
  h[listener_id] = [user_func, user_data]
  listener_id
end

#assigns_automatic_stream_class_idObject Also known as: assigns_automatic_stream_class_id?



143
144
145
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 143

def assigns_automatic_stream_class_id
  Babeltrace2.bt_trace_class_assigns_automatic_stream_class_id(@handle) != BT_FALSE
end

#assigns_automatic_stream_class_id=(assigns_automatic_stream_class_id) ⇒ Object



138
139
140
141
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 138

def assigns_automatic_stream_class_id=(assigns_automatic_stream_class_id)
  set_assigns_automatic_stream_class_id(assigns_automatic_stream_class_id)
  assigns_automatic_stream_class_id
end

#create_field_class_array(element_field_class, length: nil) ⇒ Object Also known as: create_array_class, create_array



265
266
267
268
269
270
271
272
273
274
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 265

def create_field_class_array(element_field_class, length: nil)
  case length
  when Integer
    create_field_class_array_static(element_field_class, length)
  when nil, BTFieldClassIntegerUnsigned
    create_field_class_array_dynamic(element_field_class, length_field_class: length)
  else
    raise "invalid length type"
  end
end

#create_field_class_array_dynamic(element_field_class, length_field_class: nil) ⇒ Object Also known as: create_dynamic_array_class, create_dynamic_array



257
258
259
260
261
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 257

def create_field_class_array_dynamic(element_field_class, length_field_class: nil)
  BTFieldClassArrayDynamic.new(trace_class: @handle,
                               element_field_class: element_field_class,
                               length_field_class: length_field_class)
end

#create_field_class_array_static(element_field_class, length) ⇒ Object Also known as: create_static_array_class, create_static_array



249
250
251
252
253
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 249

def create_field_class_array_static(element_field_class, length)
  BTFieldClassArrayStatic.new(trace_class: @handle,
                              element_field_class: element_field_class,
                              length: length)
end

#create_field_class_bit_array(length) ⇒ Object Also known as: create_bit_array_class, create_bit_array



201
202
203
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 201

def create_field_class_bit_array(length)
  BTFieldClassBitArray.new(trace_class: @handle, length: length)
end

#create_field_class_boolObject Also known as: create_bool_class, create_bool



195
196
197
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 195

def create_field_class_bool
  BTFieldClassBool.new(trace_class: @handle)
end

#create_field_class_enumeration_signedObject Also known as: create_signed_enumeration_class, create_signed_enum



237
238
239
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 237

def create_field_class_enumeration_signed
  BTFieldClassEnumerationSigned.new(trace_class: @handle)
end

#create_field_class_enumeration_unsignedObject Also known as: create_unsigned_enumeration_class, create_unsigned_enum



231
232
233
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 231

def create_field_class_enumeration_unsigned
  BTFieldClassEnumerationUnsigned.new(trace_class: @handle)
end

#create_field_class_integer_signedObject Also known as: create_signed_integer_class, create_signed



213
214
215
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 213

def create_field_class_integer_signed
  BTFieldClassIntegerSigned.new(trace_class: @handle)
end

#create_field_class_integer_unsignedObject Also known as: create_unsigned_integer_class, create_unsigned



207
208
209
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 207

def create_field_class_integer_unsigned
  BTFieldClassIntegerUnsigned.new(trace_class: @handle)
end

#create_field_class_option(optional_field_class, selector_field_class: nil, ranges: nil) ⇒ Object Also known as: create_option_class, create_option



321
322
323
324
325
326
327
328
329
330
331
332
333
334
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 321

def create_field_class_option(optional_field_class, selector_field_class: nil, ranges: nil)
  case selector_field_class
  when nil
    create_field_class_option_without_selector(optional_field_class)
  when BTFieldClassBool
    create_field_class_option_with_selector_field_bool(optional_field_class, selector_field_class)
  when BTFieldClassIntegerUnsigned
    create_field_class_option_with_selector_field_integer_unsigned(optional_field_class, selector_field_class, ranges)
  when BTFieldClassIntegerSigned
    create_field_class_option_with_selector_field_integer_signed(optional_field_class, selector_field_class, ranges)
  else
    raise "invalid selector field class"
  end
end

#create_field_class_option_with_selector_field_bool(optional_field_class, selector_field_class) ⇒ Object Also known as: create_option_with_bool_selector_field_class, create_option_with_bool_selector_field



292
293
294
295
296
297
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 292

def create_field_class_option_with_selector_field_bool(optional_field_class, selector_field_class)
  BTFieldClassOptionWithSelectorFieldBool.new(
    trace_class: @handle,
    optional_field_class: optional_field_class,
    selector_field_class: selector_field_class)
end

#create_field_class_option_with_selector_field_integer_signed(optional_field_class, selector_field_class, ranges) ⇒ Object Also known as: create_option_with_signed_integer_selector_field_class, create_option_with_signed_integer_selector_field



311
312
313
314
315
316
317
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 311

def create_field_class_option_with_selector_field_integer_signed(optional_field_class, selector_field_class, ranges)
  BTFieldClassOptionWithSelectorFieldIntegerSigned.new(
    trace_class: @handle,
    optional_field_class: optional_field_class,
    selector_field_class: selector_field_class,
    ranges: ranges)
end

#create_field_class_option_with_selector_field_integer_unsigned(optional_field_class, selector_field_class, ranges) ⇒ Object Also known as: create_option_with_unsigned_integer_selector_field_class, create_option_with_unsigned_integer_selector_field



301
302
303
304
305
306
307
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 301

def create_field_class_option_with_selector_field_integer_unsigned(optional_field_class, selector_field_class, ranges)
  BTFieldClassOptionWithSelectorFieldIntegerUnsigned.new(
    trace_class: @handle,
    optional_field_class: optional_field_class,
    selector_field_class: selector_field_class,
    ranges: ranges)
end

#create_field_class_option_without_selector(optional_field_class) ⇒ Object Also known as: create_option_without_selector_class, create_option_without



284
285
286
287
288
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 284

def create_field_class_option_without_selector(optional_field_class)
  BTFieldClassOptionWithoutSelectorField.new(
    trace_class: @handle,
    optional_field_class: optional_field_class)
end

#create_field_class_real_double_precisionObject Also known as: create_double_precision_real_class, create_double



225
226
227
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 225

def create_field_class_real_double_precision
  BTFieldClassRealDoublePrecision.new(trace_class: @handle)
end

#create_field_class_real_single_precisionObject Also known as: create_single_precision_real_class, create_single



219
220
221
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 219

def create_field_class_real_single_precision
  BTFieldClassRealSinglePrecision.new(trace_class: @handle)
end

#create_field_class_stringObject Also known as: create_string_class, create_string



243
244
245
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 243

def create_field_class_string
  BTFieldClassString.new(trace_class: @handle)
end

#create_field_class_structureObject Also known as: create_structure_class, create_structure



278
279
280
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 278

def create_field_class_structure
  BTFieldClassStructure.new(trace_class: @handle)
end

#create_field_class_variant(selector_field_class: nil) ⇒ Object Also known as: create_variant_class, create_variant



338
339
340
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 338

def create_field_class_variant(selector_field_class: nil)
  BTFieldClassVariant.new(trace_class: @handle, selector_field_class: selector_field_class)
end

#create_stream_class(id: nil) ⇒ Object



187
188
189
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 187

def create_stream_class(id: nil)
  BTStreamClass.new(trace_class: @handle, id: id)
end

#create_traceObject



191
192
193
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 191

def create_trace
  BTTrace.new(trace_class: @handle)
end

#get_stream_class_by_id(id) ⇒ Object



126
127
128
129
130
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 126

def get_stream_class_by_id(id)
  handle = Babeltrace2.bt_trace_class_borrow_stream_class_by_id(@handle, id)
  return nil if handle.null?
  BTStreamClass.new(handle, retain: true)
end

#get_stream_class_by_index(index) ⇒ Object



118
119
120
121
122
123
124
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 118

def get_stream_class_by_index(index)
  count = get_stream_class_count
  index += count if index < 0
  return nil if index >= count || index < 0
  BTStreamClass.new(
    Babeltrace2.bt_trace_class_borrow_stream_class_by_index(@handle, index))
end

#get_stream_class_countObject Also known as: stream_class_count



113
114
115
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 113

def get_stream_class_count
  Babeltrace2.bt_trace_class_get_stream_class_count(@handle)
end

#get_user_attributesObject Also known as: user_attributes



159
160
161
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 159

def get_user_attributes
  BTValueMap.new(Babeltrace2.bt_trace_class_borrow_user_attributes(@handle), retain: true)
end

#remove_destruction_listener(listener_id) ⇒ Object



180
181
182
183
184
185
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 180

def remove_destruction_listener(listener_id)
  res = Babeltrace2.bt_trace_class_remove_destruction_listener(@handle, listener_id)
  raise Babeltrace2.process_error(res) if res != :BT_TRACE_CLASS_REMOVE_LISTENER_STATUS_OK
  Babeltrace2._callbacks[@handle.to_i][:destruction_listener_funcs].delete(listener_id)
  self
end

#set_assigns_automatic_stream_class_id(assigns_automatic_stream_class_id) ⇒ Object



132
133
134
135
136
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 132

def set_assigns_automatic_stream_class_id(assigns_automatic_stream_class_id)
  Babeltrace2.bt_trace_class_set_assigns_automatic_stream_class_id(
    @handle, assigns_automatic_stream_class_id ? BT_TRUE : BT_FALSE)
  self
end

#set_user_attributes(user_attributes) ⇒ Object



148
149
150
151
152
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 148

def set_user_attributes(user_attributes)
  bt_user_attributes = BTValue.from_value(user_attributes)
  Babeltrace2.bt_trace_class_set_user_attributes(@handle, bt_user_attributes)
  self
end

#to_hObject



344
345
346
347
348
349
350
351
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 344

def to_h
  res = {
    assigns_automatic_stream_class_id: assigns_automatic_stream_class_id?,
    stream_classes: stream_class_count.times.collect { |i| get_stream_class_by_index(i).to_h } }
  user_attributes_value = user_attributes.value
  res[:user_attributes] = user_attributes_value if !user_attributes_value.empty?
  res
end

#user_attributes=(user_attributes) ⇒ Object



154
155
156
157
# File 'lib/babeltrace2/trace-ir/trace-class.rb', line 154

def user_attributes=(user_attributes)
  set_user_attributes(user_attributes)
  user_attributes
end