metababel 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/metababel +12 -6
- data/lib/metababel/bt2_stream_classes_generator.rb +21 -6
- data/lib/metababel/version.rb +1 -1
- data/template/downstream.c.erb +7 -2
- data/template/filter.c.erb +1 -1
- data/template/sink.c.erb +1 -1
- data/template/source.c.erb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3e44583997647f4d7d9e241dd5e066abc80586445283bd2846fa9fa453542de7
|
|
4
|
+
data.tar.gz: a89855eeb46c35a71325937679b30bc0ef3fe46317cc1239419980b13f43a1b5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8ece21929325026051ef4897d8f9871c19e5af621d963d1fcd8e57e8e481feb460e6fe3a02675eefb0bd44dc64505af329231ea22b52c54acbbfc7d9efcdaf2a
|
|
7
|
+
data.tar.gz: 62fd169ca6e45a414b71228c2b6fc763bd0d18dd83fcbc6266d1663bb7303a8aa608f56863b3bbea0154d5862e4b80f26adbdbd6401b11541a658e200c278704
|
data/bin/metababel
CHANGED
|
@@ -33,7 +33,7 @@ class Hash
|
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
EventInfo = Struct.new(:name, :args, :body, :index_stream_class, :index_event_class) do
|
|
36
|
+
EventInfo = Struct.new(:name, :args, :body, :index_stream_class, :index_event_class, :default_clock_class) do
|
|
37
37
|
def name_sanitized
|
|
38
38
|
name.gsub(/[^0-9A-Za-z-]/, '_')
|
|
39
39
|
end
|
|
@@ -56,7 +56,7 @@ class Babeltrace2Gen::BTTraceClass
|
|
|
56
56
|
def map_event_classes_with_index
|
|
57
57
|
@stream_classes.map.with_index do |s, index_stream_class|
|
|
58
58
|
s.event_classes.map.with_index do |e, index_event_class|
|
|
59
|
-
yield(e, index_stream_class, index_event_class)
|
|
59
|
+
yield(e, index_stream_class, index_event_class, s.default_clock_class)
|
|
60
60
|
end
|
|
61
61
|
end.flatten
|
|
62
62
|
end
|
|
@@ -71,8 +71,10 @@ end
|
|
|
71
71
|
# But we clean the white space empty line afterward \o/
|
|
72
72
|
def wrote_event_dispatchers(folder, t)
|
|
73
73
|
event_name = 'event'
|
|
74
|
-
event_dispatchers = t.map_event_classes_with_index do |e, index_stream_class, index_event_class|
|
|
74
|
+
event_dispatchers = t.map_event_classes_with_index do |e, index_stream_class, index_event_class, default_clock_class|
|
|
75
75
|
arg_variables = []
|
|
76
|
+
arg_variables << GeneratedArg.new("uint64_t", "timestamp") if default_clock_class
|
|
77
|
+
|
|
76
78
|
body = Babeltrace2Gen.context(indent: 1) do
|
|
77
79
|
e.get_getter(event: event_name, arg_variables: arg_variables)
|
|
78
80
|
end
|
|
@@ -88,16 +90,18 @@ end
|
|
|
88
90
|
|
|
89
91
|
def wrote_creates(folder, t)
|
|
90
92
|
event_name = 'event'
|
|
91
|
-
downstream_events = t.map_event_classes_with_index do |e, index_stream_class, index_event_class|
|
|
93
|
+
downstream_events = t.map_event_classes_with_index do |e, index_stream_class, index_event_class, default_clock_class|
|
|
92
94
|
arg_variables = []
|
|
93
95
|
body = Babeltrace2Gen.context(indent: 1) do
|
|
94
96
|
e.get_setter(event: event_name, arg_variables: arg_variables)
|
|
95
97
|
end
|
|
96
|
-
|
|
98
|
+
arg_variables.insert(0,GeneratedArg.new("uint64_t", "timestamp")) if default_clock_class
|
|
99
|
+
|
|
100
|
+
EventInfo.new(e.name, arg_variables, "\n" + body, index_stream_class, index_event_class, default_clock_class)
|
|
97
101
|
end
|
|
98
102
|
|
|
99
103
|
body_declarator_classes = "\n" + Babeltrace2Gen.context(indent: 1) do
|
|
100
|
-
t.get_declarator(variable: 'trace_class')
|
|
104
|
+
t.get_declarator(variable: 'trace_class', self_component: 'self_component')
|
|
101
105
|
end
|
|
102
106
|
|
|
103
107
|
d = { body_declarator_classes: body_declarator_classes,
|
|
@@ -203,6 +207,8 @@ if options.key?(:params)
|
|
|
203
207
|
end
|
|
204
208
|
d[:params_declaration] = c.get_struct_definition('params')
|
|
205
209
|
d[:params_definition] = body
|
|
210
|
+
else
|
|
211
|
+
d[:params_declaration] = "char _dummy;"
|
|
206
212
|
end
|
|
207
213
|
|
|
208
214
|
erb_render_and_save(d, "#{options[:component_type].downcase}.c", base_folder, out_name: "main.c")
|
|
@@ -89,7 +89,8 @@ module Babeltrace2Gen
|
|
|
89
89
|
end
|
|
90
90
|
end
|
|
91
91
|
|
|
92
|
-
def get_declarator(variable:)
|
|
92
|
+
def get_declarator(variable:, self_component:)
|
|
93
|
+
pr "#{variable} = bt_trace_class_create(#{self_component});"
|
|
93
94
|
bt_set_conditionally(@assigns_automatic_stream_class_id) do |v|
|
|
94
95
|
pr "bt_trace_class_set_assigns_automatic_stream_class_id(#{variable}, #{v});"
|
|
95
96
|
end
|
|
@@ -98,7 +99,7 @@ module Babeltrace2Gen
|
|
|
98
99
|
stream_class_name = "#{variable}_sc_#{i}"
|
|
99
100
|
scope do
|
|
100
101
|
pr "bt_stream_class *#{stream_class_name};"
|
|
101
|
-
m.get_declarator(
|
|
102
|
+
m.get_declarator(variable: stream_class_name, self_component: self_component, trace_class: variable)
|
|
102
103
|
end
|
|
103
104
|
end
|
|
104
105
|
end
|
|
@@ -109,10 +110,14 @@ module Babeltrace2Gen
|
|
|
109
110
|
include BTPrinter
|
|
110
111
|
include BTLocator
|
|
111
112
|
extend BTFromH
|
|
112
|
-
attr_reader :packet_context_field_class, :event_common_context_field_class, :event_classes, :id, :name
|
|
113
|
+
attr_reader :packet_context_field_class, :event_common_context_field_class, :event_classes, :default_clock_class, :id, :name
|
|
113
114
|
|
|
114
115
|
def initialize(parent:, name: nil, packet_context_field_class: nil, event_common_context_field_class: nil,
|
|
115
|
-
event_classes: [], id: nil, assigns_automatic_event_class_id: nil, assigns_automatic_stream_id: nil
|
|
116
|
+
event_classes: [], id: nil, assigns_automatic_event_class_id: nil, assigns_automatic_stream_id: nil,
|
|
117
|
+
default_clock_class: nil)
|
|
118
|
+
# Handle clock class property:
|
|
119
|
+
# https://babeltrace.org/docs/v2.0/libbabeltrace2/group__api-tir-clock-cls.html#gae0f705eb48cd65784da28b1906ca05a5
|
|
120
|
+
|
|
116
121
|
@parent = parent
|
|
117
122
|
@name = name
|
|
118
123
|
|
|
@@ -137,15 +142,26 @@ module Babeltrace2Gen
|
|
|
137
142
|
end
|
|
138
143
|
@assigns_automatic_stream_id = assigns_automatic_stream_id
|
|
139
144
|
@id = id
|
|
145
|
+
@default_clock_class = default_clock_class
|
|
140
146
|
end
|
|
141
147
|
|
|
142
|
-
def get_declarator(trace_class:,
|
|
148
|
+
def get_declarator(variable:, trace_class:, self_component:)
|
|
143
149
|
if @id
|
|
144
150
|
pr "#{variable} = bt_stream_class_create_with_id(#{trace_class}, #{@id});"
|
|
145
151
|
else
|
|
146
152
|
pr "#{variable} = bt_stream_class_create(#{trace_class});"
|
|
147
153
|
end
|
|
148
154
|
pr "bt_stream_class_set_name(#{variable}, \"#{name}\");" if @name
|
|
155
|
+
if @default_clock_class
|
|
156
|
+
clock_class_name = "#{variable}_dcc"
|
|
157
|
+
scope do
|
|
158
|
+
pr "bt_clock_class *#{clock_class_name};"
|
|
159
|
+
# TODO: @default_clock_class.get_declarator(variable: clock_class_name, self_component: self_component)
|
|
160
|
+
pr "#{clock_class_name} = bt_clock_class_create(#{self_component});"
|
|
161
|
+
pr "bt_stream_class_set_default_clock_class(#{variable}, #{clock_class_name});"
|
|
162
|
+
pr "bt_clock_class_put_ref(#{clock_class_name});"
|
|
163
|
+
end
|
|
164
|
+
end
|
|
149
165
|
|
|
150
166
|
if @packet_context_field_class
|
|
151
167
|
var_pc = "#{variable}_pc_fc"
|
|
@@ -185,7 +201,6 @@ module Babeltrace2Gen
|
|
|
185
201
|
end
|
|
186
202
|
|
|
187
203
|
pr "bt_stream_class_put_ref(#{variable});"
|
|
188
|
-
|
|
189
204
|
end
|
|
190
205
|
end
|
|
191
206
|
|
data/lib/metababel/version.rb
CHANGED
data/template/downstream.c.erb
CHANGED
|
@@ -37,7 +37,7 @@ void btx_downstream_push_message(
|
|
|
37
37
|
|
|
38
38
|
bt_trace_class *
|
|
39
39
|
btx_downstream_trace_class_create_rec(bt_self_component *self_component) {
|
|
40
|
-
bt_trace_class *trace_class
|
|
40
|
+
bt_trace_class *trace_class;
|
|
41
41
|
<%= body_declarator_classes %>
|
|
42
42
|
return trace_class;
|
|
43
43
|
}
|
|
@@ -124,9 +124,14 @@ void btx_push_message_<%= e.name_sanitized %>(
|
|
|
124
124
|
bt_stream_class *stream_class = bt_stream_borrow_class(stream);
|
|
125
125
|
bt_event_class *event_class = bt_stream_class_borrow_event_class_by_index(
|
|
126
126
|
stream_class, <%= e.index_event_class %>);
|
|
127
|
-
|
|
127
|
+
<% if !e.default_clock_class %>
|
|
128
128
|
bt_message *message = bt_message_event_create(
|
|
129
129
|
common_data->self_message_iterator, event_class, stream);
|
|
130
|
+
<% else %>
|
|
131
|
+
bt_message *message = bt_message_event_create_with_default_clock_snapshot(
|
|
132
|
+
common_data->self_message_iterator, event_class, stream, timestamp);
|
|
133
|
+
<% end %>
|
|
134
|
+
|
|
130
135
|
bt_event *downstream_event = bt_message_event_borrow_event(message);
|
|
131
136
|
|
|
132
137
|
btx_set_message_<%= e.name_sanitized %>(
|
data/template/filter.c.erb
CHANGED
|
@@ -241,7 +241,7 @@ filter_initialize(bt_self_component_filter *self_component_filter,
|
|
|
241
241
|
|
|
242
242
|
/* Allocate a private data structure */
|
|
243
243
|
common_data_t *common_data = calloc(1, sizeof(common_data_t));
|
|
244
|
-
common_data->btx_params = calloc(1,sizeof(btx_params_t));
|
|
244
|
+
common_data->btx_params = calloc(1, sizeof(btx_params_t));
|
|
245
245
|
common_data->params = params;
|
|
246
246
|
// Read parameters
|
|
247
247
|
btx_populate_params(common_data);
|
data/template/sink.c.erb
CHANGED
|
@@ -80,7 +80,7 @@ sink_initialize(bt_self_component_sink *self_component_sink,
|
|
|
80
80
|
const bt_value *params, void *initialize_method_data) {
|
|
81
81
|
/* Allocate a private data structure */
|
|
82
82
|
common_data_t *common_data = calloc(1, sizeof(common_data_t));
|
|
83
|
-
common_data->btx_params = calloc(1,sizeof(btx_params_t));
|
|
83
|
+
common_data->btx_params = calloc(1, sizeof(btx_params_t));
|
|
84
84
|
common_data->params = params;
|
|
85
85
|
// Read parameters
|
|
86
86
|
btx_populate_params(common_data);
|
data/template/source.c.erb
CHANGED
|
@@ -93,7 +93,7 @@ source_initialize(bt_self_component_source *self_component_source,
|
|
|
93
93
|
const bt_value *params, void *initialize_method_data) {
|
|
94
94
|
/* Allocate a private data structure */
|
|
95
95
|
common_data_t *common_data = calloc(1, sizeof(common_data_t));
|
|
96
|
-
common_data->btx_params = calloc(1,sizeof(btx_params_t));
|
|
96
|
+
common_data->btx_params = calloc(1, sizeof(btx_params_t));
|
|
97
97
|
common_data->params = params;
|
|
98
98
|
// Read parameters
|
|
99
99
|
btx_populate_params(common_data);
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: metababel
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Thomas Applencourt
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2023-05-
|
|
13
|
+
date: 2023-05-03 00:00:00.000000000 Z
|
|
14
14
|
dependencies: []
|
|
15
15
|
description:
|
|
16
16
|
email:
|
|
@@ -55,8 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
55
55
|
- !ruby/object:Gem::Version
|
|
56
56
|
version: '0'
|
|
57
57
|
requirements: []
|
|
58
|
-
|
|
59
|
-
rubygems_version: 2.7.6.3
|
|
58
|
+
rubygems_version: 3.3.3
|
|
60
59
|
signing_key:
|
|
61
60
|
specification_version: 4
|
|
62
61
|
summary: Helper for creation Babeltrace plugins
|