Babeltrace 2 C API  2.0.4
Open-source trace manipulation framework
plugin-dev.h
1 #ifndef BABELTRACE2_PLUGIN_PLUGIN_DEV_H
2 #define BABELTRACE2_PLUGIN_PLUGIN_DEV_H
3 
4 /*
5  * Copyright (c) 2010-2019 EfficiOS Inc. and Linux Foundation
6  *
7  * Permission is hereby granted, free of charge, to any person obtaining a copy
8  * of this software and associated documentation files (the "Software"), to deal
9  * in the Software without restriction, including without limitation the rights
10  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11  * copies of the Software, and to permit persons to whom the Software is
12  * furnished to do so, subject to the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be included in
15  * all copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23  * SOFTWARE.
24  */
25 
26 #ifndef __BT_IN_BABELTRACE_H
27 # error "Please include <babeltrace2/babeltrace.h> instead."
28 #endif
29 
30 #include <stdint.h>
31 
32 #include <babeltrace2/graph/component-class-dev.h>
33 #include <babeltrace2/graph/message-iterator-class.h>
34 #include <babeltrace2/types.h>
35 
36 /*
37  * _BT_HIDDEN: set the hidden attribute for internal functions
38  * On Windows, symbols are local unless explicitly exported,
39  * see https://gcc.gnu.org/wiki/Visibility
40  */
41 #if defined(_WIN32) || defined(__CYGWIN__)
42 #define _BT_HIDDEN
43 #else
44 #define _BT_HIDDEN __attribute__((visibility("hidden")))
45 #endif
46 
47 #ifdef __cplusplus
48 extern "C" {
49 #endif
50 
338 #define BT_PLUGIN_MODULE() \
339  static struct __bt_plugin_descriptor const * const __bt_plugin_descriptor_dummy __BT_PLUGIN_DESCRIPTOR_ATTRS = NULL; \
340  _BT_HIDDEN extern struct __bt_plugin_descriptor const *__BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA; \
341  _BT_HIDDEN extern struct __bt_plugin_descriptor const *__BT_PLUGIN_DESCRIPTOR_END_SYMBOL __BT_PLUGIN_DESCRIPTOR_END_EXTRA; \
342  \
343  static struct __bt_plugin_descriptor_attribute const * const __bt_plugin_descriptor_attribute_dummy __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS = NULL; \
344  _BT_HIDDEN extern struct __bt_plugin_descriptor_attribute const *__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA; \
345  _BT_HIDDEN extern struct __bt_plugin_descriptor_attribute const *__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA; \
346  \
347  static struct __bt_plugin_component_class_descriptor const * const __bt_plugin_component_class_descriptor_dummy __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS = NULL; \
348  _BT_HIDDEN extern struct __bt_plugin_component_class_descriptor const *__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA; \
349  _BT_HIDDEN extern struct __bt_plugin_component_class_descriptor const *__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA; \
350  \
351  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; \
352  _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; \
353  _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; \
354  \
355  struct __bt_plugin_descriptor const * const *__bt_get_begin_section_plugin_descriptors(void) \
356  { \
357  return &__BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL; \
358  } \
359  struct __bt_plugin_descriptor const * const *__bt_get_end_section_plugin_descriptors(void) \
360  { \
361  return &__BT_PLUGIN_DESCRIPTOR_END_SYMBOL; \
362  } \
363  struct __bt_plugin_descriptor_attribute const * const *__bt_get_begin_section_plugin_descriptor_attributes(void) \
364  { \
365  return &__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL; \
366  } \
367  struct __bt_plugin_descriptor_attribute const * const *__bt_get_end_section_plugin_descriptor_attributes(void) \
368  { \
369  return &__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL; \
370  } \
371  struct __bt_plugin_component_class_descriptor const * const *__bt_get_begin_section_component_class_descriptors(void) \
372  { \
373  return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL; \
374  } \
375  struct __bt_plugin_component_class_descriptor const * const *__bt_get_end_section_component_class_descriptors(void) \
376  { \
377  return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL; \
378  } \
379  struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_begin_section_component_class_descriptor_attributes(void) \
380  { \
381  return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL; \
382  } \
383  struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_end_section_component_class_descriptor_attributes(void) \
384  { \
385  return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL; \
386  }
387 
415 #define BT_PLUGIN_WITH_ID(_id, _name) \
416  struct __bt_plugin_descriptor __bt_plugin_descriptor_##_id = { \
417  .name = _name, \
418  }; \
419  static struct __bt_plugin_descriptor const * const __bt_plugin_descriptor_##_id##_ptr __BT_PLUGIN_DESCRIPTOR_ATTRS = &__bt_plugin_descriptor_##_id
420 
426 #define BT_PLUGIN(_name) static BT_PLUGIN_WITH_ID(auto, #_name)
427 
457 #define BT_PLUGIN_DESCRIPTION_WITH_ID(_id, _description) \
458  __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _id, _description)
459 
465 #define BT_PLUGIN_DESCRIPTION(_description) BT_PLUGIN_DESCRIPTION_WITH_ID(auto, _description)
466 
467 
490 #define BT_PLUGIN_AUTHOR_WITH_ID(_id, _author) \
491  __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(author, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_AUTHOR, _id, _author)
492 
498 #define BT_PLUGIN_AUTHOR(_author) BT_PLUGIN_AUTHOR_WITH_ID(auto, _author)
499 
522 #define BT_PLUGIN_LICENSE_WITH_ID(_id, _license) \
523  __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(license, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_LICENSE, _id, _license)
524 
530 #define BT_PLUGIN_LICENSE(_license) BT_PLUGIN_LICENSE_WITH_ID(auto, _license)
531 
572 #define BT_PLUGIN_VERSION_WITH_ID(_id, _major, _minor, _patch, _extra) \
573  __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(version, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION, _id, __BT_PLUGIN_VERSION_STRUCT_VALUE(_major, _minor, _patch, _extra))
574 
580 #define BT_PLUGIN_VERSION(_major, _minor, _patch, _extra) BT_PLUGIN_VERSION_WITH_ID(auto, _major, _minor, _patch, _extra)
581 
598  BT_PLUGIN_INITIALIZE_FUNC_STATUS_OK = __BT_FUNC_STATUS_OK,
599 
604  BT_PLUGIN_INITIALIZE_FUNC_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
605 
610  BT_PLUGIN_INITIALIZE_FUNC_STATUS_ERROR = __BT_FUNC_STATUS_ERROR,
612 
637  bt_self_plugin *self_plugin);
638 
659 #define BT_PLUGIN_INITIALIZE_FUNC_WITH_ID(_id, _func) \
660  __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(init, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_INIT, _id, _func)
661 
667 #define BT_PLUGIN_INITIALIZE_FUNC(_func) BT_PLUGIN_INITIALIZE_FUNC_WITH_ID(auto, _func)
668 
673 typedef void (*bt_plugin_finalize_func)(void);
674 
695 #define BT_PLUGIN_FINALIZE_FUNC_WITH_ID(_id, _func) \
696  __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(exit, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_EXIT, _id, _func)
697 
703 #define BT_PLUGIN_FINALIZE_FUNC(_func) BT_PLUGIN_FINALIZE_FUNC_WITH_ID(auto, _func)
704 
749 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_WITH_ID(_plugin_id, _component_class_id, _name, _message_iterator_class_next_method) \
750  static struct __bt_plugin_component_class_descriptor __bt_plugin_source_component_class_descriptor_##_plugin_id##_##_component_class_id = { \
751  .plugin_descriptor = &__bt_plugin_descriptor_##_plugin_id, \
752  .name = _name, \
753  .type = BT_COMPONENT_CLASS_TYPE_SOURCE, \
754  .methods = { .source = { .msg_iter_next = _message_iterator_class_next_method } }, \
755  }; \
756  static struct __bt_plugin_component_class_descriptor const * const __bt_plugin_source_component_class_descriptor_##_plugin_id##_##_component_class_id##_ptr __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS = &__bt_plugin_source_component_class_descriptor_##_plugin_id##_##_component_class_id
757 
774 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS(_name, _message_iterator_class_next_method) \
775  BT_PLUGIN_SOURCE_COMPONENT_CLASS_WITH_ID(auto, _name, #_name, _message_iterator_class_next_method)
776 
814 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_WITH_ID(_plugin_id, _component_class_id, _name, _message_iterator_class_next_method) \
815  static struct __bt_plugin_component_class_descriptor __bt_plugin_filter_component_class_descriptor_##_plugin_id##_##_component_class_id = { \
816  .plugin_descriptor = &__bt_plugin_descriptor_##_plugin_id, \
817  .name = _name, \
818  .type = BT_COMPONENT_CLASS_TYPE_FILTER, \
819  .methods = { .filter = { .msg_iter_next = _message_iterator_class_next_method } }, \
820  }; \
821  static struct __bt_plugin_component_class_descriptor const * const __bt_plugin_filter_component_class_descriptor_##_plugin_id##_##_component_class_id##_ptr __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS = &__bt_plugin_filter_component_class_descriptor_##_plugin_id##_##_component_class_id
822 
839 #define BT_PLUGIN_FILTER_COMPONENT_CLASS(_name, _message_iterator_class_next_method) \
840  BT_PLUGIN_FILTER_COMPONENT_CLASS_WITH_ID(auto, _name, #_name, _message_iterator_class_next_method)
841 
879 #define BT_PLUGIN_SINK_COMPONENT_CLASS_WITH_ID(_plugin_id, _component_class_id, _name, _consume_method) \
880  static struct __bt_plugin_component_class_descriptor __bt_plugin_sink_component_class_descriptor_##_plugin_id##_##_component_class_id = { \
881  .plugin_descriptor = &__bt_plugin_descriptor_##_plugin_id, \
882  .name = _name, \
883  .type = BT_COMPONENT_CLASS_TYPE_SINK, \
884  .methods = { .sink = { .consume = _consume_method } }, \
885  }; \
886  static struct __bt_plugin_component_class_descriptor const * const __bt_plugin_sink_component_class_descriptor_##_plugin_id##_##_component_class_id##_ptr __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS = &__bt_plugin_sink_component_class_descriptor_##_plugin_id##_##_component_class_id
887 
904 #define BT_PLUGIN_SINK_COMPONENT_CLASS(_name, _consume_method) \
905  BT_PLUGIN_SINK_COMPONENT_CLASS_WITH_ID(auto, _name, #_name, _consume_method)
906 
946 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION_WITH_ID(_plugin_id, _component_class_id, _description) \
947  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _plugin_id, _component_class_id, source, _description)
948 
955 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION(_name, _description) \
956  BT_PLUGIN_SOURCE_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _description)
957 
990 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP_WITH_ID(_plugin_id, _component_class_id, _help_text) \
991  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(help, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP, _plugin_id, _component_class_id, source, _help_text)
992 
999 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP(_name, _help_text) \
1000  BT_PLUGIN_SOURCE_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _help_text)
1001 
1041 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION_WITH_ID(_plugin_id, _component_class_id, _description) \
1042  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _plugin_id, _component_class_id, filter, _description)
1043 
1050 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION(_name, _description) \
1051  BT_PLUGIN_FILTER_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _description)
1052 
1085 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP_WITH_ID(_plugin_id, _component_class_id, _help_text) \
1086  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(help, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP, _plugin_id, _component_class_id, filter, _help_text)
1087 
1094 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP(_name, _help_text) \
1095  BT_PLUGIN_FILTER_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _help_text)
1096 
1136 #define BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION_WITH_ID(_plugin_id, _component_class_id, _description) \
1137  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(description, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION, _plugin_id, _component_class_id, sink, _description)
1138 
1145 #define BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION(_name, _description) \
1146  BT_PLUGIN_SINK_COMPONENT_CLASS_DESCRIPTION_WITH_ID(auto, _name, _description)
1147 
1180 #define BT_PLUGIN_SINK_COMPONENT_CLASS_HELP_WITH_ID(_plugin_id, _component_class_id, _help_text) \
1181  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(help, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP, _plugin_id, _component_class_id, sink, _help_text)
1182 
1189 #define BT_PLUGIN_SINK_COMPONENT_CLASS_HELP(_name, _help_text) \
1190  BT_PLUGIN_SINK_COMPONENT_CLASS_HELP_WITH_ID(auto, _name, _help_text)
1191 
1231 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
1232  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _plugin_id, _component_class_id, source, _method)
1233 
1241 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD(_name, _method) \
1242  BT_PLUGIN_SOURCE_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _method)
1243 
1277 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
1278  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_get_supported_mip_versions_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS_METHOD, _plugin_id, _component_class_id, source, _method)
1279 
1287 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD(_name, _method) \
1288  BT_PLUGIN_SOURCE_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(auto, _name, _method)
1289 
1322 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
1323  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD, _plugin_id, _component_class_id, source, _method)
1324 
1332 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_INITIALIZE_METHOD(_name, _method) \
1333  BT_PLUGIN_SOURCE_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _method)
1334 
1367 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
1368  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_FINALIZE_METHOD, _plugin_id, _component_class_id, source, _method)
1369 
1377 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD(_name, _method) \
1378  BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _method)
1379 
1413 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
1414  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INITIALIZE_METHOD, _plugin_id, _component_class_id, source, _method)
1415 
1423 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD(_name, _method) \
1424  BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _method)
1425 
1475 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS_WITH_ID(_plugin_id, _component_class_id, _seek_method, _can_seek_method) \
1476  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD, _plugin_id, _component_class_id, source, _seek_method); \
1477  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_can_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD, _plugin_id, _component_class_id, source, _can_seek_method)
1478 
1486 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS(_name, _seek_method, _can_seek_method) \
1487  BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS_WITH_ID(auto, _name, _seek_method, _can_seek_method)
1488 
1539 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS_WITH_ID(_plugin_id, _component_class_id, _seek_method, _can_seek_method) \
1540  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_seek_ns_from_origin_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_NS_FROM_ORIGIN_METHOD, _plugin_id, _component_class_id, source, _seek_method); \
1541  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_can_seek_ns_from_origin_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_NS_FROM_ORIGIN_METHOD, _plugin_id, _component_class_id, source, _can_seek_method)
1542 
1550 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS(_name, _seek_method, _can_seek_method) \
1551  BT_PLUGIN_SOURCE_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS_WITH_ID(auto, _name, _seek_method, _can_seek_method)
1552 
1587 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
1588  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_output_port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_CONNECTED_METHOD, _plugin_id, _component_class_id, source, _method)
1589 
1597 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD(_name, _method) \
1598  BT_PLUGIN_SOURCE_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _method)
1599 
1632 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
1633  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(source_query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _plugin_id, _component_class_id, source, _method)
1634 
1642 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD(_name, _method) \
1643  BT_PLUGIN_SOURCE_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _method)
1644 
1684 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
1685  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _plugin_id, _component_class_id, filter, _method)
1686 
1694 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD(_name, _method) \
1695  BT_PLUGIN_FILTER_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _method)
1696 
1730 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
1731  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_get_supported_mip_versions_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS_METHOD, _plugin_id, _component_class_id, filter, _method)
1732 
1740 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD(_name, _method) \
1741  BT_PLUGIN_FILTER_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(auto, _name, _method)
1742 
1775 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
1776  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD, _plugin_id, _component_class_id, filter, _method)
1777 
1785 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_INITIALIZE_METHOD(_name, _method) \
1786  BT_PLUGIN_FILTER_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _method)
1787 
1822 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
1823  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_input_port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_CONNECTED_METHOD, _plugin_id, _component_class_id, filter, _method)
1824 
1832 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD(_name, _method) \
1833  BT_PLUGIN_FILTER_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _method)
1834 
1867 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
1868  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_FINALIZE_METHOD, _plugin_id, _component_class_id, filter, _method)
1869 
1877 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD(_name, _method) \
1878  BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _method)
1879 
1913 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
1914  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INITIALIZE_METHOD, _plugin_id, _component_class_id, filter, _method)
1915 
1923 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD(_name, _method) \
1924  BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _method)
1925 
1975 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS_WITH_ID(_plugin_id, _component_class_id, _seek_method, _can_seek_method) \
1976  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD, _plugin_id, _component_class_id, filter, _seek_method); \
1977  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_can_seek_beginning_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD, _plugin_id, _component_class_id, filter, _can_seek_method);
1978 
1986 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS(_name, _seek_method, _can_seek_method) \
1987  BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHODS_WITH_ID(auto, _name, _seek_method, _can_seek_method)
1988 
2039 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS_WITH_ID(_plugin_id, _component_class_id, _seek_method, _can_seek_method) \
2040  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_seek_ns_from_origin_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_NS_FROM_ORIGIN_METHOD, _plugin_id, _component_class_id, filter, _seek_method); \
2041  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(msg_iter_can_seek_ns_from_origin_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_NS_FROM_ORIGIN_METHOD, _plugin_id, _component_class_id, filter, _can_seek_method)
2042 
2050 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS(_name, _seek_method, _can_seek_method) \
2051  BT_PLUGIN_FILTER_COMPONENT_CLASS_MESSAGE_ITERATOR_CLASS_SEEK_NS_FROM_ORIGIN_METHODS_WITH_ID(auto, _name, _seek_method, _can_seek_method)
2052 
2087 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
2088  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_output_port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_CONNECTED_METHOD, _plugin_id, _component_class_id, filter, _method)
2089 
2097 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD(_name, _method) \
2098  BT_PLUGIN_FILTER_COMPONENT_CLASS_OUTPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _method)
2099 
2132 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
2133  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(filter_query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _plugin_id, _component_class_id, filter, _method)
2134 
2142 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD(_name, _method) \
2143  BT_PLUGIN_FILTER_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _method)
2144 
2184 #define BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
2185  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_finalize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD, _plugin_id, _component_class_id, sink, _method)
2186 
2194 #define BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD(_name, _method) \
2195  BT_PLUGIN_SINK_COMPONENT_CLASS_FINALIZE_METHOD_WITH_ID(auto, _name, _method)
2196 
2230 #define BT_PLUGIN_SINK_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
2231  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_get_supported_mip_versions_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS_METHOD, _plugin_id, _component_class_id, sink, _method)
2232 
2240 #define BT_PLUGIN_SINK_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD(_name, _method) \
2241  BT_PLUGIN_SINK_COMPONENT_CLASS_GET_SUPPORTED_MIP_VERSIONS_METHOD_WITH_ID(auto, _name, _method)
2242 
2277 #define BT_PLUGIN_SINK_COMPONENT_CLASS_GRAPH_IS_CONFIGURED_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
2278  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_graph_is_configured_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GRAPH_IS_CONFIGURED_METHOD, _plugin_id, _component_class_id, sink, _method)
2279 
2287 #define BT_PLUGIN_SINK_COMPONENT_CLASS_GRAPH_IS_CONFIGURED_METHOD(_name, _method) \
2288  BT_PLUGIN_SINK_COMPONENT_CLASS_GRAPH_IS_CONFIGURED_METHOD_WITH_ID(auto, _name, _method)
2289 
2322 #define BT_PLUGIN_SINK_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
2323  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_initialize_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD, _plugin_id, _component_class_id, sink, _method)
2324 
2332 #define BT_PLUGIN_SINK_COMPONENT_CLASS_INITIALIZE_METHOD(_name, _method) \
2333  BT_PLUGIN_SINK_COMPONENT_CLASS_INITIALIZE_METHOD_WITH_ID(auto, _name, _method)
2334 
2369 #define BT_PLUGIN_SINK_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
2370  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_input_port_connected_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_CONNECTED_METHOD, _plugin_id, _component_class_id, sink, _method)
2371 
2379 #define BT_PLUGIN_SINK_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD(_name, _method) \
2380  BT_PLUGIN_SINK_COMPONENT_CLASS_INPUT_PORT_CONNECTED_METHOD_WITH_ID(auto, _name, _method)
2381 
2414 #define BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(_plugin_id, _component_class_id, _method) \
2415  __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(sink_query_method, BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD, _plugin_id, _component_class_id, sink, _method)
2416 
2424 #define BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD(_name, _method) \
2425  BT_PLUGIN_SINK_COMPONENT_CLASS_QUERY_METHOD_WITH_ID(auto, _name, _method)
2426 
2431 /* Plugin descriptor: describes a single plugin (internal use) */
2432 struct __bt_plugin_descriptor {
2433  /* Plugin's name */
2434  const char *name;
2435 } __attribute__((packed));
2436 
2437 /* Type of a plugin attribute (internal use) */
2438 enum __bt_plugin_descriptor_attribute_type {
2439  BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_INIT = 0,
2440  BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_EXIT = 1,
2441  BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_AUTHOR = 2,
2442  BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_LICENSE = 3,
2443  BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION = 4,
2444  BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION = 5,
2445 };
2446 
2447 /* Plugin (user) version */
2448 struct __bt_plugin_descriptor_version {
2449  uint32_t major;
2450  uint32_t minor;
2451  uint32_t patch;
2452  const char *extra;
2453 };
2454 
2455 /* Plugin attribute (internal use) */
2456 struct __bt_plugin_descriptor_attribute {
2457  /* Plugin descriptor to which to associate this attribute */
2458  const struct __bt_plugin_descriptor *plugin_descriptor;
2459 
2460  /* Name of the attribute's type for debug purposes */
2461  const char *type_name;
2462 
2463  /* Attribute's type */
2464  enum __bt_plugin_descriptor_attribute_type type;
2465 
2466  /* Attribute's value (depends on attribute's type) */
2467  union {
2468  /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_INIT */
2470 
2471  /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_EXIT */
2473 
2474  /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_AUTHOR */
2475  const char *author;
2476 
2477  /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_LICENSE */
2478  const char *license;
2479 
2480  /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION */
2481  const char *description;
2482 
2483  /* BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION */
2484  struct __bt_plugin_descriptor_version version;
2485  } value;
2486 } __attribute__((packed));
2487 
2488 /* Component class descriptor (internal use) */
2489 struct __bt_plugin_component_class_descriptor {
2490  /*
2491  * Plugin descriptor to which to associate this component
2492  * class descriptor.
2493  */
2494  const struct __bt_plugin_descriptor *plugin_descriptor;
2495 
2496  /* Component class name */
2497  const char *name;
2498 
2499  /* Component class type */
2501 
2502  /* Mandatory methods (depends on component class type) */
2503  union {
2504  /* BT_COMPONENT_CLASS_TYPE_SOURCE */
2505  struct {
2507  } source;
2508 
2509  /* BT_COMPONENT_CLASS_TYPE_FILTER */
2510  struct {
2512  } filter;
2513 
2514  /* BT_COMPONENT_CLASS_TYPE_SINK */
2515  struct {
2517  } sink;
2518  } methods;
2519 } __attribute__((packed));
2520 
2521 /* Type of a component class attribute (internal use) */
2522 enum __bt_plugin_component_class_descriptor_attribute_type {
2523  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION = 0,
2524  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP = 1,
2525  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS_METHOD = 2,
2526  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD = 3,
2527  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD = 4,
2528  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD = 5,
2529  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_CONNECTED_METHOD = 6,
2530  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_CONNECTED_METHOD = 7,
2531  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GRAPH_IS_CONFIGURED_METHOD = 8,
2532  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INITIALIZE_METHOD = 9,
2533  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_FINALIZE_METHOD = 10,
2534  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_NS_FROM_ORIGIN_METHOD = 11,
2535  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD = 12,
2536  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_NS_FROM_ORIGIN_METHOD = 13,
2537  BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD = 14,
2538 };
2539 
2540 /* Component class attribute (internal use) */
2541 struct __bt_plugin_component_class_descriptor_attribute {
2542  /*
2543  * Component class plugin attribute to which to associate this
2544  * component class attribute.
2545  */
2546  const struct __bt_plugin_component_class_descriptor *comp_class_descriptor;
2547 
2548  /* Name of the attribute's type for debug purposes */
2549  const char *type_name;
2550 
2551  /* Attribute's type */
2552  enum __bt_plugin_component_class_descriptor_attribute_type type;
2553 
2554  /* Attribute's value (depends on attribute's type) */
2555  union {
2556  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION */
2557  const char *description;
2558 
2559  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_HELP */
2560  const char *help;
2561 
2562  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GET_SUPPORTED_MIP_VERSIONS_METHOD */
2563  bt_component_class_source_get_supported_mip_versions_method source_get_supported_mip_versions_method;
2564  bt_component_class_filter_get_supported_mip_versions_method filter_get_supported_mip_versions_method;
2565  bt_component_class_sink_get_supported_mip_versions_method sink_get_supported_mip_versions_method;
2566 
2567  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INITIALIZE_METHOD */
2568  bt_component_class_source_initialize_method source_initialize_method;
2569  bt_component_class_filter_initialize_method filter_initialize_method;
2570  bt_component_class_sink_initialize_method sink_initialize_method;
2571 
2572  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD */
2573  bt_component_class_source_finalize_method source_finalize_method;
2574  bt_component_class_filter_finalize_method filter_finalize_method;
2575  bt_component_class_sink_finalize_method sink_finalize_method;
2576 
2577  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD */
2578  bt_component_class_source_query_method source_query_method;
2579  bt_component_class_filter_query_method filter_query_method;
2580  bt_component_class_sink_query_method sink_query_method;
2581 
2582  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_CONNECTED_METHOD */
2583  bt_component_class_filter_input_port_connected_method filter_input_port_connected_method;
2584  bt_component_class_sink_input_port_connected_method sink_input_port_connected_method;
2585 
2586  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_CONNECTED_METHOD */
2587  bt_component_class_source_output_port_connected_method source_output_port_connected_method;
2588  bt_component_class_filter_output_port_connected_method filter_output_port_connected_method;
2589 
2590  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GRAPH_IS_CONFIGURED_METHOD */
2591  bt_component_class_sink_graph_is_configured_method sink_graph_is_configured_method;
2592 
2593  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INITIALIZE_METHOD */
2594  bt_message_iterator_class_initialize_method msg_iter_initialize_method;
2595 
2596  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_FINALIZE_METHOD */
2597  bt_message_iterator_class_finalize_method msg_iter_finalize_method;
2598 
2599  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_NS_FROM_ORIGIN_METHOD */
2600  bt_message_iterator_class_seek_ns_from_origin_method msg_iter_seek_ns_from_origin_method;
2601 
2602  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD */
2603  bt_message_iterator_class_seek_beginning_method msg_iter_seek_beginning_method;
2604 
2605  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_NS_FROM_ORIGIN_METHOD */
2606  bt_message_iterator_class_can_seek_ns_from_origin_method msg_iter_can_seek_ns_from_origin_method;
2607 
2608  /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD */
2609  bt_message_iterator_class_can_seek_beginning_method msg_iter_can_seek_beginning_method;
2610  } value;
2611 } __attribute__((packed));
2612 
2613 struct __bt_plugin_descriptor const * const *__bt_get_begin_section_plugin_descriptors(void);
2614 struct __bt_plugin_descriptor const * const *__bt_get_end_section_plugin_descriptors(void);
2615 struct __bt_plugin_descriptor_attribute const * const *__bt_get_begin_section_plugin_descriptor_attributes(void);
2616 struct __bt_plugin_descriptor_attribute const * const *__bt_get_end_section_plugin_descriptor_attributes(void);
2617 struct __bt_plugin_component_class_descriptor const * const *__bt_get_begin_section_component_class_descriptors(void);
2618 struct __bt_plugin_component_class_descriptor const * const *__bt_get_end_section_component_class_descriptors(void);
2619 struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_begin_section_component_class_descriptor_attributes(void);
2620 struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_end_section_component_class_descriptor_attributes(void);
2621 
2622 /*
2623  * Defines a plugin attribute (generic, internal use).
2624  *
2625  * _attr_name: Name of the attribute (C identifier).
2626  * _attr_type: Type of the attribute (enum __bt_plugin_descriptor_attribute_type).
2627  * _id: Plugin descriptor ID (C identifier).
2628  * _x: Value.
2629  */
2630 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(_attr_name, _attr_type, _id, _x) \
2631  static struct __bt_plugin_descriptor_attribute __bt_plugin_descriptor_attribute_##_id##_##_attr_name = { \
2632  .plugin_descriptor = &__bt_plugin_descriptor_##_id, \
2633  .type_name = #_attr_name, \
2634  .type = _attr_type, \
2635  .value = { ._attr_name = _x }, \
2636  }; \
2637  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
2638 
2639 #define __BT_PLUGIN_VERSION_STRUCT_VALUE(_major, _minor, _patch, _extra) \
2640  {.major = _major, .minor = _minor, .patch = _patch, .extra = _extra,}
2641 
2642 /*
2643  * Defines a component class descriptor attribute (generic, internal
2644  * use).
2645  *
2646  * _id: Plugin descriptor ID (C identifier).
2647  * _component_class_id: Component class ID (C identifier).
2648  * _type: Component class type (`source`, `filter`, or `sink`).
2649  * _attr_name: Name of the attribute (C identifier).
2650  * _attr_type: Type of the attribute
2651  * (enum __bt_plugin_descriptor_attribute_type).
2652  * _x: Value.
2653  */
2654 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE(_attr_name, _attr_type, _id, _component_class_id, _type, _x) \
2655  static struct __bt_plugin_component_class_descriptor_attribute __bt_plugin_##_type##_component_class_descriptor_attribute_##_id##_##_component_class_id##_##_attr_name = { \
2656  .comp_class_descriptor = &__bt_plugin_##_type##_component_class_descriptor_##_id##_##_component_class_id, \
2657  .type_name = #_attr_name, \
2658  .type = _attr_type, \
2659  .value = { ._attr_name = _x }, \
2660  }; \
2661  static struct __bt_plugin_component_class_descriptor_attribute const * const __bt_plugin_##_type##_component_class_descriptor_attribute_##_id##_##_component_class_id##_##_attr_name##_ptr __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_ATTRS = &__bt_plugin_##_type##_component_class_descriptor_attribute_##_id##_##_component_class_id##_##_attr_name
2662 
2663 /*
2664  * Clang supports the no_sanitize variable attribute on global variables.
2665  * GCC only supports the no_sanitize_address function attribute, which is
2666  * not what we need. This is fine because, as far as we have seen, gcc
2667  * does not insert red zones around global variables.
2668  */
2669 #if defined(__clang__)
2670 # if __has_feature(address_sanitizer)
2671 # define __bt_plugin_variable_attribute_no_sanitize_address \
2672  __attribute__((no_sanitize("address")))
2673 # else
2674 # define __bt_plugin_variable_attribute_no_sanitize_address
2675 # endif
2676 #else
2677 # define __bt_plugin_variable_attribute_no_sanitize_address
2678 #endif
2679 
2680 /*
2681  * Variable attributes for a plugin descriptor pointer to be added to
2682  * the plugin descriptor section (internal use).
2683  */
2684 #ifdef __APPLE__
2685 #define __BT_PLUGIN_DESCRIPTOR_ATTRS \
2686  __attribute__((section("__DATA,btp_desc"), used)) \
2687  __bt_plugin_variable_attribute_no_sanitize_address
2688 
2689 #define __BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL \
2690  __start___bt_plugin_descriptors
2691 
2692 #define __BT_PLUGIN_DESCRIPTOR_END_SYMBOL \
2693  __stop___bt_plugin_descriptors
2694 
2695 #define __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA \
2696  __asm("section$start$__DATA$btp_desc")
2697 
2698 #define __BT_PLUGIN_DESCRIPTOR_END_EXTRA \
2699  __asm("section$end$__DATA$btp_desc")
2700 
2701 #else
2702 
2703 #define __BT_PLUGIN_DESCRIPTOR_ATTRS \
2704  __attribute__((section("__bt_plugin_descriptors"), used)) \
2705  __bt_plugin_variable_attribute_no_sanitize_address
2706 
2707 #define __BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL \
2708  __start___bt_plugin_descriptors
2709 
2710 #define __BT_PLUGIN_DESCRIPTOR_END_SYMBOL \
2711  __stop___bt_plugin_descriptors
2712 
2713 #define __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA
2714 
2715 #define __BT_PLUGIN_DESCRIPTOR_END_EXTRA
2716 #endif
2717 
2718 /*
2719  * Variable attributes for a plugin attribute pointer to be added to
2720  * the plugin attribute section (internal use).
2721  */
2722 #ifdef __APPLE__
2723 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS \
2724  __attribute__((section("__DATA,btp_desc_att"), used)) \
2725  __bt_plugin_variable_attribute_no_sanitize_address
2726 
2727 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
2728  __start___bt_plugin_descriptor_attributes
2729 
2730 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
2731  __stop___bt_plugin_descriptor_attributes
2732 
2733 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA \
2734  __asm("section$start$__DATA$btp_desc_att")
2735 
2736 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA \
2737  __asm("section$end$__DATA$btp_desc_att")
2738 
2739 #else
2740 
2741 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS \
2742  __attribute__((section("__bt_plugin_descriptor_attributes"), used)) \
2743  __bt_plugin_variable_attribute_no_sanitize_address
2744 
2745 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
2746  __start___bt_plugin_descriptor_attributes
2747 
2748 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
2749  __stop___bt_plugin_descriptor_attributes
2750 
2751 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA
2752 
2753 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA
2754 #endif
2755 
2756 /*
2757  * Variable attributes for a component class descriptor pointer to be
2758  * added to the component class descriptor section (internal use).
2759  */
2760 #ifdef __APPLE__
2761 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS \
2762  __attribute__((section("__DATA,btp_cc_desc"), used)) \
2763  __bt_plugin_variable_attribute_no_sanitize_address
2764 
2765 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL \
2766  __start___bt_plugin_component_class_descriptors
2767 
2768 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL \
2769  __stop___bt_plugin_component_class_descriptors
2770 
2771 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA \
2772  __asm("section$start$__DATA$btp_cc_desc")
2773 
2774 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA \
2775  __asm("section$end$__DATA$btp_cc_desc")
2776 
2777 #else
2778 
2779 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS \
2780  __attribute__((section("__bt_plugin_component_class_descriptors"), used)) \
2781  __bt_plugin_variable_attribute_no_sanitize_address
2782 
2783 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL \
2784  __start___bt_plugin_component_class_descriptors
2785 
2786 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL \
2787  __stop___bt_plugin_component_class_descriptors
2788 
2789 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA
2790 
2791 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA
2792 #endif
2793 
2794 /*
2795  * Variable attributes for a component class descriptor attribute
2796  * pointer to be added to the component class descriptor attribute
2797  * section (internal use).
2798  */
2799 #ifdef __APPLE__
2800 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_ATTRS \
2801  __attribute__((section("__DATA,btp_cc_desc_att"), used)) \
2802  __bt_plugin_variable_attribute_no_sanitize_address
2803 
2804 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
2805  __start___bt_plugin_component_class_descriptor_attributes
2806 
2807 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
2808  __stop___bt_plugin_component_class_descriptor_attributes
2809 
2810 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA \
2811  __asm("section$start$__DATA$btp_cc_desc_att")
2812 
2813 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_EXTRA \
2814  __asm("section$end$__DATA$btp_cc_desc_att")
2815 
2816 #else
2817 
2818 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_ATTRS \
2819  __attribute__((section("__bt_plugin_component_class_descriptor_attributes"), used)) \
2820  __bt_plugin_variable_attribute_no_sanitize_address
2821 
2822 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
2823  __start___bt_plugin_component_class_descriptor_attributes
2824 
2825 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
2826  __stop___bt_plugin_component_class_descriptor_attributes
2827 
2828 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA
2829 
2830 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_EXTRA
2831 #endif
2832 
2833 #ifdef __cplusplus
2834 }
2835 #endif
2836 
2837 #endif /* BABELTRACE2_PLUGIN_PLUGIN_DEV_H */
bt_plugin_initialize_func_status
Status codes for bt_plugin_initialize_func.
Definition: plugin-dev.h:593
bt_component_class_get_supported_mip_versions_method_status(* bt_component_class_filter_get_supported_mip_versions_method)(bt_self_component_class_filter *source_component_class, const bt_value *params, void *initialize_method_data, bt_logging_level logging_level, bt_integer_range_set_unsigned *supported_versions)
Filter component class "get supported Message Interchange Protocol versions" method.
Definition: component-class-dev.h:759
bt_component_class_query_method_status(* bt_component_class_sink_query_method)(bt_self_component_class_sink *self_component_class, bt_private_query_executor *query_executor, const char *object_name, const bt_value *params, void *method_data, const bt_value **result)
Sink component class query method.
Definition: component-class-dev.h:1439
bt_message_iterator_class_next_method_status(* bt_message_iterator_class_next_method)(bt_self_message_iterator *self_message_iterator, bt_message_array_const messages, uint64_t capacity, uint64_t *count)
Message iterator "next" (get next messages) method.
Definition: message-iterator-class.h:836
bt_component_class_initialize_method_status(* bt_component_class_sink_initialize_method)(bt_self_component_sink *self_component, bt_self_component_sink_configuration *configuration, const bt_value *params, void *initialize_method_data)
Sink component initialization method.
Definition: component-class-dev.h:1038
bt_component_class_port_connected_method_status(* bt_component_class_filter_input_port_connected_method)(bt_self_component_filter *self_component, bt_self_component_port_input *self_port, const bt_port_output *other_port)
Filter component "input port connected" method.
Definition: component-class-dev.h:1136
bt_component_class_port_connected_method_status(* bt_component_class_sink_input_port_connected_method)(bt_self_component_sink *self_component, bt_self_component_port_input *self_port, const bt_port_output *other_port)
Sink component "input port connected" method.
Definition: component-class-dev.h:1206
bt_message_iterator_class_initialize_method_status(* bt_message_iterator_class_initialize_method)(bt_self_message_iterator *self_message_iterator, bt_self_message_iterator_configuration *configuration, bt_self_component_port_output *port)
Message iterator initialization method.
Definition: message-iterator-class.h:722
void(* bt_plugin_finalize_func)(void)
User plugin finalization function.
Definition: plugin-dev.h:673
bt_component_class_type
Component class type enumerators.
Definition: component-class.h:214
bt_component_class_initialize_method_status(* bt_component_class_filter_initialize_method)(bt_self_component_filter *self_component, bt_self_component_filter_configuration *configuration, const bt_value *params, void *initialize_method_data)
Filter component initialization method.
Definition: component-class-dev.h:990
bt_component_class_query_method_status(* bt_component_class_filter_query_method)(bt_self_component_class_filter *self_component_class, bt_private_query_executor *query_executor, const char *object_name, const bt_value *params, void *method_data, const bt_value **result)
Filter component class query method.
Definition: component-class-dev.h:1374
bt_component_class_query_method_status(* bt_component_class_source_query_method)(bt_self_component_class_source *self_component_class, bt_private_query_executor *query_executor, const char *object_name, const bt_value *params, void *method_data, const bt_value **result)
Source component class query method.
Definition: component-class-dev.h:1309
bt_message_iterator_class_seek_ns_from_origin_method_status(* bt_message_iterator_class_seek_ns_from_origin_method)(bt_self_message_iterator *self_message_iterator, int64_t ns_from_origin)
Message iterator "seek ns from origin" method.
Definition: message-iterator-class.h:968
bt_component_class_sink_graph_is_configured_method_status(* bt_component_class_sink_graph_is_configured_method)(bt_self_component_sink *self_component)
Sink component "graph is configured" method.
Definition: component-class-dev.h:871
Success.
Definition: plugin-dev.h:598
struct bt_self_plugin bt_self_plugin
Self plugin.
Definition: types.h:102
bt_component_class_get_supported_mip_versions_method_status(* bt_component_class_source_get_supported_mip_versions_method)(bt_self_component_class_source *self_component_class, const bt_value *params, void *initialize_method_data, bt_logging_level logging_level, bt_integer_range_set_unsigned *supported_versions)
Source component class "get supported Message Interchange Protocol versions" method.
Definition: component-class-dev.h:700
bt_message_iterator_class_can_seek_beginning_method_status(* bt_message_iterator_class_can_seek_beginning_method)(bt_self_message_iterator *self_message_iterator, bt_bool *can_seek_beginning)
Message iterator "can seek beginning?" method.
Definition: message-iterator-class.h:575
bt_component_class_port_connected_method_status(* bt_component_class_filter_output_port_connected_method)(bt_self_component_filter *self_component, bt_self_component_port_output *self_port, const bt_port_input *other_port)
Filter component "output port connected" method.
Definition: component-class-dev.h:1171
void(* bt_component_class_source_finalize_method)(bt_self_component_source *self_component)
Source component finalization method.
Definition: component-class-dev.h:580
Out of memory.
Definition: plugin-dev.h:604
bt_component_class_get_supported_mip_versions_method_status(* bt_component_class_sink_get_supported_mip_versions_method)(bt_self_component_class_sink *source_component_class, const bt_value *params, void *initialize_method_data, bt_logging_level logging_level, bt_integer_range_set_unsigned *supported_versions)
Sink component class "get supported Message Interchange Protocol versions" method.
Definition: component-class-dev.h:817
Error.
Definition: plugin-dev.h:610
bt_component_class_port_connected_method_status(* bt_component_class_source_output_port_connected_method)(bt_self_component_source *self_component, bt_self_component_port_output *self_port, const bt_port_input *other_port)
Source component "output port connected" method.
Definition: component-class-dev.h:1101
void(* bt_component_class_sink_finalize_method)(bt_self_component_sink *self_component)
Sink component finalization method.
Definition: component-class-dev.h:618
bt_component_class_initialize_method_status(* bt_component_class_source_initialize_method)(bt_self_component_source *self_component, bt_self_component_source_configuration *configuration, const bt_value *params, void *initialize_method_data)
Source component initialization method.
Definition: component-class-dev.h:943
bt_message_iterator_class_can_seek_ns_from_origin_method_status(* bt_message_iterator_class_can_seek_ns_from_origin_method)(bt_self_message_iterator *self_message_iterator, int64_t ns_from_origin, bt_bool *can_seek_ns_from_origin)
Message iterator "can seek ns from origin?" method.
Definition: message-iterator-class.h:646
bt_component_class_sink_consume_method_status(* bt_component_class_sink_consume_method)(bt_self_component_sink *self_component)
Sink component consuming method.
Definition: component-class-dev.h:561
void(* bt_message_iterator_class_finalize_method)(bt_self_message_iterator *self_message_iterator)
Message iterator finalization method.
Definition: message-iterator-class.h:667
bt_message_iterator_class_seek_beginning_method_status(* bt_message_iterator_class_seek_beginning_method)(bt_self_message_iterator *self_message_iterator)
Message iterator "seek beginning" method.
Definition: message-iterator-class.h:902
void(* bt_component_class_filter_finalize_method)(bt_self_component_filter *self_component)
Filter component finalization method.
Definition: component-class-dev.h:599
bt_plugin_initialize_func_status(* bt_plugin_initialize_func)(bt_self_plugin *self_plugin)
User plugin initialization function.
Definition: plugin-dev.h:636