1 #ifndef BABELTRACE2_PLUGIN_PLUGIN_DEV_H
2 #define BABELTRACE2_PLUGIN_PLUGIN_DEV_H
5 * Copyright (c) 2010-2019 EfficiOS Inc. and Linux Foundation
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:
14 * The above copyright notice and this permission notice shall be included in
15 * all copies or substantial portions of the Software.
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
26 #ifndef __BT_IN_BABELTRACE_H
27 # error "Please include <babeltrace2/babeltrace.h> instead."
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/types.h>
39 * _BT_HIDDEN: set the hidden attribute for internal functions
40 * On Windows, symbols are local unless explicitly exported,
41 * see https://gcc.gnu.org/wiki/Visibility
43 #if defined(_WIN32) || defined(__CYGWIN__)
46 #define _BT_HIDDEN __attribute__((visibility("hidden")))
54 * Plugin interface's version, not synced with Babeltrace's version
57 #define __BT_PLUGIN_VERSION_MAJOR 1
58 #define __BT_PLUGIN_VERSION_MINOR 0
60 /* Plugin initialization function type */
61 typedef enum bt_plugin_initialize_func_status
{
62 BT_PLUGIN_INITIALIZE_FUNC_STATUS_OK
= __BT_FUNC_STATUS_OK
,
63 BT_PLUGIN_INITIALIZE_FUNC_STATUS_MEMORY_ERROR
= __BT_FUNC_STATUS_MEMORY_ERROR
,
64 BT_PLUGIN_INITIALIZE_FUNC_STATUS_ERROR
= __BT_FUNC_STATUS_ERROR
,
65 } bt_plugin_initialize_func_status
;
67 typedef bt_plugin_initialize_func_status (*bt_plugin_initialize_func
)(
68 bt_self_plugin
*plugin
);
70 /* Plugin exit function type */
71 typedef void (*bt_plugin_finalize_func
)(void);
73 /* Plugin descriptor: describes a single plugin (internal use) */
74 struct __bt_plugin_descriptor
{
75 /* Plugin's interface major version number */
78 /* Plugin's interface minor version number */
83 } __attribute__((packed
));
85 /* Type of a plugin attribute (internal use) */
86 enum __bt_plugin_descriptor_attribute_type
{
87 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_INIT
= 0,
88 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_EXIT
= 1,
89 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_AUTHOR
= 2,
90 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_LICENSE
= 3,
91 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION
= 4,
92 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION
= 5,
95 /* Plugin (user) version */
96 struct __bt_plugin_descriptor_version
{
103 /* Plugin attribute (internal use) */
104 struct __bt_plugin_descriptor_attribute
{
105 /* Plugin descriptor to which to associate this attribute */
106 const struct __bt_plugin_descriptor
*plugin_descriptor
;
108 /* Name of the attribute's type for debug purposes */
109 const char *type_name
;
111 /* Attribute's type */
112 enum __bt_plugin_descriptor_attribute_type type
;
114 /* Attribute's value (depends on attribute's type) */
116 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_INIT */
117 bt_plugin_initialize_func init
;
119 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_EXIT */
120 bt_plugin_finalize_func exit
;
122 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_AUTHOR */
125 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_LICENSE */
128 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION */
129 const char *description
;
131 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION */
132 struct __bt_plugin_descriptor_version version
;
134 } __attribute__((packed
));
136 /* Component class descriptor (internal use) */
137 struct __bt_plugin_component_class_descriptor
{
139 * Plugin descriptor to which to associate this component
142 const struct __bt_plugin_descriptor
*plugin_descriptor
;
144 /* Component class name */
147 /* Component class type */
148 bt_component_class_type type
;
150 /* Mandatory methods (depends on component class type) */
152 /* BT_COMPONENT_CLASS_TYPE_SOURCE */
154 bt_component_class_source_message_iterator_next_method msg_iter_next
;
157 /* BT_COMPONENT_CLASS_TYPE_FILTER */
159 bt_component_class_filter_message_iterator_next_method msg_iter_next
;
162 /* BT_COMPONENT_CLASS_TYPE_SINK */
164 bt_component_class_sink_consume_method consume
;
167 } __attribute__((packed
));
169 /* Type of a component class attribute (internal use) */
170 enum __bt_plugin_component_class_descriptor_attribute_type
{
171 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION
= 0,
172 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP
= 1,
173 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS_METHOD
= 2,
174 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD
= 3,
175 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD
= 4,
176 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD
= 5,
177 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_CONNECTED_METHOD
= 6,
178 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_CONNECTED_METHOD
= 7,
179 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GRAPH_IS_CONFIGURED_METHOD
= 8,
180 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INITIALIZE_METHOD
= 9,
181 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_FINALIZE_METHOD
= 10,
182 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_NS_FROM_ORIGIN_METHOD
= 11,
183 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD
= 12,
184 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_NS_FROM_ORIGIN_METHOD
= 13,
185 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD
= 14,
188 /* Component class attribute (internal use) */
189 struct __bt_plugin_component_class_descriptor_attribute
{
191 * Component class plugin attribute to which to associate this
192 * component class attribute.
194 const struct __bt_plugin_component_class_descriptor
*comp_class_descriptor
;
196 /* Name of the attribute's type for debug purposes */
197 const char *type_name
;
199 /* Attribute's type */
200 enum __bt_plugin_component_class_descriptor_attribute_type type
;
202 /* Attribute's value (depends on attribute's type) */
204 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION */
205 const char *description
;
207 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP */
210 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS_METHOD */
211 bt_component_class_source_get_supported_mip_versions_method source_get_supported_mip_versions_method
;
212 bt_component_class_filter_get_supported_mip_versions_method filter_get_supported_mip_versions_method
;
213 bt_component_class_sink_get_supported_mip_versions_method sink_get_supported_mip_versions_method
;
215 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD */
216 bt_component_class_source_initialize_method source_initialize_method
;
217 bt_component_class_filter_initialize_method filter_initialize_method
;
218 bt_component_class_sink_initialize_method sink_initialize_method
;
220 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD */
221 bt_component_class_source_finalize_method source_finalize_method
;
222 bt_component_class_filter_finalize_method filter_finalize_method
;
223 bt_component_class_sink_finalize_method sink_finalize_method
;
225 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD */
226 bt_component_class_source_query_method source_query_method
;
227 bt_component_class_filter_query_method filter_query_method
;
228 bt_component_class_sink_query_method sink_query_method
;
230 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_CONNECTED_METHOD */
231 bt_component_class_filter_input_port_connected_method filter_input_port_connected_method
;
232 bt_component_class_sink_input_port_connected_method sink_input_port_connected_method
;
234 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_CONNECTED_METHOD */
235 bt_component_class_source_output_port_connected_method source_output_port_connected_method
;
236 bt_component_class_filter_output_port_connected_method filter_output_port_connected_method
;
238 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GRAPH_IS_CONFIGURED_METHOD */
239 bt_component_class_sink_graph_is_configured_method sink_graph_is_configured_method
;
241 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INITIALIZE_METHOD */
242 bt_component_class_source_message_iterator_initialize_method source_msg_iter_initialize_method
;
243 bt_component_class_filter_message_iterator_initialize_method filter_msg_iter_initialize_method
;
245 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_FINALIZE_METHOD */
246 bt_component_class_source_message_iterator_finalize_method source_msg_iter_finalize_method
;
247 bt_component_class_filter_message_iterator_finalize_method filter_msg_iter_finalize_method
;
249 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_NS_FROM_ORIGIN_METHOD */
250 bt_component_class_source_message_iterator_seek_ns_from_origin_method source_msg_iter_seek_ns_from_origin_method
;
251 bt_component_class_filter_message_iterator_seek_ns_from_origin_method filter_msg_iter_seek_ns_from_origin_method
;
253 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD */
254 bt_component_class_source_message_iterator_seek_beginning_method source_msg_iter_seek_beginning_method
;
255 bt_component_class_filter_message_iterator_seek_beginning_method filter_msg_iter_seek_beginning_method
;
257 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_NS_FROM_ORIGIN_METHOD */
258 bt_component_class_source_message_iterator_can_seek_ns_from_origin_method source_msg_iter_can_seek_ns_from_origin_method
;
259 bt_component_class_filter_message_iterator_can_seek_ns_from_origin_method filter_msg_iter_can_seek_ns_from_origin_method
;
261 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD */
262 bt_component_class_source_message_iterator_can_seek_beginning_method source_msg_iter_can_seek_beginning_method
;
263 bt_component_class_filter_message_iterator_can_seek_beginning_method filter_msg_iter_can_seek_beginning_method
;
265 } __attribute__((packed
));
267 struct __bt_plugin_descriptor
const * const *__bt_get_begin_section_plugin_descriptors(void);
268 struct __bt_plugin_descriptor
const * const *__bt_get_end_section_plugin_descriptors(void);
269 struct __bt_plugin_descriptor_attribute
const * const *__bt_get_begin_section_plugin_descriptor_attributes(void);
270 struct __bt_plugin_descriptor_attribute
const * const *__bt_get_end_section_plugin_descriptor_attributes(void);
271 struct __bt_plugin_component_class_descriptor
const * const *__bt_get_begin_section_component_class_descriptors(void);
272 struct __bt_plugin_component_class_descriptor
const * const *__bt_get_end_section_component_class_descriptors(void);
273 struct __bt_plugin_component_class_descriptor_attribute
const * const *__bt_get_begin_section_component_class_descriptor_attributes(void);
274 struct __bt_plugin_component_class_descriptor_attribute
const * const *__bt_get_end_section_component_class_descriptor_attributes(void);
277 * Variable attributes for a plugin descriptor pointer to be added to
278 * the plugin descriptor section (internal use).
281 #define __BT_PLUGIN_DESCRIPTOR_ATTRS \
282 __attribute__((section("__DATA,btp_desc"), used))
284 #define __BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL \
285 __start___bt_plugin_descriptors
287 #define __BT_PLUGIN_DESCRIPTOR_END_SYMBOL \
288 __stop___bt_plugin_descriptors
290 #define __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA \
291 __asm("section$start$__DATA$btp_desc")
293 #define __BT_PLUGIN_DESCRIPTOR_END_EXTRA \
294 __asm("section$end$__DATA$btp_desc")
298 #define __BT_PLUGIN_DESCRIPTOR_ATTRS \
299 __attribute__((section("__bt_plugin_descriptors"), used))
301 #define __BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL \
302 __start___bt_plugin_descriptors
304 #define __BT_PLUGIN_DESCRIPTOR_END_SYMBOL \
305 __stop___bt_plugin_descriptors
307 #define __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA
309 #define __BT_PLUGIN_DESCRIPTOR_END_EXTRA
313 * Variable attributes for a plugin attribute pointer to be added to
314 * the plugin attribute section (internal use).
317 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS \
318 __attribute__((section("__DATA,btp_desc_att"), used))
320 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
321 __start___bt_plugin_descriptor_attributes
323 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
324 __stop___bt_plugin_descriptor_attributes
326 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA \
327 __asm("section$start$__DATA$btp_desc_att")
329 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA \
330 __asm("section$end$__DATA$btp_desc_att")
334 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS \
335 __attribute__((section("__bt_plugin_descriptor_attributes"), used))
337 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
338 __start___bt_plugin_descriptor_attributes
340 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
341 __stop___bt_plugin_descriptor_attributes
343 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA
345 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA
349 * Variable attributes for a component class descriptor pointer to be
350 * added to the component class descriptor section (internal use).
353 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS \
354 __attribute__((section("__DATA,btp_cc_desc"), used))
356 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL \
357 __start___bt_plugin_component_class_descriptors
359 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL \
360 __stop___bt_plugin_component_class_descriptors
362 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA \
363 __asm("section$start$__DATA$btp_cc_desc")
365 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA \
366 __asm("section$end$__DATA$btp_cc_desc")
370 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS \
371 __attribute__((section("__bt_plugin_component_class_descriptors"), used))
373 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL \
374 __start___bt_plugin_component_class_descriptors
376 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL \
377 __stop___bt_plugin_component_class_descriptors
379 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA
381 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA
385 * Variable attributes for a component class descriptor attribute
386 * pointer to be added to the component class descriptor attribute
387 * section (internal use).
390 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_ATTRS \
391 __attribute__((section("__DATA,btp_cc_desc_att"), used))
393 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
394 __start___bt_plugin_component_class_descriptor_attributes
396 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
397 __stop___bt_plugin_component_class_descriptor_attributes
399 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA \
400 __asm("section$start$__DATA$btp_cc_desc_att")
402 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_EXTRA \
403 __asm("section$end$__DATA$btp_cc_desc_att")
407 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_ATTRS \
408 __attribute__((section("__bt_plugin_component_class_descriptor_attributes"), used))
410 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
411 __start___bt_plugin_component_class_descriptor_attributes
413 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
414 __stop___bt_plugin_component_class_descriptor_attributes
416 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA
418 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_EXTRA
422 * Declares a plugin descriptor pointer variable with a custom ID.
424 * _id: ID (any valid C identifier except `auto`).
426 #define BT_PLUGIN_DECLARE(_id) extern struct __bt_plugin_descriptor __bt_plugin_descriptor_##_id
429 * Defines a plugin descriptor with a custom ID.
431 * _id: ID (any valid C identifier except `auto`).
432 * _name: Plugin's name (C string).
434 #define BT_PLUGIN_WITH_ID(_id, _name) \
435 struct __bt_plugin_descriptor __bt_plugin_descriptor_##_id = { \
436 .major = __BT_PLUGIN_VERSION_MAJOR, \
437 .minor = __BT_PLUGIN_VERSION_MINOR, \
440 static struct __bt_plugin_descriptor const * const __bt_plugin_descriptor_##_id##_ptr __BT_PLUGIN_DESCRIPTOR_ATTRS = &__bt_plugin_descriptor_##_id
443 * Defines a plugin attribute (generic, internal use).
445 * _attr_name: Name of the attribute (C identifier).
446 * _attr_type: Type of the attribute (enum __bt_plugin_descriptor_attribute_type).
447 * _id: Plugin descriptor ID (C identifier).
450 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(_attr_name, _attr_type, _id, _x) \
451 static struct __bt_plugin_descriptor_attribute __bt_plugin_descriptor_attribute_##_id##_##_attr_name = { \
452 .plugin_descriptor = &__bt_plugin_descriptor_##_id, \
453 .type_name = #_attr_name, \
454 .type = _attr_type, \
455 .value = { ._attr_name = _x }, \
457 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
460 * Defines a plugin initialization function attribute attached to a
461 * specific plugin descriptor.
463 * _id: Plugin descriptor ID (C identifier).
464 * _x: Initialization function (bt_plugin_initialize_func).
466 #define BT_PLUGIN_INITIALIZE_WITH_ID(_id, _x) \
467 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(init, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_INIT, _id, _x)
470 * Defines a plugin exit function attribute attached to a specific
473 * _id: Plugin descriptor ID (C identifier).
474 * _x: Exit function (bt_plugin_finalize_func).
476 #define BT_PLUGIN_FINALIZE_WITH_ID(_id, _x) \
477 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(exit, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_EXIT, _id, _x)
480 * Defines an author attribute attached to a specific plugin descriptor.
482 * _id: Plugin descriptor ID (C identifier).
483 * _x: Author (C string).
485 #define BT_PLUGIN_AUTHOR_WITH_ID(_id, _x) \
486 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(author, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_AUTHOR, _id, _x)
489 * Defines a license attribute attached to a specific plugin descriptor.
491 * _id: Plugin descriptor ID (C identifier).
492 * _x: License (C string).
494 #define BT_PLUGIN_LICENSE_WITH_ID(_id, _x) \
495 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(license, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_LICENSE, _id, _x)
498 * Defines a description attribute attached to a specific plugin
501 * _id: Plugin descriptor ID (C identifier).
502 * _x: Description (C string).
504 #define BT_PLUGIN_DESCRIPTION_WITH_ID(_id, _x) \
505 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _id, _x)
507 #define __BT_PLUGIN_VERSION_STRUCT_VALUE(_major, _minor, _patch, _extra) \
508 {.major = _major, .minor = _minor, .patch = _patch, .extra = _extra,}
511 * Defines a version attribute attached to a specific plugin descriptor.
513 * _id: Plugin descriptor ID (C identifier).
514 * _major: Plugin's major version (uint32_t).
515 * _minor: Plugin's minor version (uint32_t).
516 * _patch: Plugin's patch version (uint32_t).
517 * _extra: Plugin's version extra information (C string).
519 #define BT_PLUGIN_VERSION_WITH_ID(_id, _major, _minor, _patch, _extra) \
520 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(version, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION, _id, __BT_PLUGIN_VERSION_STRUCT_VALUE(_major, _minor, _patch, _extra))
523 * Defines a source component class descriptor with a custom ID.
525 * _id: ID (any valid C identifier except `auto`).
526 * _comp_class_id: Component class ID (C identifier).
527 * _name: Component class name (C string).
528 * _msg_iter_next_method: Component class's iterator next method
529 * (bt_component_class_source_message_iterator_next_method).
531 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_WITH_ID(_id, _comp_class_id, _name, _msg_iter_next_method) \
532 static struct __bt_plugin_component_class_descriptor __bt_plugin_source_component_class_descriptor_##_id##_##_comp_class_id = { \
533 .plugin_descriptor = &__bt_plugin_descriptor_##_id, \
535 .type = BT_COMPONENT_CLASS_TYPE_SOURCE, \
536 .methods = { .source = { .msg_iter_next = _msg_iter_next_method } }, \
538 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
541 * Defines a filter component class descriptor with a custom ID.
543 * _id: ID (any valid C identifier except `auto`).
544 * _comp_class_id: Component class ID (C identifier).
545 * _name: Component class name (C string).
546 * _msg_iter_next_method: Component class's iterator next method
547 * (bt_component_class_filter_message_iterator_next_method).
549 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_WITH_ID(_id, _comp_class_id, _name, _msg_iter_next_method) \
550 static struct __bt_plugin_component_class_descriptor __bt_plugin_filter_component_class_descriptor_##_id##_##_comp_class_id = { \
551 .plugin_descriptor = &__bt_plugin_descriptor_##_id, \
553 .type = BT_COMPONENT_CLASS_TYPE_FILTER, \
554 .methods = { .filter = { .msg_iter_next = _msg_iter_next_method } }, \
556 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
559 * Defines a sink component class descriptor with a custom ID.
561 * _id: ID (any valid C identifier except `auto`).
562 * _comp_class_id: Component class ID (C identifier).
563 * _name: Component class name (C string).
564 * _consume_method: Component class's iterator consume method
565 * (bt_component_class_sink_consume_method).
567 #define BT_PLUGIN_SINK_COMPONENT_CLASS_WITH_ID(_id, _comp_class_id, _name, _consume_method) \
568 static struct __bt_plugin_component_class_descriptor __bt_plugin_sink_component_class_descriptor_##_id##_##_comp_class_id = { \
569 .plugin_descriptor = &__bt_plugin_descriptor_##_id, \
571 .type = BT_COMPONENT_CLASS_TYPE_SINK, \
572 .methods = { .sink = { .consume = _consume_method } }, \
574 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
577 * Defines a component class descriptor attribute (generic, internal
580 * _id: Plugin descriptor ID (C identifier).
581 * _comp_class_id: Component class ID (C identifier).
582 * _type: Component class type (`source`, `filter`, or `sink`).
583 * _attr_name: Name of the attribute (C identifier).
584 * _attr_type: Type of the attribute
585 * (enum __bt_plugin_descriptor_attribute_type).
588 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(_attr_name, _attr_type, _id, _comp_class_id, _type, _x) \
589 static struct __bt_plugin_component_class_descriptor_attribute __bt_plugin_##_type##_component_class_descriptor_attribute_##_id##_##_comp_class_id##_##_attr_name = { \
590 .comp_class_descriptor = &__bt_plugin_##_type##_component_class_descriptor_##_id##_##_comp_class_id, \
591 .type_name = #_attr_name, \
592 .type = _attr_type, \
593 .value = { ._attr_name = _x }, \
595 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
598 * Defines a description attribute attached to a specific source
599 * component class descriptor.
601 * _id: Plugin descriptor ID (C identifier).
602 * _comp_class_id: Component class descriptor ID (C identifier).
603 * _x: Description (C string).
605 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION_WITH_ID(_id, _comp_class_id, _x) \
606 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _id, _comp_class_id, source, _x)
609 * Defines a description attribute attached to a specific filter
610 * component class descriptor.
612 * _id: Plugin descriptor ID (C identifier).
613 * _comp_class_id: Component class descriptor ID (C identifier).
614 * _x: Description (C string).
616 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION_WITH_ID(_id, _comp_class_id, _x) \
617 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _id, _comp_class_id, filter, _x)
620 * Defines a description attribute attached to a specific sink
621 * component class descriptor.
623 * _id: Plugin descriptor ID (C identifier).
624 * _comp_class_id: Component class descriptor ID (C identifier).
625 * _x: Description (C string).
627 #define BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION_WITH_ID(_id, _comp_class_id, _x) \
628 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _id, _comp_class_id, sink, _x)
631 * Defines a help attribute attached to a specific source component
634 * _id: Plugin descriptor ID (C identifier).
635 * _comp_class_id: Component class descriptor ID (C identifier).
636 * _x: Help (C string).
638 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP_WITH_ID(_id, _comp_class_id, _x) \
639 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(help, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP, _id, _comp_class_id, source, _x)
642 * Defines a help attribute attached to a specific filter component
645 * _id: Plugin descriptor ID (C identifier).
646 * _comp_class_id: Component class descriptor ID (C identifier).
647 * _x: Help (C string).
649 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP_WITH_ID(_id, _comp_class_id, _x) \
650 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(help, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP, _id, _comp_class_id, filter, _x)
653 * Defines a help attribute attached to a specific sink component class
656 * _id: Plugin descriptor ID (C identifier).
657 * _comp_class_id: Component class descriptor ID (C identifier).
658 * _x: Help (C string).
660 #define BT_PLUGIN_SINK_COMPONENT_CLASS_HELP_WITH_ID(_id, _comp_class_id, _x) \
661 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(help, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP, _id, _comp_class_id, sink, _x)
664 * Defines an initialization method attribute attached to a specific
665 * source component class descriptor.
667 * _id: Plugin descriptor ID (C identifier).
668 * _comp_class_id: Component class descriptor ID (C identifier).
669 * _x: Initialization method (bt_component_class_source_initialize_method).
671 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
672 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD, _id, _comp_class_id, source, _x)
675 * Defines an initialization method attribute attached to a specific
676 * filter component class descriptor.
678 * _id: Plugin descriptor ID (C identifier).
679 * _comp_class_id: Component class descriptor ID (C identifier).
680 * _x: Initialization method (bt_component_class_filter_initialize_method).
682 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
683 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD, _id, _comp_class_id, filter, _x)
686 * Defines an initialization method attribute attached to a specific
687 * sink component class descriptor.
689 * _id: Plugin descriptor ID (C identifier).
690 * _comp_class_id: Component class descriptor ID (C identifier).
691 * _x: Initialization method (bt_component_class_sink_initialize_method).
693 #define BT_PLUGIN_SINK_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
694 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD, _id, _comp_class_id, sink, _x)
697 * Defines a "get supported MIP versions" attribute attached to a
698 * specific source component class descriptor.
700 * _id: Plugin descriptor ID (C identifier).
701 * _comp_class_id: Component class descriptor ID (C identifier).
702 * _x: "Get supported MIP versions" method (bt_component_class_source_get_supported_mip_versions_method).
704 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_WITH_ID(_id, _comp_class_id, _x) \
705 __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)
708 * Defines a "get supported MIP versions" attribute attached to a
709 * specific filter component class descriptor.
711 * _id: Plugin descriptor ID (C identifier).
712 * _comp_class_id: Component class descriptor ID (C identifier).
713 * _x: "Get supported MIP versions" method (bt_component_class_filter_get_supported_mip_versions_method).
715 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_WITH_ID(_id, _comp_class_id, _x) \
716 __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)
719 * Defines a "get supported MIP versions" attribute attached to a
720 * specific sink component class descriptor.
722 * _id: Plugin descriptor ID (C identifier).
723 * _comp_class_id: Component class descriptor ID (C identifier).
724 * _x: "Get supported MIP versions" method (bt_component_class_sink_get_supported_mip_versions_method).
726 #define BT_PLUGIN_SINK_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_WITH_ID(_id, _comp_class_id, _x) \
727 __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)
730 * Defines a finalization method attribute attached to a specific source
731 * component class descriptor.
733 * _id: Plugin descriptor ID (C identifier).
734 * _comp_class_id: Component class descriptor ID (C identifier).
735 * _x: Finalize method (bt_component_class_source_finalize_method).
737 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
738 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _id, _comp_class_id, source, _x)
741 * Defines a finalization method attribute attached to a specific filter
742 * component class descriptor.
744 * _id: Plugin descriptor ID (C identifier).
745 * _comp_class_id: Component class descriptor ID (C identifier).
746 * _x: Finalize method (bt_component_class_filter_finalize_method).
748 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
749 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _id, _comp_class_id, filter, _x)
752 * Defines a finalization method attribute attached to a specific sink
753 * component class descriptor.
755 * _id: Plugin descriptor ID (C identifier).
756 * _comp_class_id: Component class descriptor ID (C identifier).
757 * _x: Finalize method (bt_component_class_sink_finalize_method).
759 #define BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
760 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _id, _comp_class_id, sink, _x)
763 * Defines a query method attribute attached to a specific source
764 * component class descriptor.
766 * _id: Plugin descriptor ID (C identifier).
767 * _comp_class_id: Component class descriptor ID (C identifier).
768 * _x: Finalize method (bt_component_class_source_query_method).
770 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_id, _comp_class_id, _x) \
771 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _id, _comp_class_id, source, _x)
774 * Defines a query method attribute attached to a specific filter
775 * component class descriptor.
777 * _id: Plugin descriptor ID (C identifier).
778 * _comp_class_id: Component class descriptor ID (C identifier).
779 * _x: Finalize method (bt_component_class_filter_query_method).
781 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_id, _comp_class_id, _x) \
782 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _id, _comp_class_id, filter, _x)
785 * Defines a query method attribute attached to a specific sink
786 * component class descriptor.
788 * _id: Plugin descriptor ID (C identifier).
789 * _comp_class_id: Component class descriptor ID (C identifier).
790 * _x: Finalize method (bt_component_class_sink_query_method).
792 #define BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_id, _comp_class_id, _x) \
793 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _id, _comp_class_id, sink, _x)
796 * Defines an input port connected method attribute attached to a
797 * specific filter component class descriptor.
799 * _id: Plugin descriptor ID (C identifier).
800 * _comp_class_id: Component class descriptor ID (C identifier).
801 * _x: Port connected method
802 * (bt_component_class_filter_input_port_connected_method).
804 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
805 __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)
808 * Defines an input port connected method attribute attached to a
809 * specific sink component class descriptor.
811 * _id: Plugin descriptor ID (C identifier).
812 * _comp_class_id: Component class descriptor ID (C identifier).
813 * _x: Port connected method
814 * (bt_component_class_sink_input_port_connected_method).
816 #define BT_PLUGIN_SINK_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
817 __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)
820 * Defines an output port connected method attribute attached to a
821 * specific source component class descriptor.
823 * _id: Plugin descriptor ID (C identifier).
824 * _comp_class_id: Component class descriptor ID (C identifier).
825 * _x: Port connected method
826 * (bt_component_class_source_output_port_connected_method).
828 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
829 __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)
832 * Defines an output port connected method attribute attached to a
833 * specific filter component class descriptor.
835 * _id: Plugin descriptor ID (C identifier).
836 * _comp_class_id: Component class descriptor ID (C identifier).
837 * _x: Port connected method
838 * (bt_component_class_filter_output_port_connected_method).
840 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
841 __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)
844 * Defines a "graph is configured" method attribute attached to a
845 * specific sink component class descriptor.
847 * _id: Plugin descriptor ID (C identifier).
848 * _comp_class_id: Component class descriptor ID (C identifier).
849 * _x: "Graph is configured" method
850 * (bt_component_class_sink_graph_is_configured_method).
852 #define BT_PLUGIN_SINK_COMPONENT_CLASS_GRAPH_IS_CONFIGURED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
853 __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)
856 * Defines an iterator initialization method attribute attached to a
857 * specific source component class descriptor.
859 * _id: Plugin descriptor ID (C identifier).
860 * _comp_class_id: Component class descriptor ID (C identifier).
861 * _x: Iterator initialization method
862 * (bt_component_class_source_message_iterator_initialize_method).
864 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
865 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_msg_iter_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INITIALIZE_METHOD, _id, _comp_class_id, source, _x)
868 * Defines an iterator finalize method attribute attached to a specific
869 * source component class descriptor.
871 * _id: Plugin descriptor ID (C identifier).
872 * _comp_class_id: Component class descriptor ID (C identifier).
873 * _x: Iterator finalize method
874 * (bt_component_class_source_message_iterator_finalize_method).
876 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
877 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_msg_iter_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_FINALIZE_METHOD, _id, _comp_class_id, source, _x)
880 * Defines an iterator "seek nanoseconds from origin" method attribute
881 * attached to a specific source component class descriptor.
883 * _id: Plugin descriptor ID (C identifier).
884 * _comp_class_id: Component class descriptor ID (C identifier).
885 * _x: Iterator "seek nanoseconds from origin" method
886 * (bt_component_class_source_message_iterator_seek_ns_from_origin_method).
888 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_SEEK_NS_FROM_ORIGIN_METHOD_WITH_ID(_id, _comp_class_id, _x) \
889 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_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, _x)
892 * Defines an iterator "seek beginning" method attribute attached to a
893 * specific source component class descriptor.
895 * _id: Plugin descriptor ID (C identifier).
896 * _comp_class_id: Component class descriptor ID (C identifier).
897 * _x: Iterator "seek beginning" method
898 * (bt_component_class_source_message_iterator_seek_beginning_method).
900 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_SEEK_BEGINNING_METHOD_WITH_ID(_id, _comp_class_id, _x) \
901 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_msg_iter_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD, _id, _comp_class_id, source, _x)
904 * Defines an iterator "can seek nanoseconds from origin" method
905 * attribute attached to a specific source component class descriptor.
907 * _id: Plugin descriptor ID (C identifier).
908 * _comp_class_id: Component class descriptor ID (C identifier).
909 * _x: Iterator "can seek nanoseconds from origin" method
910 * (bt_component_class_source_message_iterator_can_seek_ns_from_origin_method).
912 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CAN_SEEK_NS_FROM_ORIGIN_METHOD_WITH_ID(_id, _comp_class_id, _x) \
913 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_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, _x)
916 * Defines an iterator "can seek beginning" method attribute attached to a
917 * specific source component class descriptor.
919 * _id: Plugin descriptor ID (C identifier).
920 * _comp_class_id: Component class descriptor ID (C identifier).
921 * _x: Iterator "can seek beginning" method
922 * (bt_component_class_source_message_iterator_can_seek_beginning_method).
924 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CAN_SEEK_BEGINNING_METHOD_WITH_ID(_id, _comp_class_id, _x) \
925 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_msg_iter_can_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD, _id, _comp_class_id, source, _x)
928 * Defines an iterator initialization method attribute attached to a
929 * specific filter component class descriptor.
931 * _id: Plugin descriptor ID (C identifier).
932 * _comp_class_id: Component class descriptor ID (C identifier).
933 * _x: Iterator initialization method
934 * (bt_component_class_filter_message_iterator_initialize_method).
936 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
937 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_msg_iter_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INITIALIZE_METHOD, _id, _comp_class_id, filter, _x)
940 * Defines an iterator finalize method attribute attached to a specific
941 * filter component class descriptor.
943 * _id: Plugin descriptor ID (C identifier).
944 * _comp_class_id: Component class descriptor ID (C identifier).
945 * _x: Iterator finalize method
946 * (bt_component_class_filter_message_iterator_finalize_method).
948 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
949 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_msg_iter_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_FINALIZE_METHOD, _id, _comp_class_id, filter, _x)
952 * Defines an iterator "seek nanoseconds from origin" method attribute
953 * attached to a specific filter component class descriptor.
955 * _id: Plugin descriptor ID (C identifier).
956 * _comp_class_id: Component class descriptor ID (C identifier).
957 * _x: Iterator "seek nanoseconds from origin" method
958 * (bt_component_class_filter_message_iterator_seek_ns_from_origin_method).
960 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_SEEK_NS_FROM_ORIGIN_METHOD_WITH_ID(_id, _comp_class_id, _x) \
961 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_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, _x)
964 * Defines an iterator "seek beginning" method attribute attached to a
965 * specific filter component class descriptor.
967 * _id: Plugin descriptor ID (C identifier).
968 * _comp_class_id: Component class descriptor ID (C identifier).
969 * _x: Iterator "seek beginning" method
970 * (bt_component_class_filter_message_iterator_seek_beginning_method).
972 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_SEEK_BEGINNING_METHOD_WITH_ID(_id, _comp_class_id, _x) \
973 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_msg_iter_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD, _id, _comp_class_id, filter, _x)
976 * Defines an iterator "can seek nanoseconds from origin" method
977 * attribute attached to a specific filter component class descriptor.
979 * _id: Plugin descriptor ID (C identifier).
980 * _comp_class_id: Component class descriptor ID (C identifier).
981 * _x: Iterator "can seek nanoseconds from origin" method
982 * (bt_component_class_filter_message_iterator_can_seek_ns_from_origin_method).
984 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CAN_SEEK_NS_FROM_ORIGIN_METHOD_WITH_ID(_id, _comp_class_id, _x) \
985 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_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, _x)
988 * Defines an iterator "can seek beginning" method attribute attached to a
989 * specific filter component class descriptor.
991 * _id: Plugin descriptor ID (C identifier).
992 * _comp_class_id: Component class descriptor ID (C identifier).
993 * _x: Iterator "can seek beginning" method
994 * (bt_component_class_filter_message_iterator_can_seek_beginning_method).
996 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CAN_SEEK_BEGINNING_METHOD_WITH_ID(_id, _comp_class_id, _x) \
997 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_msg_iter_can_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD, _id, _comp_class_id, filter, _x)
1000 * Defines a plugin descriptor with an automatic ID.
1002 * _name: Plugin's name (C string).
1004 #define BT_PLUGIN(_name) static BT_PLUGIN_WITH_ID(auto, #_name)
1007 * Defines a plugin initialization function attribute attached to the
1008 * automatic plugin descriptor.
1010 * _x: Initialization function (bt_plugin_initialize_func).
1012 #define BT_PLUGIN_INITIALIZE(_x) BT_PLUGIN_INITIALIZE_WITH_ID(auto, _x)
1015 * Defines a plugin exit function attribute attached to the automatic
1016 * plugin descriptor.
1018 * _x: Exit function (bt_plugin_finalize_func).
1020 #define BT_PLUGIN_FINALIZE(_x) BT_PLUGIN_FINALIZE_WITH_ID(auto, _x)
1023 * Defines an author attribute attached to the automatic plugin
1026 * _x: Author (C string).
1028 #define BT_PLUGIN_AUTHOR(_x) BT_PLUGIN_AUTHOR_WITH_ID(auto, _x)
1031 * Defines a license attribute attached to the automatic plugin
1034 * _x: License (C string).
1036 #define BT_PLUGIN_LICENSE(_x) BT_PLUGIN_LICENSE_WITH_ID(auto, _x)
1039 * Defines a description attribute attached to the automatic plugin
1042 * _x: Description (C string).
1044 #define BT_PLUGIN_DESCRIPTION(_x) BT_PLUGIN_DESCRIPTION_WITH_ID(auto, _x)
1047 * Defines a version attribute attached to the automatic plugin
1050 * _major: Plugin's major version (uint32_t).
1051 * _minor: Plugin's minor version (uint32_t).
1052 * _patch: Plugin's patch version (uint32_t).
1053 * _extra: Plugin's version extra information (C string).
1055 #define BT_PLUGIN_VERSION(_major, _minor, _patch, _extra) BT_PLUGIN_VERSION_WITH_ID(auto, _major, _minor, _patch, _extra)
1058 * Defines a source component class attached to the automatic plugin
1059 * descriptor. Its ID is the same as its name, hence its name must be a
1060 * C identifier in this version.
1062 * _name: Component class name (C identifier).
1063 * _msg_iter_next_method: Component class's iterator next method
1064 * (bt_component_class_source_message_iterator_next_method).
1066 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS(_name, _msg_iter_next_method) \
1067 BT_PLUGIN_SOURCE_COMPONENT_CLASS_WITH_ID(auto, _name, #_name, _msg_iter_next_method)
1070 * Defines a filter component class attached to the automatic plugin
1071 * descriptor. Its ID is the same as its name, hence its name must be a
1072 * C identifier in this version.
1074 * _name: Component class name (C identifier).
1075 * _msg_iter_next_method: Component class's iterator next method
1076 * (bt_component_class_filter_message_iterator_next_method).
1078 #define BT_PLUGIN_FILTER_COMPONENT_CLASS(_name, _msg_iter_next_method) \
1079 BT_PLUGIN_FILTER_COMPONENT_CLASS_WITH_ID(auto, _name, #_name, _msg_iter_next_method)
1082 * Defines a sink component class attached to the automatic plugin
1083 * descriptor. Its ID is the same as its name, hence its name must be a
1084 * C identifier in this version.
1086 * _name: Component class name (C identifier).
1087 * _consume_method: Component class's consume method
1088 * (bt_component_class_sink_consume_method).
1090 #define BT_PLUGIN_SINK_COMPONENT_CLASS(_name, _consume_method) \
1091 BT_PLUGIN_SINK_COMPONENT_CLASS_WITH_ID(auto, _name, #_name, _consume_method)
1094 * Defines a description attribute attached to a source component class
1095 * descriptor which is attached to the automatic plugin descriptor.
1097 * _name: Component class name (C identifier).
1098 * _x: Description (C string).
1100 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION(_name, _x) \
1101 BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _x)
1104 * Defines a description attribute attached to a filter component class
1105 * descriptor which is attached to the automatic plugin descriptor.
1107 * _name: Component class name (C identifier).
1108 * _x: Description (C string).
1110 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION(_name, _x) \
1111 BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _x)
1114 * Defines a description attribute attached to a sink component class
1115 * descriptor which is attached to the automatic plugin descriptor.
1117 * _name: Component class name (C identifier).
1118 * _x: Description (C string).
1120 #define BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION(_name, _x) \
1121 BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _x)
1124 * Defines a help attribute attached to a source component class
1125 * descriptor which is attached to the automatic plugin descriptor.
1127 * _name: Component class name (C identifier).
1128 * _x: Help (C string).
1130 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP(_name, _x) \
1131 BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _x)
1134 * Defines a help attribute attached to a filter component class
1135 * descriptor which is attached to the automatic plugin descriptor.
1137 * _name: Component class name (C identifier).
1138 * _x: Help (C string).
1140 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP(_name, _x) \
1141 BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _x)
1144 * Defines a help attribute attached to a sink component class
1145 * descriptor which is attached to the automatic plugin descriptor.
1147 * _name: Component class name (C identifier).
1148 * _x: Help (C string).
1150 #define BT_PLUGIN_SINK_COMPONENT_CLASS_HELP(_name, _x) \
1151 BT_PLUGIN_SINK_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _x)
1154 * Defines an initialization method attribute attached to a source
1155 * component class descriptor which is attached to the automatic plugin
1158 * _name: Component class name (C identifier).
1159 * _x: Initialization method (bt_component_class_source_initialize_method).
1161 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_INITIALIZE_METHOD(_name, _x) \
1162 BT_PLUGIN_SOURCE_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _x)
1165 * Defines an initialization method attribute attached to a filter
1166 * component class descriptor which is attached to the automatic plugin
1169 * _name: Component class name (C identifier).
1170 * _x: Initialization method (bt_component_class_filter_initialize_method).
1172 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_INITIALIZE_METHOD(_name, _x) \
1173 BT_PLUGIN_FILTER_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _x)
1176 * Defines an initialization method attribute attached to a sink
1177 * component class descriptor which is attached to the automatic plugin
1180 * _name: Component class name (C identifier).
1181 * _x: Initialization method (bt_component_class_sink_initialize_method).
1183 #define BT_PLUGIN_SINK_COMPONENT_CLASS_INITIALIZE_METHOD(_name, _x) \
1184 BT_PLUGIN_SINK_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _x)
1187 * Defines a "get supported MIP versions" method attribute attached to a
1188 * source component class descriptor which is attached to the automatic
1189 * plugin descriptor.
1191 * _name: Component class name (C identifier).
1192 * _x: Initialization method (bt_component_class_source_get_supported_mip_versions_method).
1194 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD(_name, _x) \
1195 BT_PLUGIN_SOURCE_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(auto, _name, _x)
1198 * Defines a "get supported MIP versions" method attribute attached to a
1199 * filter component class descriptor which is attached to the automatic
1200 * plugin descriptor.
1202 * _name: Component class name (C identifier).
1203 * _x: Initialization method (bt_component_class_filter_get_supported_mip_versions_method).
1205 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD(_name, _x) \
1206 BT_PLUGIN_FILTER_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(auto, _name, _x)
1209 * Defines a "get supported MIP versions" method attribute attached to a
1210 * sink component class descriptor which is attached to the automatic
1211 * plugin descriptor.
1213 * _name: Component class name (C identifier).
1214 * _x: Initialization method (bt_component_class_sink_get_supported_mip_versions_method).
1216 #define BT_PLUGIN_SINK_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD(_name, _x) \
1217 BT_PLUGIN_SINK_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(auto, _name, _x)
1220 * Defines a finalization method attribute attached to a source component
1221 * class descriptor which is attached to the automatic plugin
1224 * _name: Component class name (C identifier).
1225 * _x: Initialization method (bt_component_class_source_finalize_method).
1227 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD(_name, _x) \
1228 BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1231 * Defines a finalization method attribute attached to a filter component
1232 * class descriptor which is attached to the automatic plugin
1235 * _name: Component class name (C identifier).
1236 * _x: Initialization method (bt_component_class_filter_finalize_method).
1238 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD(_name, _x) \
1239 BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1242 * Defines a finalization method attribute attached to a sink component class
1243 * descriptor which is attached to the automatic plugin descriptor.
1245 * _name: Component class name (C identifier).
1246 * _x: Initialization method (bt_component_class_sink_finalize_method).
1248 #define BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD(_name, _x) \
1249 BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1252 * Defines a query method attribute attached to a source component
1253 * class descriptor which is attached to the automatic plugin
1256 * _name: Component class name (C identifier).
1257 * _x: Initialization method (bt_component_class_source_query_method).
1259 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD(_name, _x) \
1260 BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _x)
1263 * Defines a query method attribute attached to a filter component
1264 * class descriptor which is attached to the automatic plugin
1267 * _name: Component class name (C identifier).
1268 * _x: Initialization method (bt_component_class_filter_query_method).
1270 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD(_name, _x) \
1271 BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _x)
1274 * Defines a query method attribute attached to a sink component
1275 * class descriptor which is attached to the automatic plugin
1278 * _name: Component class name (C identifier).
1279 * _x: Initialization method (bt_component_class_sink_query_method).
1281 #define BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD(_name, _x) \
1282 BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _x)
1285 * Defines an input port connected method attribute attached to a filter
1286 * component class descriptor which is attached to the automatic plugin
1289 * _name: Component class name (C identifier).
1290 * _x: Port connected (bt_component_class_filter_input_port_connected_method).
1292 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD(_name, _x) \
1293 BT_PLUGIN_FILTER_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _x)
1296 * Defines an input port connected method attribute attached to a sink
1297 * component class descriptor which is attached to the automatic plugin
1300 * _name: Component class name (C identifier).
1301 * _x: Port connected (bt_component_class_sink_input_port_connected_method).
1303 #define BT_PLUGIN_SINK_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD(_name, _x) \
1304 BT_PLUGIN_SINK_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _x)
1307 * Defines an output port connected method attribute attached to a source
1308 * component class descriptor which is attached to the automatic plugin
1311 * _name: Component class name (C identifier).
1312 * _x: Port connected (bt_component_class_source_output_port_connected_method).
1314 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD(_name, _x) \
1315 BT_PLUGIN_SOURCE_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _x)
1318 * Defines an output port connected method attribute attached to a filter
1319 * component class descriptor which is attached to the automatic plugin
1322 * _name: Component class name (C identifier).
1323 * _x: Port connected (bt_component_class_filter_output_port_connected_method).
1325 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD(_name, _x) \
1326 BT_PLUGIN_FILTER_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _x)
1329 * Defines a "graph is configured" method attribute attached to
1330 * a sink component class descriptor which is attached to the automatic
1331 * plugin descriptor.
1333 * _name: Component class name (C identifier).
1334 * _x: "Graph is configured" method
1335 * (bt_component_class_sink_graph_is_configured_method).
1337 #define BT_PLUGIN_SINK_COMPONENT_CLASS_GRAPH_IS_CONFIGURED_METHOD(_name, _x) \
1338 BT_PLUGIN_SINK_COMPONENT_CLASS_GRAPH_IS_CONFIGURED_METHOD_WITH_ID(auto, _name, _x)
1341 * Defines an iterator initialization method attribute attached to a
1342 * source component class descriptor which is attached to the automatic
1343 * plugin descriptor.
1345 * _name: Component class name (C identifier).
1346 * _x: Iterator initialization method
1347 * (bt_component_class_source_message_iterator_initialize_method).
1349 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD(_name, _x) \
1350 BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD_WITH_ID(auto, _name, _x)
1353 * Defines an iterator finalize method attribute attached to a source
1354 * component class descriptor which is attached to the automatic plugin
1357 * _name: Component class name (C identifier).
1358 * _x: Iterator finalize method
1359 * (bt_component_class_source_message_iterator_finalize_method).
1361 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_FINALIZE_METHOD(_name, _x) \
1362 BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1365 * Defines an iterator "seek nanoseconds from origin" method attribute
1366 * attached to a source component class descriptor which is attached to
1367 * the automatic plugin descriptor.
1369 * _name: Component class name (C identifier).
1370 * _x: Iterator "seek nanoseconds from origin" method
1371 * (bt_component_class_source_message_iterator_seek_ns_from_origin_method).
1373 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_SEEK_NS_FROM_ORIGIN_METHOD(_name, _x) \
1374 BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_SEEK_NS_FROM_ORIGIN_METHOD_WITH_ID(auto, _name, _x)
1377 * Defines an iterator "seek beginning" method attribute
1378 * attached to a source component class descriptor which is attached to
1379 * the automatic plugin descriptor.
1381 * _name: Component class name (C identifier).
1382 * _x: Iterator "seek beginning" method
1383 * (bt_component_class_source_message_iterator_seek_beginning_method).
1385 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_SEEK_BEGINNING_METHOD(_name, _x) \
1386 BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_SEEK_BEGINNING_METHOD_WITH_ID(auto, _name, _x)
1389 * Defines an iterator "can seek nanoseconds from origin" method
1390 * attribute attached to a source component class descriptor which is
1391 * attached to the automatic plugin descriptor.
1393 * _name: Component class name (C identifier).
1394 * _x: Iterator "can seek nanoseconds from origin" method
1395 * (bt_component_class_source_message_iterator_can_seek_ns_from_origin_method).
1397 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CAN_SEEK_NS_FROM_ORIGIN_METHOD(_name, _x) \
1398 BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CAN_SEEK_NS_FROM_ORIGIN_METHOD_WITH_ID(auto, _name, _x)
1401 * Defines an iterator "can seek beginning" method attribute
1402 * attached to a source component class descriptor which is attached to
1403 * the automatic plugin descriptor.
1405 * _name: Component class name (C identifier).
1406 * _x: Iterator "can seek beginning" method
1407 * (bt_component_class_source_message_iterator_can_seek_beginning_method).
1409 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CAN_SEEK_BEGINNING_METHOD(_name, _x) \
1410 BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CAN_SEEK_BEGINNING_METHOD_WITH_ID(auto, _name, _x)
1413 * Defines an iterator initialization method attribute attached to a
1414 * filter component class descriptor which is attached to the automatic
1415 * plugin descriptor.
1417 * _name: Component class name (C identifier).
1418 * _x: Iterator initialization method
1419 * (bt_component_class_filter_message_iterator_initialize_method).
1421 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD(_name, _x) \
1422 BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD_WITH_ID(auto, _name, _x)
1425 * Defines an iterator finalize method attribute attached to a filter
1426 * component class descriptor which is attached to the automatic plugin
1429 * _name: Component class name (C identifier).
1430 * _x: Iterator finalize method
1431 * (bt_component_class_filter_message_iterator_finalize_method).
1433 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_FINALIZE_METHOD(_name, _x) \
1434 BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1437 * Defines an iterator "seek nanoseconds from origin" method attribute
1438 * attached to a filter component class descriptor which is attached to
1439 * the automatic plugin descriptor.
1441 * _name: Component class name (C identifier).
1442 * _x: Iterator "seek nanoseconds from origin" method
1443 * (bt_component_class_filter_message_iterator_seek_ns_from_origin_method).
1445 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_SEEK_NS_FROM_ORIGIN_METHOD(_name, _x) \
1446 BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_SEEK_NS_FROM_ORIGIN_METHOD_WITH_ID(auto, _name, _x)
1449 * Defines an iterator "seek beginning" method attribute
1450 * attached to a filter component class descriptor which is attached to
1451 * the automatic plugin descriptor.
1453 * _name: Component class name (C identifier).
1454 * _x: Iterator "seek beginning" method
1455 * (bt_component_class_filter_message_iterator_seek_beginning_method).
1457 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_SEEK_BEGINNING_METHOD(_name, _x) \
1458 BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_SEEK_BEGINNING_METHOD_WITH_ID(auto, _name, _x)
1461 * Defines an iterator "can seek nanoseconds from origin" method
1462 * attribute attached to a filter component class descriptor which is
1463 * attached to the automatic plugin descriptor.
1465 * _name: Component class name (C identifier).
1466 * _x: Iterator "can seek nanoseconds from origin" method
1467 * (bt_component_class_filter_message_iterator_can_seek_ns_from_origin_method).
1469 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CAN_SEEK_NS_FROM_ORIGIN_METHOD(_name, _x) \
1470 BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CAN_SEEK_NS_FROM_ORIGIN_METHOD_WITH_ID(auto, _name, _x)
1473 * Defines an iterator "can seek beginning" method attribute
1474 * attached to a filter component class descriptor which is attached to
1475 * the automatic plugin descriptor.
1477 * _name: Component class name (C identifier).
1478 * _x: Iterator "can seek beginning" method
1479 * (bt_component_class_filter_message_iterator_can_seek_beginning_method).
1481 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CAN_SEEK_BEGINNING_METHOD(_name, _x) \
1482 BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CAN_SEEK_BEGINNING_METHOD_WITH_ID(auto, _name, _x)
1484 #define BT_PLUGIN_MODULE() \
1485 static struct __bt_plugin_descriptor const * const __bt_plugin_descriptor_dummy __BT_PLUGIN_DESCRIPTOR_ATTRS = NULL; \
1486 _BT_HIDDEN extern struct __bt_plugin_descriptor const *__BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA; \
1487 _BT_HIDDEN extern struct __bt_plugin_descriptor const *__BT_PLUGIN_DESCRIPTOR_END_SYMBOL __BT_PLUGIN_DESCRIPTOR_END_EXTRA; \
1489 static struct __bt_plugin_descriptor_attribute const * const __bt_plugin_descriptor_attribute_dummy __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS = NULL; \
1490 _BT_HIDDEN extern struct __bt_plugin_descriptor_attribute const *__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA; \
1491 _BT_HIDDEN extern struct __bt_plugin_descriptor_attribute const *__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA; \
1493 static struct __bt_plugin_component_class_descriptor const * const __bt_plugin_component_class_descriptor_dummy __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS = NULL; \
1494 _BT_HIDDEN extern struct __bt_plugin_component_class_descriptor const *__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA; \
1495 _BT_HIDDEN extern struct __bt_plugin_component_class_descriptor const *__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA; \
1497 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; \
1498 _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; \
1499 _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; \
1501 struct __bt_plugin_descriptor const * const *__bt_get_begin_section_plugin_descriptors(void) \
1503 return &__BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL; \
1505 struct __bt_plugin_descriptor const * const *__bt_get_end_section_plugin_descriptors(void) \
1507 return &__BT_PLUGIN_DESCRIPTOR_END_SYMBOL; \
1509 struct __bt_plugin_descriptor_attribute const * const *__bt_get_begin_section_plugin_descriptor_attributes(void) \
1511 return &__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL; \
1513 struct __bt_plugin_descriptor_attribute const * const *__bt_get_end_section_plugin_descriptor_attributes(void) \
1515 return &__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL; \
1517 struct __bt_plugin_component_class_descriptor const * const *__bt_get_begin_section_component_class_descriptors(void) \
1519 return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL; \
1521 struct __bt_plugin_component_class_descriptor const * const *__bt_get_end_section_component_class_descriptors(void) \
1523 return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL; \
1525 struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_begin_section_component_class_descriptor_attributes(void) \
1527 return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL; \
1529 struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_end_section_component_class_descriptor_attributes(void) \
1531 return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL; \
1538 #endif /* BABELTRACE2_PLUGIN_PLUGIN_DEV_H */