Class: Babeltrace2Gen::BTFieldClass::Structure
- Inherits:
-
Babeltrace2Gen::BTFieldClass
- Object
- Babeltrace2Gen::BTFieldClass
- Babeltrace2Gen::BTFieldClass::Structure
- Extended by:
- Babeltrace2Gen::BTFromH
- Includes:
- Babeltrace2Gen::BTMatchMembers
- Defined in:
- lib/metababel/bt2_trace_class_generator.rb
Constant Summary collapse
- BT_MATCH_ATTRS =
[:members]
Constants included from Babeltrace2Gen::BTPrinter
Babeltrace2Gen::BTPrinter::INDENT_INCREMENT
Instance Attribute Summary collapse
-
#members ⇒ Object
readonly
Returns the value of attribute members.
Attributes inherited from Babeltrace2Gen::BTFieldClass
#cast_type, #cast_type_is_struct, #type
Attributes included from Babeltrace2Gen::BTLocator
Instance Method Summary collapse
- #[](index) ⇒ Object
- #get_declarator(trace_class:, variable:) ⇒ Object
- #get_getter(variable:, arg_variables:) ⇒ Object
- #get_setter(variable:, arg_variables:) ⇒ Object
-
#initialize(parent:, members: []) ⇒ Structure
constructor
A new instance of Structure.
Methods included from Babeltrace2Gen::BTFromH
Methods included from Babeltrace2Gen::BTMatchMembers
Methods inherited from Babeltrace2Gen::BTFieldClass
Methods included from Babeltrace2Gen::BTMatch
Methods included from Babeltrace2Gen::BTPrinter
context, #name_sanitized, pr, #scope
Methods included from Babeltrace2Gen::BTLocator
#rec_event_class, #rec_member_class, #rec_stream_class, #rec_trace_class, #resolve_path
Constructor Details
#initialize(parent:, members: []) ⇒ Structure
Returns a new instance of Structure.
818 819 820 821 |
# File 'lib/metababel/bt2_trace_class_generator.rb', line 818 def initialize(parent:, members: []) @parent = parent @members = members.collect { |m| BTMemberClass.new(parent: self, **m) } end |
Instance Attribute Details
#members ⇒ Object (readonly)
Returns the value of attribute members.
814 815 816 |
# File 'lib/metababel/bt2_trace_class_generator.rb', line 814 def members @members end |
Instance Method Details
#[](index) ⇒ Object
823 824 825 826 827 828 829 830 831 832 |
# File 'lib/metababel/bt2_trace_class_generator.rb', line 823 def [](index) case index when ::Integer @members[index] when ::String @members.find { |m| m.name == index } else raise("Unknow Type (#{index.class}) for index: #{index}") end end |
#get_declarator(trace_class:, variable:) ⇒ Object
834 835 836 837 838 839 840 841 842 843 844 845 846 |
# File 'lib/metababel/bt2_trace_class_generator.rb', line 834 def get_declarator(trace_class:, variable:) @variable = variable pr "#{variable} = bt_field_class_structure_create(#{trace_class});" @members.each_with_index do |m, i| var_name = "#{variable}_m_#{i}" scope do pr "bt_field_class *#{var_name};" m.field_class.get_declarator(trace_class: trace_class, variable: var_name) pr "bt_field_class_structure_append_member(#{variable}, \"#{m.name}\", #{var_name});" pr "bt_field_class_put_ref(#{var_name});" end end end |
#get_getter(variable:, arg_variables:) ⇒ Object
858 859 860 861 862 863 864 865 866 |
# File 'lib/metababel/bt2_trace_class_generator.rb', line 858 def get_getter(variable:, arg_variables:) @members.each_with_index do |m, i| field = "#{variable}_m_#{i}" scope do pr "const bt_field *#{field} = bt_field_structure_borrow_member_field_by_index_const(#{variable}, #{i});" m.field_class.get_getter(field: field, arg_variables: arg_variables) end end end |
#get_setter(variable:, arg_variables:) ⇒ Object
848 849 850 851 852 853 854 855 856 |
# File 'lib/metababel/bt2_trace_class_generator.rb', line 848 def get_setter(variable:, arg_variables:) @members.each_with_index do |m, i| field = "#{variable}_m_#{i}" scope do pr "bt_field *#{field} = bt_field_structure_borrow_member_field_by_index(#{variable}, #{i});" m.field_class.get_setter(field: field, arg_variables: arg_variables) end end end |