1 #ifndef BABELTRACE_PLUGIN_PLUGIN_DEV_H
2 #define BABELTRACE_PLUGIN_PLUGIN_DEV_H
5 * BabelTrace - Babeltrace Plug-in Development API
7 * This is the header that you need to include for the development of
8 * a Babeltrace plug-in.
10 * Copyright 2015 Jérémie Galarneau <jeremie.galarneau@efficios.com>
11 * Copyright 2017 Philippe Proulx <pproulx@efficios.com>
13 * Author: Jérémie Galarneau <jeremie.galarneau@efficios.com>
15 * Permission is hereby granted, free of charge, to any person obtaining a copy
16 * of this software and associated documentation files (the "Software"), to deal
17 * in the Software without restriction, including without limitation the rights
18 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
19 * copies of the Software, and to permit persons to whom the Software is
20 * furnished to do so, subject to the following conditions:
22 * The above copyright notice and this permission notice shall be included in
23 * all copies or substantial portions of the Software.
25 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
35 #include <babeltrace/babeltrace-internal.h>
36 #include <babeltrace/plugin/plugin.h>
37 #include <babeltrace/graph/component-class.h>
38 #include <babeltrace/graph/component-class-source.h>
39 #include <babeltrace/graph/component-class-filter.h>
40 #include <babeltrace/graph/component-class-sink.h>
47 * Plugin interface's version, not synced with Babeltrace's version
50 #define __BT_PLUGIN_VERSION_MAJOR 1
51 #define __BT_PLUGIN_VERSION_MINOR 0
53 /* Plugin initialization function type */
54 typedef enum bt_plugin_status (*bt_plugin_init_func
)(
55 struct bt_plugin
*plugin
);
57 /* Plugin exit function type */
58 typedef enum bt_plugin_status (*bt_plugin_exit_func
)(void);
61 * Function to call from a plugin's initialization function to add a
62 * component class to a plugin object.
64 extern enum bt_plugin_status
bt_plugin_add_component_class(
65 struct bt_plugin
*plugin
,
66 struct bt_component_class
*component_class
);
68 /* Plugin descriptor: describes a single plugin (internal use) */
69 struct __bt_plugin_descriptor
{
70 /* Plugin's interface major version number */
73 /* Plugin's interface minor version number */
78 } __attribute__((packed
));
80 /* Type of a plugin attribute (internal use) */
81 enum __bt_plugin_descriptor_attribute_type
{
82 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_INIT
= 0,
83 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_EXIT
= 1,
84 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_AUTHOR
= 2,
85 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_LICENSE
= 3,
86 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION
= 4,
87 BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION
= 5,
90 /* Plugin (user) version */
91 struct __bt_plugin_descriptor_version
{
98 /* Plugin attribute (internal use) */
99 struct __bt_plugin_descriptor_attribute
{
100 /* Plugin descriptor to which to associate this attribute */
101 const struct __bt_plugin_descriptor
*plugin_descriptor
;
103 /* Name of the attribute's type for debug purposes */
104 const char *type_name
;
106 /* Attribute's type */
107 enum __bt_plugin_descriptor_attribute_type type
;
109 /* Attribute's value (depends on attribute's type) */
111 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_INIT */
112 bt_plugin_init_func init
;
114 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_EXIT */
115 bt_plugin_exit_func exit
;
117 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_AUTHOR */
120 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_LICENSE */
123 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION */
124 const char *description
;
126 /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION */
127 struct __bt_plugin_descriptor_version version
;
129 } __attribute__((packed
));
131 /* Component class descriptor (internal use) */
132 struct __bt_plugin_component_class_descriptor
{
134 * Plugin descriptor to which to associate this component
137 const struct __bt_plugin_descriptor
*plugin_descriptor
;
139 /* Component class name */
142 /* Component class type */
143 enum bt_component_class_type type
;
145 /* Mandatory methods (depends on component class type) */
147 /* BT_COMPONENT_CLASS_TYPE_SOURCE */
149 bt_component_class_notification_iterator_next_method notif_iter_next
;
152 /* BT_COMPONENT_CLASS_TYPE_FILTER */
154 bt_component_class_notification_iterator_next_method notif_iter_next
;
157 /* BT_COMPONENT_CLASS_TYPE_SINK */
159 bt_component_class_sink_consume_method consume
;
162 } __attribute__((packed
));
164 /* Type of a component class attribute (internal use) */
165 enum __bt_plugin_component_class_descriptor_attribute_type
{
166 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION
= 0,
167 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP
= 1,
168 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INIT_METHOD
= 2,
169 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD
= 3,
170 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD
= 4,
171 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_ACCEPT_PORT_CONNECTION_METHOD
= 5,
172 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_PORT_CONNECTED_METHOD
= 7,
173 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_PORT_DISCONNECTED_METHOD
= 8,
174 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_INIT_METHOD
= 9,
175 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_FINALIZE_METHOD
= 10,
176 BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_SEEK_TIME_METHOD
= 11,
179 /* Component class attribute (internal use) */
180 struct __bt_plugin_component_class_descriptor_attribute
{
182 * Component class plugin attribute to which to associate this
183 * component class attribute.
185 const struct __bt_plugin_component_class_descriptor
*comp_class_descriptor
;
187 /* Name of the attribute's type for debug purposes */
188 const char *type_name
;
190 /* Attribute's type */
191 enum __bt_plugin_component_class_descriptor_attribute_type type
;
193 /* Attribute's value (depends on attribute's type) */
195 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION */
196 const char *description
;
198 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP */
201 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INIT_METHOD */
202 bt_component_class_init_method init_method
;
204 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD */
205 bt_component_class_finalize_method finalize_method
;
207 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD */
208 bt_component_class_query_method query_method
;
210 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_ACCEPT_PORT_CONNECTION_METHOD */
211 bt_component_class_accept_port_connection_method accept_port_connection_method
;
213 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_PORT_CONNECTED_METHOD */
214 bt_component_class_port_connected_method port_connected_method
;
216 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_PORT_DISCONNECTED_METHOD */
217 bt_component_class_port_disconnected_method port_disconnected_method
;
219 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_INIT_METHOD */
220 bt_component_class_notification_iterator_init_method notif_iter_init_method
;
222 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_FINALIZE_METHOD */
223 bt_component_class_notification_iterator_finalize_method notif_iter_finalize_method
;
225 /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_SEEK_TIME_METHOD */
226 bt_component_class_notification_iterator_seek_time_method notif_iter_seek_time_method
;
228 } __attribute__((packed
));
230 struct __bt_plugin_descriptor
const * const *__bt_get_begin_section_plugin_descriptors(void);
231 struct __bt_plugin_descriptor
const * const *__bt_get_end_section_plugin_descriptors(void);
232 struct __bt_plugin_descriptor_attribute
const * const *__bt_get_begin_section_plugin_descriptor_attributes(void);
233 struct __bt_plugin_descriptor_attribute
const * const *__bt_get_end_section_plugin_descriptor_attributes(void);
234 struct __bt_plugin_component_class_descriptor
const * const *__bt_get_begin_section_component_class_descriptors(void);
235 struct __bt_plugin_component_class_descriptor
const * const *__bt_get_end_section_component_class_descriptors(void);
236 struct __bt_plugin_component_class_descriptor_attribute
const * const *__bt_get_begin_section_component_class_descriptor_attributes(void);
237 struct __bt_plugin_component_class_descriptor_attribute
const * const *__bt_get_end_section_component_class_descriptor_attributes(void);
240 * Variable attributes for a plugin descriptor pointer to be added to
241 * the plugin descriptor section (internal use).
244 #define __BT_PLUGIN_DESCRIPTOR_ATTRS \
245 __attribute__((section("__DATA,btp_desc"), used))
247 #define __BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL \
248 __start___bt_plugin_descriptors
250 #define __BT_PLUGIN_DESCRIPTOR_END_SYMBOL \
251 __stop___bt_plugin_descriptors
253 #define __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA \
254 __asm("section$start$__DATA$btp_desc")
256 #define __BT_PLUGIN_DESCRIPTOR_END_EXTRA \
257 __asm("section$end$__DATA$btp_desc")
261 #define __BT_PLUGIN_DESCRIPTOR_ATTRS \
262 __attribute__((section("__bt_plugin_descriptors"), used))
264 #define __BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL \
265 __start___bt_plugin_descriptors
267 #define __BT_PLUGIN_DESCRIPTOR_END_SYMBOL \
268 __stop___bt_plugin_descriptors
270 #define __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA
272 #define __BT_PLUGIN_DESCRIPTOR_END_EXTRA
276 * Variable attributes for a plugin attribute pointer to be added to
277 * the plugin attribute section (internal use).
280 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS \
281 __attribute__((section("__DATA,btp_desc_att"), used))
283 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
284 __start___bt_plugin_descriptor_attributes
286 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
287 __stop___bt_plugin_descriptor_attributes
289 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA \
290 __asm("section$start$__DATA$btp_desc_att")
292 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA \
293 __asm("section$end$__DATA$btp_desc_att")
297 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS \
298 __attribute__((section("__bt_plugin_descriptor_attributes"), used))
300 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
301 __start___bt_plugin_descriptor_attributes
303 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
304 __stop___bt_plugin_descriptor_attributes
306 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA
308 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA
312 * Variable attributes for a component class descriptor pointer to be
313 * added to the component class descriptor section (internal use).
316 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS \
317 __attribute__((section("__DATA,btp_cc_desc"), used))
319 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL \
320 __start___bt_plugin_component_class_descriptors
322 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL \
323 __stop___bt_plugin_component_class_descriptors
325 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA \
326 __asm("section$start$__DATA$btp_cc_desc")
328 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA \
329 __asm("section$end$__DATA$btp_cc_desc")
333 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS \
334 __attribute__((section("__bt_plugin_component_class_descriptors"), used))
336 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL \
337 __start___bt_plugin_component_class_descriptors
339 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL \
340 __stop___bt_plugin_component_class_descriptors
342 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA
344 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA
348 * Variable attributes for a component class descriptor attribute
349 * pointer to be added to the component class descriptor attribute
350 * section (internal use).
353 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_ATTRS \
354 __attribute__((section("__DATA,btp_cc_desc_att"), used))
356 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
357 __start___bt_plugin_component_class_descriptor_attributes
359 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
360 __stop___bt_plugin_component_class_descriptor_attributes
362 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA \
363 __asm("section$start$__DATA$btp_cc_desc_att")
365 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_EXTRA \
366 __asm("section$end$__DATA$btp_cc_desc_att")
370 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_ATTRS \
371 __attribute__((section("__bt_plugin_component_class_descriptor_attributes"), used))
373 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
374 __start___bt_plugin_component_class_descriptor_attributes
376 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
377 __stop___bt_plugin_component_class_descriptor_attributes
379 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA
381 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_EXTRA
385 * Declares a plugin descriptor pointer variable with a custom ID.
387 * _id: ID (any valid C identifier except `auto`).
389 #define BT_PLUGIN_DECLARE(_id) extern struct __bt_plugin_descriptor __bt_plugin_descriptor_##_id
392 * Defines a plugin descriptor with a custom ID.
394 * _id: ID (any valid C identifier except `auto`).
395 * _name: Plugin's name (C string).
397 #define BT_PLUGIN_WITH_ID(_id, _name) \
398 struct __bt_plugin_descriptor __bt_plugin_descriptor_##_id = { \
399 .major = __BT_PLUGIN_VERSION_MAJOR, \
400 .minor = __BT_PLUGIN_VERSION_MINOR, \
403 static struct __bt_plugin_descriptor const * const __bt_plugin_descriptor_##_id##_ptr __BT_PLUGIN_DESCRIPTOR_ATTRS = &__bt_plugin_descriptor_##_id
406 * Defines a plugin attribute (generic, internal use).
408 * _attr_name: Name of the attribute (C identifier).
409 * _attr_type: Type of the attribute (enum __bt_plugin_descriptor_attribute_type).
410 * _id: Plugin descriptor ID (C identifier).
413 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(_attr_name, _attr_type, _id, _x) \
414 static struct __bt_plugin_descriptor_attribute __bt_plugin_descriptor_attribute_##_id##_##_attr_name = { \
415 .plugin_descriptor = &__bt_plugin_descriptor_##_id, \
416 .type_name = #_attr_name, \
417 .type = _attr_type, \
418 .value._attr_name = _x, \
420 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
423 * Defines a plugin initialization function attribute attached to a
424 * specific plugin descriptor.
426 * _id: Plugin descriptor ID (C identifier).
427 * _x: Initialization function (bt_plugin_init_func).
429 #define BT_PLUGIN_INIT_WITH_ID(_id, _x) \
430 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(init, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_INIT, _id, _x)
433 * Defines a plugin exit function attribute attached to a specific
436 * _id: Plugin descriptor ID (C identifier).
437 * _x: Exit function (bt_plugin_exit_func).
439 #define BT_PLUGIN_EXIT_WITH_ID(_id, _x) \
440 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(exit, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_EXIT, _id, _x)
443 * Defines an author attribute attached to a specific plugin descriptor.
445 * _id: Plugin descriptor ID (C identifier).
446 * _x: Author (C string).
448 #define BT_PLUGIN_AUTHOR_WITH_ID(_id, _x) \
449 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(author, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_AUTHOR, _id, _x)
452 * Defines a license attribute attached to a specific plugin descriptor.
454 * _id: Plugin descriptor ID (C identifier).
455 * _x: License (C string).
457 #define BT_PLUGIN_LICENSE_WITH_ID(_id, _x) \
458 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(license, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_LICENSE, _id, _x)
461 * Defines a description attribute attached to a specific plugin
464 * _id: Plugin descriptor ID (C identifier).
465 * _x: Description (C string).
467 #define BT_PLUGIN_DESCRIPTION_WITH_ID(_id, _x) \
468 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _id, _x)
470 #define __BT_PLUGIN_VERSION_STRUCT_VALUE(_major, _minor, _patch, _extra) \
471 {.major = _major, .minor = _minor, .patch = _patch, .extra = _extra,}
474 * Defines a version attribute attached to a specific plugin descriptor.
476 * _id: Plugin descriptor ID (C identifier).
477 * _major: Plugin's major version (uint32_t).
478 * _minor: Plugin's minor version (uint32_t).
479 * _patch: Plugin's patch version (uint32_t).
480 * _extra: Plugin's version extra information (C string).
482 #define BT_PLUGIN_VERSION_WITH_ID(_id, _major, _minor, _patch, _extra) \
483 __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(version, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION, _id, __BT_PLUGIN_VERSION_STRUCT_VALUE(_major, _minor, _patch, _extra))
486 * Defines a source component class descriptor with a custom ID.
488 * _id: ID (any valid C identifier except `auto`).
489 * _comp_class_id: Component class ID (C identifier).
490 * _name: Component class name (C string).
491 * _notif_iter_next_method: Component class's iterator next method
492 * (bt_component_class_notification_iterator_next_method).
494 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_WITH_ID(_id, _comp_class_id, _name, _notif_iter_next_method) \
495 static struct __bt_plugin_component_class_descriptor __bt_plugin_source_component_class_descriptor_##_id##_##_comp_class_id = { \
496 .plugin_descriptor = &__bt_plugin_descriptor_##_id, \
498 .type = BT_COMPONENT_CLASS_TYPE_SOURCE, \
499 .methods.source = { \
500 .notif_iter_next = _notif_iter_next_method, \
503 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
506 * Defines a filter component class descriptor with a custom ID.
508 * _id: ID (any valid C identifier except `auto`).
509 * _comp_class_id: Component class ID (C identifier).
510 * _name: Component class name (C string).
511 * _notif_iter_next_method: Component class's iterator next method
512 * (bt_component_class_notification_iterator_next_method).
514 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_WITH_ID(_id, _comp_class_id, _name, _notif_iter_next_method) \
515 static struct __bt_plugin_component_class_descriptor __bt_plugin_filter_component_class_descriptor_##_id##_##_comp_class_id = { \
516 .plugin_descriptor = &__bt_plugin_descriptor_##_id, \
518 .type = BT_COMPONENT_CLASS_TYPE_FILTER, \
519 .methods.filter = { \
520 .notif_iter_next = _notif_iter_next_method, \
523 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
526 * Defines a sink component class descriptor with a custom ID.
528 * _id: ID (any valid C identifier except `auto`).
529 * _comp_class_id: Component class ID (C identifier).
530 * _name: Component class name (C string).
531 * _consume_method: Component class's iterator consume method
532 * (bt_component_class_sink_consume_method).
534 #define BT_PLUGIN_SINK_COMPONENT_CLASS_WITH_ID(_id, _comp_class_id, _name, _consume_method) \
535 static struct __bt_plugin_component_class_descriptor __bt_plugin_sink_component_class_descriptor_##_id##_##_comp_class_id = { \
536 .plugin_descriptor = &__bt_plugin_descriptor_##_id, \
538 .type = BT_COMPONENT_CLASS_TYPE_SINK, \
540 .consume = _consume_method, \
543 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
546 * Defines a component class descriptor attribute (generic, internal
549 * _id: Plugin descriptor ID (C identifier).
550 * _comp_class_id: Component class ID (C identifier).
551 * _type: Component class type (`source`, `filter`, or `sink`).
552 * _attr_name: Name of the attribute (C identifier).
553 * _attr_type: Type of the attribute
554 * (enum __bt_plugin_descriptor_attribute_type).
557 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(_attr_name, _attr_type, _id, _comp_class_id, _type, _x) \
558 static struct __bt_plugin_component_class_descriptor_attribute __bt_plugin_##_type##_component_class_descriptor_attribute_##_id##_##_comp_class_id##_##_attr_name = { \
559 .comp_class_descriptor = &__bt_plugin_##_type##_component_class_descriptor_##_id##_##_comp_class_id, \
560 .type_name = #_attr_name, \
561 .type = _attr_type, \
562 .value._attr_name = _x, \
564 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
567 * Defines a description attribute attached to a specific source
568 * component class descriptor.
570 * _id: Plugin descriptor ID (C identifier).
571 * _comp_class_id: Component class descriptor ID (C identifier).
572 * _x: Description (C string).
574 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION_WITH_ID(_id, _comp_class_id, _x) \
575 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _id, _comp_class_id, source, _x)
578 * Defines a description attribute attached to a specific filter
579 * component class descriptor.
581 * _id: Plugin descriptor ID (C identifier).
582 * _comp_class_id: Component class descriptor ID (C identifier).
583 * _x: Description (C string).
585 #define BT_PLUGIN_FILTER_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, filter, _x)
589 * Defines a description attribute attached to a specific sink
590 * component class descriptor.
592 * _id: Plugin descriptor ID (C identifier).
593 * _comp_class_id: Component class descriptor ID (C identifier).
594 * _x: Description (C string).
596 #define BT_PLUGIN_SINK_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, sink, _x)
600 * Defines a help attribute attached to a specific source component
603 * _id: Plugin descriptor ID (C identifier).
604 * _comp_class_id: Component class descriptor ID (C identifier).
605 * _x: Help (C string).
607 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP_WITH_ID(_id, _comp_class_id, _x) \
608 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(help, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP, _id, _comp_class_id, source, _x)
611 * Defines a help attribute attached to a specific filter component
614 * _id: Plugin descriptor ID (C identifier).
615 * _comp_class_id: Component class descriptor ID (C identifier).
616 * _x: Help (C string).
618 #define BT_PLUGIN_FILTER_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, filter, _x)
622 * Defines a help attribute attached to a specific sink component class
625 * _id: Plugin descriptor ID (C identifier).
626 * _comp_class_id: Component class descriptor ID (C identifier).
627 * _x: Help (C string).
629 #define BT_PLUGIN_SINK_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, sink, _x)
633 * Defines an initialization method attribute attached to a specific
634 * source component class descriptor.
636 * _id: Plugin descriptor ID (C identifier).
637 * _comp_class_id: Component class descriptor ID (C identifier).
638 * _x: Initialization method (bt_component_class_init_method).
640 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_INIT_METHOD_WITH_ID(_id, _comp_class_id, _x) \
641 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(init_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INIT_METHOD, _id, _comp_class_id, source, _x)
644 * Defines an initialization method attribute attached to a specific
645 * filter component class descriptor.
647 * _id: Plugin descriptor ID (C identifier).
648 * _comp_class_id: Component class descriptor ID (C identifier).
649 * _x: Initialization method (bt_component_class_init_method).
651 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_INIT_METHOD_WITH_ID(_id, _comp_class_id, _x) \
652 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(init_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INIT_METHOD, _id, _comp_class_id, filter, _x)
655 * Defines an initialization method attribute attached to a specific
656 * sink component class descriptor.
658 * _id: Plugin descriptor ID (C identifier).
659 * _comp_class_id: Component class descriptor ID (C identifier).
660 * _x: Initialization method (bt_component_class_init_method).
662 #define BT_PLUGIN_SINK_COMPONENT_CLASS_INIT_METHOD_WITH_ID(_id, _comp_class_id, _x) \
663 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(init_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INIT_METHOD, _id, _comp_class_id, sink, _x)
666 * Defines a finalize method attribute attached to a specific source
667 * component class descriptor.
669 * _id: Plugin descriptor ID (C identifier).
670 * _comp_class_id: Component class descriptor ID (C identifier).
671 * _x: Finalize method (bt_component_class_finalize_method).
673 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
674 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _id, _comp_class_id, source, _x)
677 * Defines a finalize method attribute attached to a specific filter
678 * component class descriptor.
680 * _id: Plugin descriptor ID (C identifier).
681 * _comp_class_id: Component class descriptor ID (C identifier).
682 * _x: Finalize method (bt_component_class_finalize_method).
684 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
685 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _id, _comp_class_id, filter, _x)
688 * Defines a finalize method attribute attached to a specific sink
689 * component class descriptor.
691 * _id: Plugin descriptor ID (C identifier).
692 * _comp_class_id: Component class descriptor ID (C identifier).
693 * _x: Finalize method (bt_component_class_finalize_method).
695 #define BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
696 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _id, _comp_class_id, sink, _x)
699 * Defines a query method attribute attached to a specific source
700 * component class descriptor.
702 * _id: Plugin descriptor ID (C identifier).
703 * _comp_class_id: Component class descriptor ID (C identifier).
704 * _x: Finalize method (bt_component_class_query_method).
706 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_id, _comp_class_id, _x) \
707 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _id, _comp_class_id, source, _x)
710 * Defines a query method attribute attached to a specific filter
711 * component class descriptor.
713 * _id: Plugin descriptor ID (C identifier).
714 * _comp_class_id: Component class descriptor ID (C identifier).
715 * _x: Finalize method (bt_component_class_query_method).
717 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_id, _comp_class_id, _x) \
718 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _id, _comp_class_id, filter, _x)
721 * Defines a query method attribute attached to a specific sink
722 * component class descriptor.
724 * _id: Plugin descriptor ID (C identifier).
725 * _comp_class_id: Component class descriptor ID (C identifier).
726 * _x: Finalize method (bt_component_class_query_method).
728 #define BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_id, _comp_class_id, _x) \
729 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _id, _comp_class_id, sink, _x)
732 * Defines an accept port connection method attribute attached to a
733 * specific source component class descriptor.
735 * _id: Plugin descriptor ID (C identifier).
736 * _comp_class_id: Component class descriptor ID (C identifier).
737 * _x: Accept port connection method
738 * (bt_component_class_accept_port_connection_method).
740 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_ACCEPT_PORT_CONNECTION_METHOD_WITH_ID(_id, _comp_class_id, _x) \
741 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(accept_port_connection_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_ACCEPT_PORT_CONNECTION_METHOD, _id, _comp_class_id, source, _x)
744 * Defines an accept port connection method attribute attached to a
745 * specific filter component class descriptor.
747 * _id: Plugin descriptor ID (C identifier).
748 * _comp_class_id: Component class descriptor ID (C identifier).
749 * _x: Accept port connection method
750 * (bt_component_class_accept_port_connection_method).
752 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_ACCEPT_PORT_CONNECTION_METHOD_WITH_ID(_id, _comp_class_id, _x) \
753 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(accept_port_connection_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_ACCEPT_PORT_CONNECTION_METHOD, _id, _comp_class_id, filter, _x)
756 * Defines an accept port connection method attribute attached to a
757 * specific sink component class descriptor.
759 * _id: Plugin descriptor ID (C identifier).
760 * _comp_class_id: Component class descriptor ID (C identifier).
761 * _x: Accept port connection method
762 * (bt_component_class_accept_port_connection_method).
764 #define BT_PLUGIN_SINK_COMPONENT_CLASS_ACCEPT_PORT_CONNECTION_METHOD_WITH_ID(_id, _comp_class_id, _x) \
765 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(accept_port_connection_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_ACCEPT_PORT_CONNECTION_METHOD, _id, _comp_class_id, sink, _x)
768 * Defines a port connected method attribute attached to a specific
769 * source component class descriptor.
771 * _id: Plugin descriptor ID (C identifier).
772 * _comp_class_id: Component class descriptor ID (C identifier).
773 * _x: Port connected method
774 * (bt_component_class_port_connected_method).
776 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_PORT_CONNECTED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
777 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_PORT_CONNECTED_METHOD, _id, _comp_class_id, source, _x)
780 * Defines a port connected method attribute attached to a specific
781 * filter component class descriptor.
783 * _id: Plugin descriptor ID (C identifier).
784 * _comp_class_id: Component class descriptor ID (C identifier).
785 * _x: Port connected method
786 * (bt_component_class_port_connected_method).
788 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_PORT_CONNECTED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
789 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_PORT_CONNECTED_METHOD, _id, _comp_class_id, filter, _x)
792 * Defines a port connected method attribute attached to a specific
793 * sink component class descriptor.
795 * _id: Plugin descriptor ID (C identifier).
796 * _comp_class_id: Component class descriptor ID (C identifier).
797 * _x: Port connected method
798 * (bt_component_class_port_connected_method).
800 #define BT_PLUGIN_SINK_COMPONENT_CLASS_PORT_CONNECTED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
801 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_PORT_CONNECTED_METHOD, _id, _comp_class_id, sink, _x)
804 * Defines a port disconnected method attribute attached to a specific
805 * source component class descriptor.
807 * _id: Plugin descriptor ID (C identifier).
808 * _comp_class_id: Component class descriptor ID (C identifier).
809 * _x: Port disconnected method
810 * (bt_component_class_port_disconnected_method).
812 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_PORT_DISCONNECTED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
813 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(port_disconnected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_PORT_DISCONNECTED_METHOD, _id, _comp_class_id, source, _x)
816 * Defines a port disconnected method attribute attached to a specific
817 * filter component class descriptor.
819 * _id: Plugin descriptor ID (C identifier).
820 * _comp_class_id: Component class descriptor ID (C identifier).
821 * _x: Port disconnected method
822 * (bt_component_class_port_disconnected_method).
824 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_PORT_DISCONNECTED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
825 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(port_disconnected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_PORT_DISCONNECTED_METHOD, _id, _comp_class_id, filter, _x)
828 * Defines a port disconnected method attribute attached to a specific
829 * sink component class descriptor.
831 * _id: Plugin descriptor ID (C identifier).
832 * _comp_class_id: Component class descriptor ID (C identifier).
833 * _x: Port disconnected method
834 * (bt_component_class_port_disconnected_method).
836 #define BT_PLUGIN_SINK_COMPONENT_CLASS_PORT_DISCONNECTED_METHOD_WITH_ID(_id, _comp_class_id, _x) \
837 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(port_disconnected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_PORT_DISCONNECTED_METHOD, _id, _comp_class_id, sink, _x)
840 * Defines an iterator initialization method attribute attached to a
841 * specific source component class descriptor.
843 * _id: Plugin descriptor ID (C identifier).
844 * _comp_class_id: Component class descriptor ID (C identifier).
845 * _x: Iterator initialization method
846 * (bt_component_class_notification_iterator_init_method).
848 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_INIT_METHOD_WITH_ID(_id, _comp_class_id, _x) \
849 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(notif_iter_init_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_INIT_METHOD, _id, _comp_class_id, source, _x)
852 * Defines an iterator finalize method attribute attached to a specific
853 * source component class descriptor.
855 * _id: Plugin descriptor ID (C identifier).
856 * _comp_class_id: Component class descriptor ID (C identifier).
857 * _x: Iterator finalize method
858 * (bt_component_class_notification_iterator_finalize_method).
860 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
861 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(notif_iter_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_FINALIZE_METHOD, _id, _comp_class_id, source, _x)
864 * Defines an iterator seek time method attribute attached to a specific
865 * source component class descriptor.
867 * _id: Plugin descriptor ID (C identifier).
868 * _comp_class_id: Component class descriptor ID (C identifier).
869 * _x: Iterator seek time method
870 * (bt_component_class_notification_iterator_seek_time_method).
872 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_SEEK_TIME_METHOD_WITH_ID(_id, _comp_class_id, _x) \
873 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(notif_iter_seek_time_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_SEEK_TIME_METHOD, _id, _comp_class_id, source, _x)
876 * Defines an iterator initialization method attribute attached to a
877 * specific filter component class descriptor.
879 * _id: Plugin descriptor ID (C identifier).
880 * _comp_class_id: Component class descriptor ID (C identifier).
881 * _x: Iterator initialization method
882 * (bt_component_class_notification_iterator_init_method).
884 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_INIT_METHOD_WITH_ID(_id, _comp_class_id, _x) \
885 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(notif_iter_init_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_INIT_METHOD, _id, _comp_class_id, filter, _x)
888 * Defines an iterator finalize method attribute attached to a specific
889 * filter component class descriptor.
891 * _id: Plugin descriptor ID (C identifier).
892 * _comp_class_id: Component class descriptor ID (C identifier).
893 * _x: Iterator finalize method
894 * (bt_component_class_notification_iterator_finalize_method).
896 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
897 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(notif_iter_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_FINALIZE_METHOD, _id, _comp_class_id, filter, _x)
900 * Defines an iterator seek time method attribute attached to a specific
901 * filter component class descriptor.
903 * _id: Plugin descriptor ID (C identifier).
904 * _comp_class_id: Component class descriptor ID (C identifier).
905 * _x: Iterator seek time method
906 * (bt_component_class_notification_iterator_seek_time_method).
908 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_SEEK_TIME_METHOD_WITH_ID(_id, _comp_class_id, _x) \
909 __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(notif_iter_seek_time_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_SEEK_TIME_METHOD, _id, _comp_class_id, filter, _x)
912 * Defines a plugin descriptor with an automatic ID.
914 * _name: Plugin's name (C string).
916 #define BT_PLUGIN(_name) static BT_PLUGIN_WITH_ID(auto, #_name)
919 * Defines a plugin initialization function attribute attached to the
920 * automatic plugin descriptor.
922 * _x: Initialization function (bt_plugin_init_func).
924 #define BT_PLUGIN_INIT(_x) BT_PLUGIN_INIT_WITH_ID(auto, _x)
927 * Defines a plugin exit function attribute attached to the automatic
930 * _x: Exit function (bt_plugin_exit_func).
932 #define BT_PLUGIN_EXIT(_x) BT_PLUGIN_EXIT_WITH_ID(auto, _x)
935 * Defines an author attribute attached to the automatic plugin
938 * _x: Author (C string).
940 #define BT_PLUGIN_AUTHOR(_x) BT_PLUGIN_AUTHOR_WITH_ID(auto, _x)
943 * Defines a license attribute attached to the automatic plugin
946 * _x: License (C string).
948 #define BT_PLUGIN_LICENSE(_x) BT_PLUGIN_LICENSE_WITH_ID(auto, _x)
951 * Defines a description attribute attached to the automatic plugin
954 * _x: Description (C string).
956 #define BT_PLUGIN_DESCRIPTION(_x) BT_PLUGIN_DESCRIPTION_WITH_ID(auto, _x)
959 * Defines a version attribute attached to the automatic plugin
962 * _major: Plugin's major version (uint32_t).
963 * _minor: Plugin's minor version (uint32_t).
964 * _patch: Plugin's patch version (uint32_t).
965 * _extra: Plugin's version extra information (C string).
967 #define BT_PLUGIN_VERSION(_major, _minor, _patch, _extra) BT_PLUGIN_VERSION_WITH_ID(auto, _major, _minor, _patch, _extra)
970 * Defines a source component class attached to the automatic plugin
971 * descriptor. Its ID is the same as its name, hence its name must be a
972 * C identifier in this version.
974 * _name: Component class name (C identifier).
975 * _notif_iter_next_method: Component class's iterator next method
976 * (bt_component_class_notification_iterator_next_method).
978 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS(_name, _notif_iter_next_method) \
979 BT_PLUGIN_SOURCE_COMPONENT_CLASS_WITH_ID(auto, _name, #_name, _notif_iter_next_method)
982 * Defines a filter component class attached to the automatic plugin
983 * descriptor. Its ID is the same as its name, hence its name must be a
984 * C identifier in this version.
986 * _name: Component class name (C identifier).
987 * _notif_iter_next_method: Component class's iterator next method
988 * (bt_component_class_notification_iterator_next_method).
990 #define BT_PLUGIN_FILTER_COMPONENT_CLASS(_name, _notif_iter_next_method) \
991 BT_PLUGIN_FILTER_COMPONENT_CLASS_WITH_ID(auto, _name, #_name, _notif_iter_next_method)
994 * Defines a sink component class attached to the automatic plugin
995 * descriptor. Its ID is the same as its name, hence its name must be a
996 * C identifier in this version.
998 * _name: Component class name (C identifier).
999 * _consume_method: Component class's consume method
1000 * (bt_component_class_sink_consume_method).
1002 #define BT_PLUGIN_SINK_COMPONENT_CLASS(_name, _consume_method) \
1003 BT_PLUGIN_SINK_COMPONENT_CLASS_WITH_ID(auto, _name, #_name, _consume_method)
1006 * Defines a description attribute attached to a source component class
1007 * descriptor which is attached to the automatic plugin descriptor.
1009 * _name: Component class name (C identifier).
1010 * _x: Description (C string).
1012 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION(_name, _x) \
1013 BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _x)
1016 * Defines a description attribute attached to a filter component class
1017 * descriptor which is attached to the automatic plugin descriptor.
1019 * _name: Component class name (C identifier).
1020 * _x: Description (C string).
1022 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION(_name, _x) \
1023 BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _x)
1026 * Defines a description attribute attached to a sink component class
1027 * descriptor which is attached to the automatic plugin descriptor.
1029 * _name: Component class name (C identifier).
1030 * _x: Description (C string).
1032 #define BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION(_name, _x) \
1033 BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _x)
1036 * Defines a help attribute attached to a source component class
1037 * descriptor which is attached to the automatic plugin descriptor.
1039 * _name: Component class name (C identifier).
1040 * _x: Help (C string).
1042 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP(_name, _x) \
1043 BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _x)
1046 * Defines a help attribute attached to a filter component class
1047 * descriptor which is attached to the automatic plugin descriptor.
1049 * _name: Component class name (C identifier).
1050 * _x: Help (C string).
1052 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP(_name, _x) \
1053 BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _x)
1056 * Defines a help attribute attached to a sink component class
1057 * descriptor which is attached to the automatic plugin descriptor.
1059 * _name: Component class name (C identifier).
1060 * _x: Help (C string).
1062 #define BT_PLUGIN_SINK_COMPONENT_CLASS_HELP(_name, _x) \
1063 BT_PLUGIN_SINK_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _x)
1066 * Defines an initialization method attribute attached to a source
1067 * component class descriptor which is attached to the automatic plugin
1070 * _name: Component class name (C identifier).
1071 * _x: Initialization method (bt_component_class_init_method).
1073 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_INIT_METHOD(_name, _x) \
1074 BT_PLUGIN_SOURCE_COMPONENT_CLASS_INIT_METHOD_WITH_ID(auto, _name, _x)
1077 * Defines an initialization method attribute attached to a filter
1078 * component class descriptor which is attached to the automatic plugin
1081 * _name: Component class name (C identifier).
1082 * _x: Initialization method (bt_component_class_init_method).
1084 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_INIT_METHOD(_name, _x) \
1085 BT_PLUGIN_FILTER_COMPONENT_CLASS_INIT_METHOD_WITH_ID(auto, _name, _x)
1088 * Defines an initialization method attribute attached to a sink
1089 * component class descriptor which is attached to the automatic plugin
1092 * _name: Component class name (C identifier).
1093 * _x: Initialization method (bt_component_class_init_method).
1095 #define BT_PLUGIN_SINK_COMPONENT_CLASS_INIT_METHOD(_name, _x) \
1096 BT_PLUGIN_SINK_COMPONENT_CLASS_INIT_METHOD_WITH_ID(auto, _name, _x)
1099 * Defines a finalize method attribute attached to a source component
1100 * class descriptor which is attached to the automatic plugin
1103 * _name: Component class name (C identifier).
1104 * _x: Initialization method (bt_component_class_finalize_method).
1106 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD(_name, _x) \
1107 BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1110 * Defines a finalize method attribute attached to a filter component
1111 * class descriptor which is attached to the automatic plugin
1114 * _name: Component class name (C identifier).
1115 * _x: Initialization method (bt_component_class_finalize_method).
1117 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD(_name, _x) \
1118 BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1121 * Defines a finalize method attribute attached to a sink component class
1122 * descriptor which is attached to the automatic plugin descriptor.
1124 * _name: Component class name (C identifier).
1125 * _x: Initialization method (bt_component_class_finalize_method).
1127 #define BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD(_name, _x) \
1128 BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1131 * Defines a query method attribute attached to a source component
1132 * class descriptor which is attached to the automatic plugin
1135 * _name: Component class name (C identifier).
1136 * _x: Initialization method (bt_component_class_query_method).
1138 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD(_name, _x) \
1139 BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _x)
1142 * Defines a query method attribute attached to a filter component
1143 * class descriptor which is attached to the automatic plugin
1146 * _name: Component class name (C identifier).
1147 * _x: Initialization method (bt_component_class_query_method).
1149 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD(_name, _x) \
1150 BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _x)
1153 * Defines a query method attribute attached to a sink component
1154 * class descriptor which is attached to the automatic plugin
1157 * _name: Component class name (C identifier).
1158 * _x: Initialization method (bt_component_class_query_method).
1160 #define BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD(_name, _x) \
1161 BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _x)
1164 * Defines an accept port connection method attribute attached to a
1165 * source component class descriptor which is attached to the automatic
1166 * plugin descriptor.
1168 * _name: Component class name (C identifier).
1169 * _x: Accept port connection method
1170 * (bt_component_class_accept_port_connection_method).
1172 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_ACCEPT_PORT_CONNECTION_METHOD(_name, _x) \
1173 BT_PLUGIN_SOURCE_COMPONENT_CLASS_ACCEPT_PORT_CONNECTION_METHOD_WITH_ID(auto, _name, _x)
1176 * Defines an accept port connection method attribute attached to a
1177 * filter component class descriptor which is attached to the automatic
1178 * plugin descriptor.
1180 * _name: Component class name (C identifier).
1181 * _x: Accept port connection method
1182 * (bt_component_class_accept_port_connection_method).
1184 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_ACCEPT_PORT_CONNECTION_METHOD(_name, _x) \
1185 BT_PLUGIN_FILTER_COMPONENT_CLASS_ACCEPT_PORT_CONNECTION_METHOD_WITH_ID(auto, _name, _x)
1188 * Defines an accept port connection method attribute attached to a sink
1189 * component class descriptor which is attached to the automatic plugin
1192 * _name: Component class name (C identifier).
1193 * _x: Accept port connection method
1194 * (bt_component_class_accept_port_connection_method).
1196 #define BT_PLUGIN_SINK_COMPONENT_CLASS_ACCEPT_PORT_CONNECTION_METHOD(_name, _x) \
1197 BT_PLUGIN_SINK_COMPONENT_CLASS_ACCEPT_PORT_CONNECTION_METHOD_WITH_ID(auto, _name, _x)
1200 * Defines a port connected method attribute attached to a source
1201 * component class descriptor which is attached to the automatic plugin
1204 * _name: Component class name (C identifier).
1205 * _x: Port connected (bt_component_class_port_connected_method).
1207 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_PORT_CONNECTED_METHOD(_name, _x) \
1208 BT_PLUGIN_SOURCE_COMPONENT_CLASS_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _x)
1211 * Defines a port connected method attribute attached to a filter
1212 * component class descriptor which is attached to the automatic plugin
1215 * _name: Component class name (C identifier).
1216 * _x: Port connected (bt_component_class_port_connected_method).
1218 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_PORT_CONNECTED_METHOD(_name, _x) \
1219 BT_PLUGIN_FILTER_COMPONENT_CLASS_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _x)
1222 * Defines a port connected method attribute attached to a sink
1223 * component class descriptor which is attached to the automatic plugin
1226 * _name: Component class name (C identifier).
1227 * _x: Port connected (bt_component_class_port_connected_method).
1229 #define BT_PLUGIN_SINK_COMPONENT_CLASS_PORT_CONNECTED_METHOD(_name, _x) \
1230 BT_PLUGIN_SINK_COMPONENT_CLASS_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _x)
1233 * Defines a port disconnected method attribute attached to a source
1234 * component class descriptor which is attached to the automatic plugin
1237 * _name: Component class name (C identifier).
1238 * _x: Port disconnected (bt_component_class_port_disconnected_method).
1240 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_PORT_DISCONNECTED_METHOD(_name, _x) \
1241 BT_PLUGIN_SOURCE_COMPONENT_CLASS_PORT_DISCONNECTED_METHOD_WITH_ID(auto, _name, _x)
1244 * Defines a port disconnected method attribute attached to a filter
1245 * component class descriptor which is attached to the automatic plugin
1248 * _name: Component class name (C identifier).
1249 * _x: Port disconnected (bt_component_class_port_disconnected_method).
1251 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_PORT_DISCONNECTED_METHOD(_name, _x) \
1252 BT_PLUGIN_FILTER_COMPONENT_CLASS_PORT_DISCONNECTED_METHOD_WITH_ID(auto, _name, _x)
1255 * Defines a port disconnected method attribute attached to a sink
1256 * component class descriptor which is attached to the automatic plugin
1259 * _name: Component class name (C identifier).
1260 * _x: Port disconnected (bt_component_class_port_disconnected_method).
1262 #define BT_PLUGIN_SINK_COMPONENT_CLASS_PORT_DISCONNECTED_METHOD(_name, _x) \
1263 BT_PLUGIN_SINK_COMPONENT_CLASS_PORT_DISCONNECTED_METHOD_WITH_ID(auto, _name, _x)
1266 * Defines an iterator initialization method attribute attached to a
1267 * source component class descriptor which is attached to the automatic
1268 * plugin descriptor.
1270 * _name: Component class name (C identifier).
1271 * _x: Iterator initialization method
1272 * (bt_component_class_notification_iterator_init_method).
1274 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_INIT_METHOD(_name, _x) \
1275 BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_INIT_METHOD_WITH_ID(auto, _name, _x)
1278 * Defines an iterator finalize method attribute attached to a source
1279 * component class descriptor which is attached to the automatic plugin
1282 * _name: Component class name (C identifier).
1283 * _x: Iterator finalize method
1284 * (bt_component_class_notification_iterator_finalize_method).
1286 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD(_name, _x) \
1287 BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1290 * Defines an iterator seek time method attribute attached to a source
1291 * component class descriptor which is attached to the automatic plugin
1294 * _name: Component class name (C identifier).
1295 * _x: Iterator seek time method
1296 * (bt_component_class_notification_iterator_seek_time_method).
1298 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_SEEK_TIME_METHOD(_name, _x) \
1299 BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_SEEK_TIME_METHOD_WITH_ID(auto, _name, _x)
1302 * Defines an iterator initialization method attribute attached to a
1303 * filter component class descriptor which is attached to the automatic
1304 * plugin descriptor.
1306 * _name: Component class name (C identifier).
1307 * _x: Iterator initialization method
1308 * (bt_component_class_notification_iterator_init_method).
1310 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_INIT_METHOD(_name, _x) \
1311 BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_INIT_METHOD_WITH_ID(auto, _name, _x)
1314 * Defines an iterator finalize method attribute attached to a filter
1315 * component class descriptor which is attached to the automatic plugin
1318 * _name: Component class name (C identifier).
1319 * _x: Iterator finalize method
1320 * (bt_component_class_notification_iterator_finalize_method).
1322 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD(_name, _x) \
1323 BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
1326 * Defines an iterator seek time method attribute attached to a filter
1327 * component class descriptor which is attached to the automatic plugin
1330 * _name: Component class name (C identifier).
1331 * _x: Iterator seek time method
1332 * (bt_component_class_notification_iterator_seek_time_method).
1334 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_SEEK_TIME_METHOD(_name, _x) \
1335 BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_SEEK_TIME_METHOD_WITH_ID(auto, _name, _x)
1337 #define BT_PLUGIN_MODULE() \
1338 static struct __bt_plugin_descriptor const * const __bt_plugin_descriptor_dummy __BT_PLUGIN_DESCRIPTOR_ATTRS = NULL; \
1339 BT_HIDDEN extern struct __bt_plugin_descriptor const *__BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA; \
1340 BT_HIDDEN extern struct __bt_plugin_descriptor const *__BT_PLUGIN_DESCRIPTOR_END_SYMBOL __BT_PLUGIN_DESCRIPTOR_END_EXTRA; \
1342 static struct __bt_plugin_descriptor_attribute const * const __bt_plugin_descriptor_attribute_dummy __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS = NULL; \
1343 BT_HIDDEN extern struct __bt_plugin_descriptor_attribute const *__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA; \
1344 BT_HIDDEN extern struct __bt_plugin_descriptor_attribute const *__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA; \
1346 static struct __bt_plugin_component_class_descriptor const * const __bt_plugin_component_class_descriptor_dummy __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS = NULL; \
1347 BT_HIDDEN extern struct __bt_plugin_component_class_descriptor const *__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA; \
1348 BT_HIDDEN extern struct __bt_plugin_component_class_descriptor const *__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA; \
1350 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; \
1351 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; \
1352 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; \
1354 struct __bt_plugin_descriptor const * const *__bt_get_begin_section_plugin_descriptors(void) \
1356 return &__BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL; \
1358 struct __bt_plugin_descriptor const * const *__bt_get_end_section_plugin_descriptors(void) \
1360 return &__BT_PLUGIN_DESCRIPTOR_END_SYMBOL; \
1362 struct __bt_plugin_descriptor_attribute const * const *__bt_get_begin_section_plugin_descriptor_attributes(void) \
1364 return &__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL; \
1366 struct __bt_plugin_descriptor_attribute const * const *__bt_get_end_section_plugin_descriptor_attributes(void) \
1368 return &__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL; \
1370 struct __bt_plugin_component_class_descriptor const * const *__bt_get_begin_section_component_class_descriptors(void) \
1372 return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL; \
1374 struct __bt_plugin_component_class_descriptor const * const *__bt_get_end_section_component_class_descriptors(void) \
1376 return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL; \
1378 struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_begin_section_component_class_descriptor_attributes(void) \
1380 return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL; \
1382 struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_end_section_component_class_descriptor_attributes(void) \
1384 return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL; \
1391 #endif /* BABELTRACE_PLUGIN_PLUGIN_DEV_H */