lib: plugin-dev.h: rename `MESSAGE_ITERATOR` -> `MESSAGE_ITERATOR_CLASS`
[babeltrace.git] / include / babeltrace2 / plugin / plugin-dev.h
... / ...
CommitLineData
1#ifndef BABELTRACE2_PLUGIN_PLUGIN_DEV_H
2#define BABELTRACE2_PLUGIN_PLUGIN_DEV_H
3
4/*
5 * Copyright (c) 2010-2019 EfficiOS Inc. and Linux Foundation
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to deal
9 * in the Software without restriction, including without limitation the rights
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 * copies of the Software, and to permit persons to whom the Software is
12 * furnished to do so, subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included in
15 * all copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 * SOFTWARE.
24 */
25
26#ifndef __BT_IN_BABELTRACE_H
27# error "Please include <babeltrace2/babeltrace.h> instead."
28#endif
29
30#include <stdint.h>
31
32#include <babeltrace2/graph/component-class-const.h>
33#include <babeltrace2/graph/component-class-source.h>
34#include <babeltrace2/graph/component-class-filter.h>
35#include <babeltrace2/graph/component-class-sink.h>
36#include <babeltrace2/graph/message-iterator-class.h>
37#include <babeltrace2/types.h>
38
39/*
40 * _BT_HIDDEN: set the hidden attribute for internal functions
41 * On Windows, symbols are local unless explicitly exported,
42 * see https://gcc.gnu.org/wiki/Visibility
43 */
44#if defined(_WIN32) || defined(__CYGWIN__)
45#define _BT_HIDDEN
46#else
47#define _BT_HIDDEN __attribute__((visibility("hidden")))
48#endif
49
50#ifdef __cplusplus
51extern "C" {
52#endif
53
54/* Plugin initialization function type */
55typedef enum bt_plugin_initialize_func_status {
56 BT_PLUGIN_INITIALIZE_FUNC_STATUS_OK = __BT_FUNC_STATUS_OK,
57 BT_PLUGIN_INITIALIZE_FUNC_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
58 BT_PLUGIN_INITIALIZE_FUNC_STATUS_ERROR = __BT_FUNC_STATUS_ERROR,
59} bt_plugin_initialize_func_status;
60
61typedef bt_plugin_initialize_func_status (*bt_plugin_initialize_func)(
62 bt_self_plugin *plugin);
63
64/* Plugin exit function type */
65typedef void (*bt_plugin_finalize_func)(void);
66
67/* Plugin descriptor: describes a single plugin (internal use) */
68struct __bt_plugin_descriptor {
69 /* Plugin's name */
70 const char *name;
71} __attribute__((packed));
72
73/* Type of a plugin attribute (internal use) */
74enum __bt_plugin_descriptor_attribute_type {
75 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_INIT = 0,
76 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_EXIT = 1,
77 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_AUTHOR = 2,
78 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_LICENSE = 3,
79 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION = 4,
80 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION = 5,
81};
82
83/* Plugin (user) version */
84struct __bt_plugin_descriptor_version {
85 uint32_t major;
86 uint32_t minor;
87 uint32_t patch;
88 const char *extra;
89};
90
91/* Plugin attribute (internal use) */
92struct __bt_plugin_descriptor_attribute {
93 /* Plugin descriptor to which to associate this attribute */
94 const struct __bt_plugin_descriptor *plugin_descriptor;
95
96 /* Name of the attribute's type for debug purposes */
97 const char *type_name;
98
99 /* Attribute's type */
100 enum __bt_plugin_descriptor_attribute_type type;
101
102 /* Attribute's value (depends on attribute's type) */
103 union {
104 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_INIT */
105 bt_plugin_initialize_func init;
106
107 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_EXIT */
108 bt_plugin_finalize_func exit;
109
110 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_AUTHOR */
111 const char *author;
112
113 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_LICENSE */
114 const char *license;
115
116 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION */
117 const char *description;
118
119 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION */
120 struct __bt_plugin_descriptor_version version;
121 } value;
122} __attribute__((packed));
123
124/* Component class descriptor (internal use) */
125struct __bt_plugin_component_class_descriptor {
126 /*
127 * Plugin descriptor to which to associate this component
128 * class descriptor.
129 */
130 const struct __bt_plugin_descriptor *plugin_descriptor;
131
132 /* Component class name */
133 const char *name;
134
135 /* Component class type */
136 bt_component_class_type type;
137
138 /* Mandatory methods (depends on component class type) */
139 union {
140 /* BT_COMPONENT_CLASS_TYPE_SOURCE */
141 struct {
142 bt_message_iterator_class_next_method msg_iter_next;
143 } source;
144
145 /* BT_COMPONENT_CLASS_TYPE_FILTER */
146 struct {
147 bt_message_iterator_class_next_method msg_iter_next;
148 } filter;
149
150 /* BT_COMPONENT_CLASS_TYPE_SINK */
151 struct {
152 bt_component_class_sink_consume_method consume;
153 } sink;
154 } methods;
155} __attribute__((packed));
156
157/* Type of a component class attribute (internal use) */
158enum __bt_plugin_component_class_descriptor_attribute_type {
159 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION = 0,
160 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP = 1,
161 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS_METHOD = 2,
162 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD = 3,
163 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD = 4,
164 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD = 5,
165 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_CONNECTED_METHOD = 6,
166 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_CONNECTED_METHOD = 7,
167 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GRAPH_IS_CONFIGURED_METHOD = 8,
168 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INITIALIZE_METHOD = 9,
169 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_FINALIZE_METHOD = 10,
170 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_NS_FROM_ORIGIN_METHOD = 11,
171 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD = 12,
172 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_NS_FROM_ORIGIN_METHOD = 13,
173 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD = 14,
174};
175
176/* Component class attribute (internal use) */
177struct __bt_plugin_component_class_descriptor_attribute {
178 /*
179 * Component class plugin attribute to which to associate this
180 * component class attribute.
181 */
182 const struct __bt_plugin_component_class_descriptor *comp_class_descriptor;
183
184 /* Name of the attribute's type for debug purposes */
185 const char *type_name;
186
187 /* Attribute's type */
188 enum __bt_plugin_component_class_descriptor_attribute_type type;
189
190 /* Attribute's value (depends on attribute's type) */
191 union {
192 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION */
193 const char *description;
194
195 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP */
196 const char *help;
197
198 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS_METHOD */
199 bt_component_class_source_get_supported_mip_versions_method source_get_supported_mip_versions_method;
200 bt_component_class_filter_get_supported_mip_versions_method filter_get_supported_mip_versions_method;
201 bt_component_class_sink_get_supported_mip_versions_method sink_get_supported_mip_versions_method;
202
203 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD */
204 bt_component_class_source_initialize_method source_initialize_method;
205 bt_component_class_filter_initialize_method filter_initialize_method;
206 bt_component_class_sink_initialize_method sink_initialize_method;
207
208 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD */
209 bt_component_class_source_finalize_method source_finalize_method;
210 bt_component_class_filter_finalize_method filter_finalize_method;
211 bt_component_class_sink_finalize_method sink_finalize_method;
212
213 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD */
214 bt_component_class_source_query_method source_query_method;
215 bt_component_class_filter_query_method filter_query_method;
216 bt_component_class_sink_query_method sink_query_method;
217
218 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_CONNECTED_METHOD */
219 bt_component_class_filter_input_port_connected_method filter_input_port_connected_method;
220 bt_component_class_sink_input_port_connected_method sink_input_port_connected_method;
221
222 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_CONNECTED_METHOD */
223 bt_component_class_source_output_port_connected_method source_output_port_connected_method;
224 bt_component_class_filter_output_port_connected_method filter_output_port_connected_method;
225
226 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GRAPH_IS_CONFIGURED_METHOD */
227 bt_component_class_sink_graph_is_configured_method sink_graph_is_configured_method;
228
229 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INITIALIZE_METHOD */
230 bt_message_iterator_class_initialize_method msg_iter_initialize_method;
231
232 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_FINALIZE_METHOD */
233 bt_message_iterator_class_finalize_method msg_iter_finalize_method;
234
235 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_NS_FROM_ORIGIN_METHOD */
236 bt_message_iterator_class_seek_ns_from_origin_method msg_iter_seek_ns_from_origin_method;
237
238 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD */
239 bt_message_iterator_class_seek_beginning_method msg_iter_seek_beginning_method;
240
241 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_NS_FROM_ORIGIN_METHOD */
242 bt_message_iterator_class_can_seek_ns_from_origin_method msg_iter_can_seek_ns_from_origin_method;
243
244 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD */
245 bt_message_iterator_class_can_seek_beginning_method msg_iter_can_seek_beginning_method;
246 } value;
247} __attribute__((packed));
248
249struct __bt_plugin_descriptor const * const *__bt_get_begin_section_plugin_descriptors(void);
250struct __bt_plugin_descriptor const * const *__bt_get_end_section_plugin_descriptors(void);
251struct __bt_plugin_descriptor_attribute const * const *__bt_get_begin_section_plugin_descriptor_attributes(void);
252struct __bt_plugin_descriptor_attribute const * const *__bt_get_end_section_plugin_descriptor_attributes(void);
253struct __bt_plugin_component_class_descriptor const * const *__bt_get_begin_section_component_class_descriptors(void);
254struct __bt_plugin_component_class_descriptor const * const *__bt_get_end_section_component_class_descriptors(void);
255struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_begin_section_component_class_descriptor_attributes(void);
256struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_end_section_component_class_descriptor_attributes(void);
257
258/*
259 * Variable attributes for a plugin descriptor pointer to be added to
260 * the plugin descriptor section (internal use).
261 */
262#ifdef __APPLE__
263#define __BT_PLUGIN_DESCRIPTOR_ATTRS \
264 __attribute__((section("__DATA,btp_desc"), used))
265
266#define __BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL \
267 __start___bt_plugin_descriptors
268
269#define __BT_PLUGIN_DESCRIPTOR_END_SYMBOL \
270 __stop___bt_plugin_descriptors
271
272#define __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA \
273 __asm("section$start$__DATA$btp_desc")
274
275#define __BT_PLUGIN_DESCRIPTOR_END_EXTRA \
276 __asm("section$end$__DATA$btp_desc")
277
278#else
279
280#define __BT_PLUGIN_DESCRIPTOR_ATTRS \
281 __attribute__((section("__bt_plugin_descriptors"), used))
282
283#define __BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL \
284 __start___bt_plugin_descriptors
285
286#define __BT_PLUGIN_DESCRIPTOR_END_SYMBOL \
287 __stop___bt_plugin_descriptors
288
289#define __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA
290
291#define __BT_PLUGIN_DESCRIPTOR_END_EXTRA
292#endif
293
294/*
295 * Variable attributes for a plugin attribute pointer to be added to
296 * the plugin attribute section (internal use).
297 */
298#ifdef __APPLE__
299#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS \
300 __attribute__((section("__DATA,btp_desc_att"), used))
301
302#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
303 __start___bt_plugin_descriptor_attributes
304
305#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
306 __stop___bt_plugin_descriptor_attributes
307
308#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA \
309 __asm("section$start$__DATA$btp_desc_att")
310
311#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA \
312 __asm("section$end$__DATA$btp_desc_att")
313
314#else
315
316#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS \
317 __attribute__((section("__bt_plugin_descriptor_attributes"), used))
318
319#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
320 __start___bt_plugin_descriptor_attributes
321
322#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
323 __stop___bt_plugin_descriptor_attributes
324
325#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA
326
327#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA
328#endif
329
330/*
331 * Variable attributes for a component class descriptor pointer to be
332 * added to the component class descriptor section (internal use).
333 */
334#ifdef __APPLE__
335#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS \
336 __attribute__((section("__DATA,btp_cc_desc"), used))
337
338#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL \
339 __start___bt_plugin_component_class_descriptors
340
341#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL \
342 __stop___bt_plugin_component_class_descriptors
343
344#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA \
345 __asm("section$start$__DATA$btp_cc_desc")
346
347#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA \
348 __asm("section$end$__DATA$btp_cc_desc")
349
350#else
351
352#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS \
353 __attribute__((section("__bt_plugin_component_class_descriptors"), used))
354
355#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL \
356 __start___bt_plugin_component_class_descriptors
357
358#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL \
359 __stop___bt_plugin_component_class_descriptors
360
361#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA
362
363#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA
364#endif
365
366/*
367 * Variable attributes for a component class descriptor attribute
368 * pointer to be added to the component class descriptor attribute
369 * section (internal use).
370 */
371#ifdef __APPLE__
372#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_ATTRS \
373 __attribute__((section("__DATA,btp_cc_desc_att"), used))
374
375#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
376 __start___bt_plugin_component_class_descriptor_attributes
377
378#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
379 __stop___bt_plugin_component_class_descriptor_attributes
380
381#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA \
382 __asm("section$start$__DATA$btp_cc_desc_att")
383
384#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_EXTRA \
385 __asm("section$end$__DATA$btp_cc_desc_att")
386
387#else
388
389#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_ATTRS \
390 __attribute__((section("__bt_plugin_component_class_descriptor_attributes"), used))
391
392#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
393 __start___bt_plugin_component_class_descriptor_attributes
394
395#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
396 __stop___bt_plugin_component_class_descriptor_attributes
397
398#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA
399
400#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_EXTRA
401#endif
402
403/*
404 * Declares a plugin descriptor pointer variable with a custom ID.
405 *
406 * _id: ID (any valid C identifier except `auto`).
407 */
408#define BT_PLUGIN_DECLARE(_id) extern struct __bt_plugin_descriptor __bt_plugin_descriptor_##_id
409
410/*
411 * Defines a plugin descriptor with a custom ID.
412 *
413 * _id: ID (any valid C identifier except `auto`).
414 * _name: Plugin's name (C string).
415 */
416#define BT_PLUGIN_WITH_ID(_id, _name) \
417 struct __bt_plugin_descriptor __bt_plugin_descriptor_##_id = { \
418 .name = _name, \
419 }; \
420 static struct __bt_plugin_descriptor const * const __bt_plugin_descriptor_##_id##_ptr __BT_PLUGIN_DESCRIPTOR_ATTRS = &__bt_plugin_descriptor_##_id
421
422/*
423 * Defines a plugin attribute (generic, internal use).
424 *
425 * _attr_name: Name of the attribute (C identifier).
426 * _attr_type: Type of the attribute (enum __bt_plugin_descriptor_attribute_type).
427 * _id: Plugin descriptor ID (C identifier).
428 * _x: Value.
429 */
430#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(_attr_name, _attr_type, _id, _x) \
431 static struct __bt_plugin_descriptor_attribute __bt_plugin_descriptor_attribute_##_id##_##_attr_name = { \
432 .plugin_descriptor = &__bt_plugin_descriptor_##_id, \
433 .type_name = #_attr_name, \
434 .type = _attr_type, \
435 .value = { ._attr_name = _x }, \
436 }; \
437 static struct __bt_plugin_descriptor_attribute const * const __bt_plugin_descriptor_attribute_##_id##_##_attr_name##_ptr __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS = &__bt_plugin_descriptor_attribute_##_id##_##_attr_name
438
439/*
440 * Defines a plugin initialization function attribute attached to a
441 * specific plugin descriptor.
442 *
443 * _id: Plugin descriptor ID (C identifier).
444 * _x: Initialization function (bt_plugin_initialize_func).
445 */
446#define BT_PLUGIN_INITIALIZE_FUNC_WITH_ID(_id, _x) \
447 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(init, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_INIT, _id, _x)
448
449/*
450 * Defines a plugin exit function attribute attached to a specific
451 * plugin descriptor.
452 *
453 * _id: Plugin descriptor ID (C identifier).
454 * _x: Exit function (bt_plugin_finalize_func).
455 */
456#define BT_PLUGIN_FINALIZE_FUNC_WITH_ID(_id, _x) \
457 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(exit, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_EXIT, _id, _x)
458
459/*
460 * Defines an author attribute attached to a specific plugin descriptor.
461 *
462 * _id: Plugin descriptor ID (C identifier).
463 * _x: Author (C string).
464 */
465#define BT_PLUGIN_AUTHOR_WITH_ID(_id, _x) \
466 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(author, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_AUTHOR, _id, _x)
467
468/*
469 * Defines a license attribute attached to a specific plugin descriptor.
470 *
471 * _id: Plugin descriptor ID (C identifier).
472 * _x: License (C string).
473 */
474#define BT_PLUGIN_LICENSE_WITH_ID(_id, _x) \
475 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(license, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_LICENSE, _id, _x)
476
477/*
478 * Defines a description attribute attached to a specific plugin
479 * descriptor.
480 *
481 * _id: Plugin descriptor ID (C identifier).
482 * _x: Description (C string).
483 */
484#define BT_PLUGIN_DESCRIPTION_WITH_ID(_id, _x) \
485 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _id, _x)
486
487#define __BT_PLUGIN_VERSION_STRUCT_VALUE(_major, _minor, _patch, _extra) \
488 {.major = _major, .minor = _minor, .patch = _patch, .extra = _extra,}
489
490/*
491 * Defines a version attribute attached to a specific plugin descriptor.
492 *
493 * _id: Plugin descriptor ID (C identifier).
494 * _major: Plugin's major version (uint32_t).
495 * _minor: Plugin's minor version (uint32_t).
496 * _patch: Plugin's patch version (uint32_t).
497 * _extra: Plugin's version extra information (C string).
498 */
499#define BT_PLUGIN_VERSION_WITH_ID(_id, _major, _minor, _patch, _extra) \
500 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(version, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION, _id, __BT_PLUGIN_VERSION_STRUCT_VALUE(_major, _minor, _patch, _extra))
501
502/*
503 * Defines a source component class descriptor with a custom ID.
504 *
505 * _id: ID (any valid C identifier except `auto`).
506 * _comp_class_id: Component class ID (C identifier).
507 * _name: Component class name (C string).
508 * _msg_iter_next_method: Component class's iterator next method
509 * (bt_component_class_source_message_iterator_next_method).
510 */
511#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_WITH_ID(_id, _comp_class_id, _name, _msg_iter_next_method) \
512 static struct __bt_plugin_component_class_descriptor __bt_plugin_source_component_class_descriptor_##_id##_##_comp_class_id = { \
513 .plugin_descriptor = &__bt_plugin_descriptor_##_id, \
514 .name = _name, \
515 .type = BT_COMPONENT_CLASS_TYPE_SOURCE, \
516 .methods = { .source = { .msg_iter_next = _msg_iter_next_method } }, \
517 }; \
518 static struct __bt_plugin_component_class_descriptor const * const __bt_plugin_source_component_class_descriptor_##_id##_##_comp_class_id##_ptr __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS = &__bt_plugin_source_component_class_descriptor_##_id##_##_comp_class_id
519
520/*
521 * Defines a filter component class descriptor with a custom ID.
522 *
523 * _id: ID (any valid C identifier except `auto`).
524 * _comp_class_id: Component class ID (C identifier).
525 * _name: Component class name (C string).
526 * _msg_iter_next_method: Component class's iterator next method
527 * (bt_component_class_filter_message_iterator_next_method).
528 */
529#define BT_PLUGIN_FILTER_COMPONENT_CLASS_WITH_ID(_id, _comp_class_id, _name, _msg_iter_next_method) \
530 static struct __bt_plugin_component_class_descriptor __bt_plugin_filter_component_class_descriptor_##_id##_##_comp_class_id = { \
531 .plugin_descriptor = &__bt_plugin_descriptor_##_id, \
532 .name = _name, \
533 .type = BT_COMPONENT_CLASS_TYPE_FILTER, \
534 .methods = { .filter = { .msg_iter_next = _msg_iter_next_method } }, \
535 }; \
536 static struct __bt_plugin_component_class_descriptor const * const __bt_plugin_filter_component_class_descriptor_##_id##_##_comp_class_id##_ptr __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS = &__bt_plugin_filter_component_class_descriptor_##_id##_##_comp_class_id
537
538/*
539 * Defines a sink component class descriptor with a custom ID.
540 *
541 * _id: ID (any valid C identifier except `auto`).
542 * _comp_class_id: Component class ID (C identifier).
543 * _name: Component class name (C string).
544 * _consume_method: Component class's iterator consume method
545 * (bt_component_class_sink_consume_method).
546 */
547#define BT_PLUGIN_SINK_COMPONENT_CLASS_WITH_ID(_id, _comp_class_id, _name, _consume_method) \
548 static struct __bt_plugin_component_class_descriptor __bt_plugin_sink_component_class_descriptor_##_id##_##_comp_class_id = { \
549 .plugin_descriptor = &__bt_plugin_descriptor_##_id, \
550 .name = _name, \
551 .type = BT_COMPONENT_CLASS_TYPE_SINK, \
552 .methods = { .sink = { .consume = _consume_method } }, \
553 }; \
554 static struct __bt_plugin_component_class_descriptor const * const __bt_plugin_sink_component_class_descriptor_##_id##_##_comp_class_id##_ptr __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS = &__bt_plugin_sink_component_class_descriptor_##_id##_##_comp_class_id
555
556/*
557 * Defines a component class descriptor attribute (generic, internal
558 * use).
559 *
560 * _id: Plugin descriptor ID (C identifier).
561 * _comp_class_id: Component class ID (C identifier).
562 * _type: Component class type (`source`, `filter`, or `sink`).
563 * _attr_name: Name of the attribute (C identifier).
564 * _attr_type: Type of the attribute
565 * (enum __bt_plugin_descriptor_attribute_type).
566 * _x: Value.
567 */
568#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(_attr_name, _attr_type, _id, _comp_class_id, _type, _x) \
569 static struct __bt_plugin_component_class_descriptor_attribute __bt_plugin_##_type##_component_class_descriptor_attribute_##_id##_##_comp_class_id##_##_attr_name = { \
570 .comp_class_descriptor = &__bt_plugin_##_type##_component_class_descriptor_##_id##_##_comp_class_id, \
571 .type_name = #_attr_name, \
572 .type = _attr_type, \
573 .value = { ._attr_name = _x }, \
574 }; \
575 static struct __bt_plugin_component_class_descriptor_attribute const * const __bt_plugin_##_type##_component_class_descriptor_attribute_##_id##_##_comp_class_id##_##_attr_name##_ptr __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_ATTRS = &__bt_plugin_##_type##_component_class_descriptor_attribute_##_id##_##_comp_class_id##_##_attr_name
576
577/*
578 * Defines a description attribute attached to a specific source
579 * component class descriptor.
580 *
581 * _id: Plugin descriptor ID (C identifier).
582 * _comp_class_id: Component class descriptor ID (C identifier).
583 * _x: Description (C string).
584 */
585#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION_WITH_ID(_id, _comp_class_id, _x) \
586 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _id, _comp_class_id, source, _x)
587
588/*
589 * Defines a description attribute attached to a specific filter
590 * component class descriptor.
591 *
592 * _id: Plugin descriptor ID (C identifier).
593 * _comp_class_id: Component class descriptor ID (C identifier).
594 * _x: Description (C string).
595 */
596#define BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION_WITH_ID(_id, _comp_class_id, _x) \
597 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _id, _comp_class_id, filter, _x)
598
599/*
600 * Defines a description attribute attached to a specific sink
601 * component class descriptor.
602 *
603 * _id: Plugin descriptor ID (C identifier).
604 * _comp_class_id: Component class descriptor ID (C identifier).
605 * _x: Description (C string).
606 */
607#define BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION_WITH_ID(_id, _comp_class_id, _x) \
608 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _id, _comp_class_id, sink, _x)
609
610/*
611 * Defines a help attribute attached to a specific source component
612 * class descriptor.
613 *
614 * _id: Plugin descriptor ID (C identifier).
615 * _comp_class_id: Component class descriptor ID (C identifier).
616 * _x: Help (C string).
617 */
618#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP_WITH_ID(_id, _comp_class_id, _x) \
619 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(help, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP, _id, _comp_class_id, source, _x)
620
621/*
622 * Defines a help attribute attached to a specific filter component
623 * class descriptor.
624 *
625 * _id: Plugin descriptor ID (C identifier).
626 * _comp_class_id: Component class descriptor ID (C identifier).
627 * _x: Help (C string).
628 */
629#define BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP_WITH_ID(_id, _comp_class_id, _x) \
630 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(help, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP, _id, _comp_class_id, filter, _x)
631
632/*
633 * Defines a help attribute attached to a specific sink component class
634 * descriptor.
635 *
636 * _id: Plugin descriptor ID (C identifier).
637 * _comp_class_id: Component class descriptor ID (C identifier).
638 * _x: Help (C string).
639 */
640#define BT_PLUGIN_SINK_COMPONENT_CLASS_HELP_WITH_ID(_id, _comp_class_id, _x) \
641 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(help, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP, _id, _comp_class_id, sink, _x)
642
643/*
644 * Defines an initialization method attribute attached to a specific
645 * source component class descriptor.
646 *
647 * _id: Plugin descriptor ID (C identifier).
648 * _comp_class_id: Component class descriptor ID (C identifier).
649 * _x: Initialization method (bt_component_class_source_initialize_method).
650 */
651#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
652 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD, _id, _comp_class_id, source, _x)
653
654/*
655 * Defines an initialization method attribute attached to a specific
656 * filter component class descriptor.
657 *
658 * _id: Plugin descriptor ID (C identifier).
659 * _comp_class_id: Component class descriptor ID (C identifier).
660 * _x: Initialization method (bt_component_class_filter_initialize_method).
661 */
662#define BT_PLUGIN_FILTER_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
663 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD, _id, _comp_class_id, filter, _x)
664
665/*
666 * Defines an initialization method attribute attached to a specific
667 * sink component class descriptor.
668 *
669 * _id: Plugin descriptor ID (C identifier).
670 * _comp_class_id: Component class descriptor ID (C identifier).
671 * _x: Initialization method (bt_component_class_sink_initialize_method).
672 */
673#define BT_PLUGIN_SINK_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
674 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD, _id, _comp_class_id, sink, _x)
675
676/*
677 * Defines a "get supported MIP versions" attribute attached to a
678 * specific source component class descriptor.
679 *
680 * _id: Plugin descriptor ID (C identifier).
681 * _comp_class_id: Component class descriptor ID (C identifier).
682 * _x: "Get supported MIP versions" method (bt_component_class_source_get_supported_mip_versions_method).
683 */
684#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_WITH_ID(_id, _comp_class_id, _x) \
685 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_get_supported_mip_versions_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS, _id, _comp_class_id, source, _x)
686
687/*
688 * Defines a "get supported MIP versions" attribute attached to a
689 * specific filter component class descriptor.
690 *
691 * _id: Plugin descriptor ID (C identifier).
692 * _comp_class_id: Component class descriptor ID (C identifier).
693 * _x: "Get supported MIP versions" method (bt_component_class_filter_get_supported_mip_versions_method).
694 */
695#define BT_PLUGIN_FILTER_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_WITH_ID(_id, _comp_class_id, _x) \
696 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_get_supported_mip_versions_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS, _id, _comp_class_id, filter, _x)
697
698/*
699 * Defines a "get supported MIP versions" attribute attached to a
700 * specific sink component class descriptor.
701 *
702 * _id: Plugin descriptor ID (C identifier).
703 * _comp_class_id: Component class descriptor ID (C identifier).
704 * _x: "Get supported MIP versions" method (bt_component_class_sink_get_supported_mip_versions_method).
705 */
706#define BT_PLUGIN_SINK_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_WITH_ID(_id, _comp_class_id, _x) \
707 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_get_supported_mip_versions_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS, _id, _comp_class_id, sink, _x)
708
709/*
710 * Defines a finalization method attribute attached to a specific source
711 * component class descriptor.
712 *
713 * _id: Plugin descriptor ID (C identifier).
714 * _comp_class_id: Component class descriptor ID (C identifier).
715 * _x: Finalize method (bt_component_class_source_finalize_method).
716 */
717#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
718 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _id, _comp_class_id, source, _x)
719
720/*
721 * Defines a finalization method attribute attached to a specific filter
722 * component class descriptor.
723 *
724 * _id: Plugin descriptor ID (C identifier).
725 * _comp_class_id: Component class descriptor ID (C identifier).
726 * _x: Finalize method (bt_component_class_filter_finalize_method).
727 */
728#define BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
729 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _id, _comp_class_id, filter, _x)
730
731/*
732 * Defines a finalization method attribute attached to a specific sink
733 * component class descriptor.
734 *
735 * _id: Plugin descriptor ID (C identifier).
736 * _comp_class_id: Component class descriptor ID (C identifier).
737 * _x: Finalize method (bt_component_class_sink_finalize_method).
738 */
739#define BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
740 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _id, _comp_class_id, sink, _x)
741
742/*
743 * Defines a query method attribute attached to a specific source
744 * component class descriptor.
745 *
746 * _id: Plugin descriptor ID (C identifier).
747 * _comp_class_id: Component class descriptor ID (C identifier).
748 * _x: Finalize method (bt_component_class_source_query_method).
749 */
750#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_id, _comp_class_id, _x) \
751 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _id, _comp_class_id, source, _x)
752
753/*
754 * Defines a query method attribute attached to a specific filter
755 * component class descriptor.
756 *
757 * _id: Plugin descriptor ID (C identifier).
758 * _comp_class_id: Component class descriptor ID (C identifier).
759 * _x: Finalize method (bt_component_class_filter_query_method).
760 */
761#define BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_id, _comp_class_id, _x) \
762 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _id, _comp_class_id, filter, _x)
763
764/*
765 * Defines a query method attribute attached to a specific sink
766 * component class descriptor.
767 *
768 * _id: Plugin descriptor ID (C identifier).
769 * _comp_class_id: Component class descriptor ID (C identifier).
770 * _x: Finalize method (bt_component_class_sink_query_method).
771 */
772#define BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_id, _comp_class_id, _x) \
773 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _id, _comp_class_id, sink, _x)
774
775/*
776 * Defines an input port connected method attribute attached to a
777 * specific filter component class descriptor.
778 *
779 * _id: Plugin descriptor ID (C identifier).
780 * _comp_class_id: Component class descriptor ID (C identifier).
781 * _x: Port connected method
782 * (bt_component_class_filter_input_port_connected_method).
783 */
784#define BT_PLUGIN_FILTER_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
785 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_input_port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_CONNECTED_METHOD, _id, _comp_class_id, filter, _x)
786
787/*
788 * Defines an input port connected method attribute attached to a
789 * specific sink component class descriptor.
790 *
791 * _id: Plugin descriptor ID (C identifier).
792 * _comp_class_id: Component class descriptor ID (C identifier).
793 * _x: Port connected method
794 * (bt_component_class_sink_input_port_connected_method).
795 */
796#define BT_PLUGIN_SINK_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
797 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_input_port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_CONNECTED_METHOD, _id, _comp_class_id, sink, _x)
798
799/*
800 * Defines an output port connected method attribute attached to a
801 * specific source component class descriptor.
802 *
803 * _id: Plugin descriptor ID (C identifier).
804 * _comp_class_id: Component class descriptor ID (C identifier).
805 * _x: Port connected method
806 * (bt_component_class_source_output_port_connected_method).
807 */
808#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
809 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_output_port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_CONNECTED_METHOD, _id, _comp_class_id, source, _x)
810
811/*
812 * Defines an output port connected method attribute attached to a
813 * specific filter component class descriptor.
814 *
815 * _id: Plugin descriptor ID (C identifier).
816 * _comp_class_id: Component class descriptor ID (C identifier).
817 * _x: Port connected method
818 * (bt_component_class_filter_output_port_connected_method).
819 */
820#define BT_PLUGIN_FILTER_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
821 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_output_port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_CONNECTED_METHOD, _id, _comp_class_id, filter, _x)
822
823/*
824 * Defines a "graph is configured" method attribute attached to a
825 * specific sink component class descriptor.
826 *
827 * _id: Plugin descriptor ID (C identifier).
828 * _comp_class_id: Component class descriptor ID (C identifier).
829 * _x: "Graph is configured" method
830 * (bt_component_class_sink_graph_is_configured_method).
831 */
832#define BT_PLUGIN_SINK_COMPONENT_CLASS_GRAPH_IS_CONFIGURED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
833 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_graph_is_configured_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GRAPH_IS_CONFIGURED_METHOD, _id, _comp_class_id, sink, _x)
834
835/*
836 * Defines an iterator initialization method attribute attached to a
837 * specific source component class descriptor.
838 *
839 * _id: Plugin descriptor ID (C identifier).
840 * _comp_class_id: Component class descriptor ID (C identifier).
841 * _x: Iterator initialization method
842 * (bt_component_class_source_message_iterator_initialize_method).
843 */
844#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
845 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INITIALIZE_METHOD, _id, _comp_class_id, source, _x)
846
847/*
848 * Defines an iterator finalize method attribute attached to a specific
849 * source component class descriptor.
850 *
851 * _id: Plugin descriptor ID (C identifier).
852 * _comp_class_id: Component class descriptor ID (C identifier).
853 * _x: Iterator finalize method
854 * (bt_component_class_source_message_iterator_finalize_method).
855 */
856#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
857 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_FINALIZE_METHOD, _id, _comp_class_id, source, _x)
858
859/*
860 * Defines an iterator "seek nanoseconds from origin" and "can seek nanoseconds
861 * from origin" method attributes attached to a specific source component class
862 * descriptor.
863 *
864 * _id: Plugin descriptor ID (C identifier).
865 * _comp_class_id: Component class descriptor ID (C identifier).
866 * _seek_method: Iterator "seek nanoseconds from origin" method
867 * (bt_component_class_source_message_iterator_seek_ns_from_origin_method).
868 * _can_seek_method: Iterator "can seek nanoseconds from origin" method
869 * (bt_component_class_source_message_iterator_can_seek_ns_from_origin_method).
870 */
871#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS_WITH_ID(_id, _comp_class_id, _seek_method, _can_seek_method) \
872 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_seek_ns_from_origin_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_NS_FROM_ORIGIN_METHOD, _id, _comp_class_id, source, _seek_method); \
873 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_can_seek_ns_from_origin_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_NS_FROM_ORIGIN_METHOD, _id, _comp_class_id, source, _can_seek_method)
874
875/*
876 * Defines an iterator "seek beginning" and "can seek beginning" method
877 * attributes attached to a specific source component class descriptor.
878 *
879 * _id: Plugin descriptor ID (C identifier).
880 * _comp_class_id: Component class descriptor ID (C identifier).
881 * _seek_method: Iterator "seek beginning" method
882 * (bt_component_class_source_message_iterator_seek_beginning_method).
883 * _can_seek_method: Iterator "can seek beginning" method
884 * (bt_component_class_source_message_iterator_can_seek_beginning_method).
885 */
886#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS_WITH_ID(_id, _comp_class_id, _seek_method, _can_seek_method) \
887 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD, _id, _comp_class_id, source, _seek_method); \
888 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_can_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD, _id, _comp_class_id, source, _can_seek_method)
889
890/*
891 * Defines an iterator initialization method attribute attached to a
892 * specific filter component class descriptor.
893 *
894 * _id: Plugin descriptor ID (C identifier).
895 * _comp_class_id: Component class descriptor ID (C identifier).
896 * _x: Iterator initialization method
897 * (bt_component_class_filter_message_iterator_initialize_method).
898 */
899#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
900 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INITIALIZE_METHOD, _id, _comp_class_id, filter, _x)
901
902/*
903 * Defines an iterator finalize method attribute attached to a specific
904 * filter component class descriptor.
905 *
906 * _id: Plugin descriptor ID (C identifier).
907 * _comp_class_id: Component class descriptor ID (C identifier).
908 * _x: Iterator finalize method
909 * (bt_component_class_filter_message_iterator_finalize_method).
910 */
911#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
912 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_FINALIZE_METHOD, _id, _comp_class_id, filter, _x)
913
914/*
915 * Defines an iterator "seek nanoseconds" and "can seek nanoseconds from origin"
916 * method attributes attached to a specific filter component class descriptor.
917 *
918 * _id: Plugin descriptor ID (C identifier).
919 * _comp_class_id: Component class descriptor ID (C identifier).
920 * _seek_method: Iterator "seek nanoseconds from origin" method
921 * (bt_component_class_filter_message_iterator_seek_ns_from_origin_method).
922 * _can_seek_method: Iterator "can seek nanoseconds from origin" method
923 * (bt_component_class_filter_message_iterator_can_seek_ns_from_origin_method).
924 */
925#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS_WITH_ID(_id, _comp_class_id, _seek_method, _can_seek_method) \
926 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_seek_ns_from_origin_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_NS_FROM_ORIGIN_METHOD, _id, _comp_class_id, filter, _seek_method); \
927 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_can_seek_ns_from_origin_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_NS_FROM_ORIGIN_METHOD, _id, _comp_class_id, filter, _can_seek_method)
928
929/*
930 * Defines an iterator "seek beginning" and "can seek beginning" method
931 * attributes attached to a specific filter component class descriptor.
932 *
933 * _id: Plugin descriptor ID (C identifier).
934 * _comp_class_id: Component class descriptor ID (C identifier).
935 * _seek_method: Iterator "seek beginning" method
936 * (bt_component_class_filter_message_iterator_seek_beginning_method).
937 * _can_seek_method: Iterator "can seek beginning" method
938 * (bt_component_class_filter_message_iterator_can_seek_beginning_method).
939 */
940#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS_WITH_ID(_id, _comp_class_id, _seek_method, _can_seek_method) \
941 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD, _id, _comp_class_id, filter, _seek_method); \
942 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_can_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD, _id, _comp_class_id, filter, _can_seek_method);
943
944/*
945 * Defines a plugin descriptor with an automatic ID.
946 *
947 * _name: Plugin's name (C string).
948 */
949#define BT_PLUGIN(_name) static BT_PLUGIN_WITH_ID(auto, #_name)
950
951/*
952 * Defines a plugin initialization function attribute attached to the
953 * automatic plugin descriptor.
954 *
955 * _x: Initialization function (bt_plugin_initialize_func).
956 */
957#define BT_PLUGIN_INITIALIZE_FUNC(_x) BT_PLUGIN_INITIALIZE_FUNC_WITH_ID(auto, _x)
958
959 /*
960 * Defines a plugin exit function attribute attached to the automatic
961 * plugin descriptor.
962 *
963 * _x: Exit function (bt_plugin_finalize_func).
964 */
965#define BT_PLUGIN_FINALIZE_FUNC(_x) BT_PLUGIN_FINALIZE_FUNC_WITH_ID(auto, _x)
966
967/*
968 * Defines an author attribute attached to the automatic plugin
969 * descriptor.
970 *
971 * _x: Author (C string).
972 */
973#define BT_PLUGIN_AUTHOR(_x) BT_PLUGIN_AUTHOR_WITH_ID(auto, _x)
974
975/*
976 * Defines a license attribute attached to the automatic plugin
977 * descriptor.
978 *
979 * _x: License (C string).
980 */
981#define BT_PLUGIN_LICENSE(_x) BT_PLUGIN_LICENSE_WITH_ID(auto, _x)
982
983/*
984 * Defines a description attribute attached to the automatic plugin
985 * descriptor.
986 *
987 * _x: Description (C string).
988 */
989#define BT_PLUGIN_DESCRIPTION(_x) BT_PLUGIN_DESCRIPTION_WITH_ID(auto, _x)
990
991/*
992 * Defines a version attribute attached to the automatic plugin
993 * descriptor.
994 *
995 * _major: Plugin's major version (uint32_t).
996 * _minor: Plugin's minor version (uint32_t).
997 * _patch: Plugin's patch version (uint32_t).
998 * _extra: Plugin's version extra information (C string).
999 */
1000#define BT_PLUGIN_VERSION(_major, _minor, _patch, _extra) BT_PLUGIN_VERSION_WITH_ID(auto, _major, _minor, _patch, _extra)
1001
1002/*
1003 * Defines a source component class attached to the automatic plugin
1004 * descriptor. Its ID is the same as its name, hence its name must be a
1005 * C identifier in this version.
1006 *
1007 * _name: Component class name (C identifier).
1008 * _msg_iter_next_method: Component class's iterator next method
1009 * (bt_component_class_source_message_iterator_next_method).
1010 */
1011#define BT_PLUGIN_SOURCE_COMPONENT_CLASS(_name, _msg_iter_next_method) \
1012 BT_PLUGIN_SOURCE_COMPONENT_CLASS_WITH_ID(auto, _name, #_name, _msg_iter_next_method)
1013
1014/*
1015 * Defines a filter component class attached to the automatic plugin
1016 * descriptor. Its ID is the same as its name, hence its name must be a
1017 * C identifier in this version.
1018 *
1019 * _name: Component class name (C identifier).
1020 * _msg_iter_next_method: Component class's iterator next method
1021 * (bt_component_class_filter_message_iterator_next_method).
1022 */
1023#define BT_PLUGIN_FILTER_COMPONENT_CLASS(_name, _msg_iter_next_method) \
1024 BT_PLUGIN_FILTER_COMPONENT_CLASS_WITH_ID(auto, _name, #_name, _msg_iter_next_method)
1025
1026/*
1027 * Defines a sink component class attached to the automatic plugin
1028 * descriptor. Its ID is the same as its name, hence its name must be a
1029 * C identifier in this version.
1030 *
1031 * _name: Component class name (C identifier).
1032 * _consume_method: Component class's consume method
1033 * (bt_component_class_sink_consume_method).
1034 */
1035#define BT_PLUGIN_SINK_COMPONENT_CLASS(_name, _consume_method) \
1036 BT_PLUGIN_SINK_COMPONENT_CLASS_WITH_ID(auto, _name, #_name, _consume_method)
1037
1038/*
1039 * Defines a description attribute attached to a source component class
1040 * descriptor which is attached to the automatic plugin descriptor.
1041 *
1042 * _name: Component class name (C identifier).
1043 * _x: Description (C string).
1044 */
1045#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION(_name, _x) \
1046 BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _x)
1047
1048/*
1049 * Defines a description attribute attached to a filter component class
1050 * descriptor which is attached to the automatic plugin descriptor.
1051 *
1052 * _name: Component class name (C identifier).
1053 * _x: Description (C string).
1054 */
1055#define BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION(_name, _x) \
1056 BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _x)
1057
1058/*
1059 * Defines a description attribute attached to a sink component class
1060 * descriptor which is attached to the automatic plugin descriptor.
1061 *
1062 * _name: Component class name (C identifier).
1063 * _x: Description (C string).
1064 */
1065#define BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION(_name, _x) \
1066 BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _x)
1067
1068/*
1069 * Defines a help attribute attached to a source component class
1070 * descriptor which is attached to the automatic plugin descriptor.
1071 *
1072 * _name: Component class name (C identifier).
1073 * _x: Help (C string).
1074 */
1075#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP(_name, _x) \
1076 BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _x)
1077
1078/*
1079 * Defines a help attribute attached to a filter component class
1080 * descriptor which is attached to the automatic plugin descriptor.
1081 *
1082 * _name: Component class name (C identifier).
1083 * _x: Help (C string).
1084 */
1085#define BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP(_name, _x) \
1086 BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _x)
1087
1088/*
1089 * Defines a help attribute attached to a sink component class
1090 * descriptor which is attached to the automatic plugin descriptor.
1091 *
1092 * _name: Component class name (C identifier).
1093 * _x: Help (C string).
1094 */
1095#define BT_PLUGIN_SINK_COMPONENT_CLASS_HELP(_name, _x) \
1096 BT_PLUGIN_SINK_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _x)
1097
1098/*
1099 * Defines an initialization method attribute attached to a source
1100 * component class descriptor which is attached to the automatic plugin
1101 * descriptor.
1102 *
1103 * _name: Component class name (C identifier).
1104 * _x: Initialization method (bt_component_class_source_initialize_method).
1105 */
1106#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_INITIALIZE_METHOD(_name, _x) \
1107 BT_PLUGIN_SOURCE_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _x)
1108
1109/*
1110 * Defines an initialization method attribute attached to a filter
1111 * component class descriptor which is attached to the automatic plugin
1112 * descriptor.
1113 *
1114 * _name: Component class name (C identifier).
1115 * _x: Initialization method (bt_component_class_filter_initialize_method).
1116 */
1117#define BT_PLUGIN_FILTER_COMPONENT_CLASS_INITIALIZE_METHOD(_name, _x) \
1118 BT_PLUGIN_FILTER_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _x)
1119
1120/*
1121 * Defines an initialization method attribute attached to a sink
1122 * component class descriptor which is attached to the automatic plugin
1123 * descriptor.
1124 *
1125 * _name: Component class name (C identifier).
1126 * _x: Initialization method (bt_component_class_sink_initialize_method).
1127 */
1128#define BT_PLUGIN_SINK_COMPONENT_CLASS_INITIALIZE_METHOD(_name, _x) \
1129 BT_PLUGIN_SINK_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _x)
1130
1131/*
1132 * Defines a "get supported MIP versions" method attribute attached to a
1133 * source component class descriptor which is attached to the automatic
1134 * plugin descriptor.
1135 *
1136 * _name: Component class name (C identifier).
1137 * _x: Initialization method (bt_component_class_source_get_supported_mip_versions_method).
1138 */
1139#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD(_name, _x) \
1140 BT_PLUGIN_SOURCE_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(auto, _name, _x)
1141
1142/*
1143 * Defines a "get supported MIP versions" method attribute attached to a
1144 * filter component class descriptor which is attached to the automatic
1145 * plugin descriptor.
1146 *
1147 * _name: Component class name (C identifier).
1148 * _x: Initialization method (bt_component_class_filter_get_supported_mip_versions_method).
1149 */
1150#define BT_PLUGIN_FILTER_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD(_name, _x) \
1151 BT_PLUGIN_FILTER_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(auto, _name, _x)
1152
1153/*
1154 * Defines a "get supported MIP versions" method attribute attached to a
1155 * sink component class descriptor which is attached to the automatic
1156 * plugin descriptor.
1157 *
1158 * _name: Component class name (C identifier).
1159 * _x: Initialization method (bt_component_class_sink_get_supported_mip_versions_method).
1160 */
1161#define BT_PLUGIN_SINK_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD(_name, _x) \
1162 BT_PLUGIN_SINK_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(auto, _name, _x)
1163
1164/*
1165 * Defines a finalization method attribute attached to a source component
1166 * class descriptor which is attached to the automatic plugin
1167 * descriptor.
1168 *
1169 * _name: Component class name (C identifier).
1170 * _x: Initialization method (bt_component_class_source_finalize_method).
1171 */
1172#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD(_name, _x) \
1173 BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1174
1175/*
1176 * Defines a finalization method attribute attached to a filter component
1177 * class descriptor which is attached to the automatic plugin
1178 * descriptor.
1179 *
1180 * _name: Component class name (C identifier).
1181 * _x: Initialization method (bt_component_class_filter_finalize_method).
1182 */
1183#define BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD(_name, _x) \
1184 BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1185
1186/*
1187 * Defines a finalization method attribute attached to a sink component class
1188 * descriptor which is attached to the automatic plugin descriptor.
1189 *
1190 * _name: Component class name (C identifier).
1191 * _x: Initialization method (bt_component_class_sink_finalize_method).
1192 */
1193#define BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD(_name, _x) \
1194 BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1195
1196/*
1197 * Defines a query method attribute attached to a source component
1198 * class descriptor which is attached to the automatic plugin
1199 * descriptor.
1200 *
1201 * _name: Component class name (C identifier).
1202 * _x: Initialization method (bt_component_class_source_query_method).
1203 */
1204#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD(_name, _x) \
1205 BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _x)
1206
1207/*
1208 * Defines a query method attribute attached to a filter component
1209 * class descriptor which is attached to the automatic plugin
1210 * descriptor.
1211 *
1212 * _name: Component class name (C identifier).
1213 * _x: Initialization method (bt_component_class_filter_query_method).
1214 */
1215#define BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD(_name, _x) \
1216 BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _x)
1217
1218/*
1219 * Defines a query method attribute attached to a sink component
1220 * class descriptor which is attached to the automatic plugin
1221 * descriptor.
1222 *
1223 * _name: Component class name (C identifier).
1224 * _x: Initialization method (bt_component_class_sink_query_method).
1225 */
1226#define BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD(_name, _x) \
1227 BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _x)
1228
1229/*
1230 * Defines an input port connected method attribute attached to a filter
1231 * component class descriptor which is attached to the automatic plugin
1232 * descriptor.
1233 *
1234 * _name: Component class name (C identifier).
1235 * _x: Port connected (bt_component_class_filter_input_port_connected_method).
1236 */
1237#define BT_PLUGIN_FILTER_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD(_name, _x) \
1238 BT_PLUGIN_FILTER_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _x)
1239
1240/*
1241 * Defines an input port connected method attribute attached to a sink
1242 * component class descriptor which is attached to the automatic plugin
1243 * descriptor.
1244 *
1245 * _name: Component class name (C identifier).
1246 * _x: Port connected (bt_component_class_sink_input_port_connected_method).
1247 */
1248#define BT_PLUGIN_SINK_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD(_name, _x) \
1249 BT_PLUGIN_SINK_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _x)
1250
1251/*
1252 * Defines an output port connected method attribute attached to a source
1253 * component class descriptor which is attached to the automatic plugin
1254 * descriptor.
1255 *
1256 * _name: Component class name (C identifier).
1257 * _x: Port connected (bt_component_class_source_output_port_connected_method).
1258 */
1259#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD(_name, _x) \
1260 BT_PLUGIN_SOURCE_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _x)
1261
1262/*
1263 * Defines an output port connected method attribute attached to a filter
1264 * component class descriptor which is attached to the automatic plugin
1265 * descriptor.
1266 *
1267 * _name: Component class name (C identifier).
1268 * _x: Port connected (bt_component_class_filter_output_port_connected_method).
1269 */
1270#define BT_PLUGIN_FILTER_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD(_name, _x) \
1271 BT_PLUGIN_FILTER_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _x)
1272
1273/*
1274 * Defines a "graph is configured" method attribute attached to
1275 * a sink component class descriptor which is attached to the automatic
1276 * plugin descriptor.
1277 *
1278 * _name: Component class name (C identifier).
1279 * _x: "Graph is configured" method
1280 * (bt_component_class_sink_graph_is_configured_method).
1281 */
1282#define BT_PLUGIN_SINK_COMPONENT_CLASS_GRAPH_IS_CONFIGURED_METHOD(_name, _x) \
1283 BT_PLUGIN_SINK_COMPONENT_CLASS_GRAPH_IS_CONFIGURED_METHOD_WITH_ID(auto, _name, _x)
1284
1285/*
1286 * Defines an iterator initialization method attribute attached to a
1287 * source component class descriptor which is attached to the automatic
1288 * plugin descriptor.
1289 *
1290 * _name: Component class name (C identifier).
1291 * _x: Iterator initialization method
1292 * (bt_component_class_source_message_iterator_initialize_method).
1293 */
1294#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD(_name, _x) \
1295 BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _x)
1296
1297/*
1298 * Defines an iterator finalize method attribute attached to a source
1299 * component class descriptor which is attached to the automatic plugin
1300 * descriptor.
1301 *
1302 * _name: Component class name (C identifier).
1303 * _x: Iterator finalize method
1304 * (bt_component_class_source_message_iterator_finalize_method).
1305 */
1306#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD(_name, _x) \
1307 BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1308
1309/*
1310 * Defines an iterator "seek nanoseconds from origin" and "can seek nanoseconds
1311 * from origin" method attributes attached to a source component class
1312 * descriptor which is attached to the automatic plugin descriptor.
1313 *
1314 * _name: Component class name (C identifier).
1315 * _seek_method: Iterator "seek nanoseconds from origin" method
1316 * (bt_component_class_source_message_iterator_seek_ns_from_origin_method).
1317 * _can_seek_method: Iterator "can seek nanoseconds from origin" method
1318 * (bt_component_class_source_message_iterator_can_seek_ns_from_origin_method).
1319 */
1320#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS(_name, _seek_method, _can_seek_method) \
1321 BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS_WITH_ID(auto, _name, _seek_method, _can_seek_method)
1322
1323/*
1324 * Defines an iterator "seek beginning" and "can seek beginning" method
1325 * attributes attached to a source component class descriptor which is attached
1326 * to the automatic plugin descriptor.
1327 *
1328 * _name: Component class name (C identifier).
1329 * _seek_method: Iterator "can seek beginning" method
1330 * (bt_component_class_source_message_iterator_can_seek_beginning_method).
1331 * _can_seek_method: Iterator "can seek beginning" method
1332 * (bt_component_class_source_message_iterator_seek_beginning_method).
1333 */
1334#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS(_name, _seek_method, _can_seek_method) \
1335 BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS_WITH_ID(auto, _name, _seek_method, _can_seek_method)
1336
1337/*
1338 * Defines an iterator initialization method attribute attached to a
1339 * filter component class descriptor which is attached to the automatic
1340 * plugin descriptor.
1341 *
1342 * _name: Component class name (C identifier).
1343 * _x: Iterator initialization method
1344 * (bt_component_class_filter_message_iterator_initialize_method).
1345 */
1346#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD(_name, _x) \
1347 BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _x)
1348
1349/*
1350 * Defines an iterator finalize method attribute attached to a filter
1351 * component class descriptor which is attached to the automatic plugin
1352 * descriptor.
1353 *
1354 * _name: Component class name (C identifier).
1355 * _x: Iterator finalize method
1356 * (bt_component_class_filter_message_iterator_finalize_method).
1357 */
1358#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD(_name, _x) \
1359 BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1360
1361/*
1362 * Defines an iterator "seek nanosecconds from origin" and "can seek
1363 * nanoseconds from origin" method attributes attached to a filter component
1364 * class descriptor which is attached to the automatic plugin descriptor.
1365 *
1366 * _name: Component class name (C identifier).
1367 * _seek_method: Iterator "seek nanoseconds from origin" method
1368 * (bt_component_class_filter_message_iterator_seek_ns_from_origin_method).
1369 * _can_seek_method: Iterator "can seek nanoseconds from origin" method
1370 * (bt_component_class_filter_message_iterator_can_seek_ns_from_origin_method).
1371 */
1372#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS(_name, _seek_method, _can_seek_method) \
1373 BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS_WITH_ID(auto, _name, _seek_method, _can_seek_method)
1374
1375/*
1376 * Defines an iterator "seek beginning" and "can seek beginning" method
1377 * attributes attached to a filter component class descriptor which is attached
1378 * to the automatic plugin descriptor.
1379 *
1380 * _name: Component class name (C identifier).
1381 * _seek_method: Iterator "seek beginning" method
1382 * (bt_component_class_filter_message_iterator_seek_beginning_method).
1383 * _can_seek_method: Iterator "can seek beginning" method
1384 * (bt_component_class_filter_message_iterator_can_seek_beginning_method).
1385 */
1386#define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS(_name, _seek_method, _can_seek_method) \
1387 BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS_WITH_ID(auto, _name, _seek_method, _can_seek_method)
1388
1389#define BT_PLUGIN_MODULE() \
1390 static struct __bt_plugin_descriptor const * const __bt_plugin_descriptor_dummy __BT_PLUGIN_DESCRIPTOR_ATTRS = NULL; \
1391 _BT_HIDDEN extern struct __bt_plugin_descriptor const *__BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA; \
1392 _BT_HIDDEN extern struct __bt_plugin_descriptor const *__BT_PLUGIN_DESCRIPTOR_END_SYMBOL __BT_PLUGIN_DESCRIPTOR_END_EXTRA; \
1393 \
1394 static struct __bt_plugin_descriptor_attribute const * const __bt_plugin_descriptor_attribute_dummy __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS = NULL; \
1395 _BT_HIDDEN extern struct __bt_plugin_descriptor_attribute const *__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA; \
1396 _BT_HIDDEN extern struct __bt_plugin_descriptor_attribute const *__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA; \
1397 \
1398 static struct __bt_plugin_component_class_descriptor const * const __bt_plugin_component_class_descriptor_dummy __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS = NULL; \
1399 _BT_HIDDEN extern struct __bt_plugin_component_class_descriptor const *__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA; \
1400 _BT_HIDDEN extern struct __bt_plugin_component_class_descriptor const *__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA; \
1401 \
1402 static struct __bt_plugin_component_class_descriptor_attribute const * const __bt_plugin_component_class_descriptor_attribute_dummy __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_ATTRS = NULL; \
1403 _BT_HIDDEN extern struct __bt_plugin_component_class_descriptor_attribute const *__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA; \
1404 _BT_HIDDEN extern struct __bt_plugin_component_class_descriptor_attribute const *__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_EXTRA; \
1405 \
1406 struct __bt_plugin_descriptor const * const *__bt_get_begin_section_plugin_descriptors(void) \
1407 { \
1408 return &__BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL; \
1409 } \
1410 struct __bt_plugin_descriptor const * const *__bt_get_end_section_plugin_descriptors(void) \
1411 { \
1412 return &__BT_PLUGIN_DESCRIPTOR_END_SYMBOL; \
1413 } \
1414 struct __bt_plugin_descriptor_attribute const * const *__bt_get_begin_section_plugin_descriptor_attributes(void) \
1415 { \
1416 return &__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL; \
1417 } \
1418 struct __bt_plugin_descriptor_attribute const * const *__bt_get_end_section_plugin_descriptor_attributes(void) \
1419 { \
1420 return &__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL; \
1421 } \
1422 struct __bt_plugin_component_class_descriptor const * const *__bt_get_begin_section_component_class_descriptors(void) \
1423 { \
1424 return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL; \
1425 } \
1426 struct __bt_plugin_component_class_descriptor const * const *__bt_get_end_section_component_class_descriptors(void) \
1427 { \
1428 return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL; \
1429 } \
1430 struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_begin_section_component_class_descriptor_attributes(void) \
1431 { \
1432 return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL; \
1433 } \
1434 struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_end_section_component_class_descriptor_attributes(void) \
1435 { \
1436 return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL; \
1437 }
1438
1439#ifdef __cplusplus
1440}
1441#endif
1442
1443#endif /* BABELTRACE2_PLUGIN_PLUGIN_DEV_H */
This page took 0.028309 seconds and 4 git commands to generate.