Class: Babeltrace2Gen::BTFieldClass::Enumeration::Mapping

Inherits:
Object
  • Object
show all
Extended by:
Babeltrace2Gen::BTFromH
Includes:
Babeltrace2Gen::BTPrinter, Babeltrace2Gen::BTUtils
Defined in:
lib/metababel/bt2_trace_class_generator.rb

Direct Known Subclasses

Signed::Mapping, Unsigned::Mapping

Constant Summary

Constants included from Babeltrace2Gen::BTPrinter

Babeltrace2Gen::BTPrinter::INDENT_INCREMENT

Instance Method Summary collapse

Methods included from Babeltrace2Gen::BTFromH

from_h

Methods included from Babeltrace2Gen::BTPrinter

context, #name_sanitized, pr, #scope

Methods included from Babeltrace2Gen::BTUtils

#bt_set_conditionally

Constructor Details

#initialize(parent:, label:, integer_range_set:) ⇒ Mapping

Returns a new instance of Mapping.



560
561
562
563
564
565
# File 'lib/metababel/bt2_trace_class_generator.rb', line 560

def initialize(parent:, label:, integer_range_set:)
  @parent = parent
  @label = label
  # Form [ [lower,upper], ...]
  @ranges = integer_range_set
end

Instance Method Details

#get_declarator(field_class:) ⇒ Object



567
568
569
570
571
572
573
574
575
576
577
578
# File 'lib/metababel/bt2_trace_class_generator.rb', line 567

def get_declarator(field_class:)
  bt_type_internal = self.class.instance_variable_get(:@bt_type_internal)
  scope do
    pr "bt_integer_range_set_#{bt_type_internal} *#{field_class}_range;"
    pr "#{field_class}_range = bt_integer_range_set_#{bt_type_internal}_create();"
    @ranges.each do |l, u|
      pr "bt_integer_range_set_#{bt_type_internal}_add_range(#{field_class}_range, #{l}, #{u});"
    end
    pr "bt_field_class_enumeration_#{bt_type_internal}_add_mapping(#{field_class}, \"#{@label}\", #{field_class}_range);"
    pr "bt_integer_range_set_#{bt_type_internal}_put_ref(#{field_class}_range);"
  end
end