bt2: split clock value module from clock class module
[babeltrace.git] / include / babeltrace / plugin / plugin-dev.h
index c50a9e3eeeaca63762869af4b9aaac99bc0092da..f99dca02931cbbe9923d8355011599ac8d6b000d 100644 (file)
 #include <babeltrace/graph/component-class-filter.h>
 #include <babeltrace/graph/component-class-sink.h>
 
+/*
+ * _BT_HIDDEN: set the hidden attribute for internal functions
+ * On Windows, symbols are local unless explicitly exported,
+ * see https://gcc.gnu.org/wiki/Visibility
+ */
+#if defined(_WIN32) || defined(__CYGWIN__)
+#define _BT_HIDDEN
+#else
+#define _BT_HIDDEN __attribute__((visibility("hidden")))
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -172,7 +183,6 @@ enum __bt_plugin_component_class_descriptor_attribute_type {
        BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_PORT_DISCONNECTED_METHOD            = 8,
        BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_INIT_METHOD              = 9,
        BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_FINALIZE_METHOD          = 10,
-       BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_SEEK_TIME_METHOD         = 11,
 };
 
 /* Component class attribute (internal use) */
@@ -220,41 +230,163 @@ struct __bt_plugin_component_class_descriptor_attribute {
 
                /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_FINALIZE_METHOD */
                bt_component_class_notification_iterator_finalize_method notif_iter_finalize_method;
-
-               /* BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_SEEK_TIME_METHOD */
-               bt_component_class_notification_iterator_seek_time_method notif_iter_seek_time_method;
        } value;
 } __attribute__((packed));
 
+struct __bt_plugin_descriptor const * const *__bt_get_begin_section_plugin_descriptors(void);
+struct __bt_plugin_descriptor const * const *__bt_get_end_section_plugin_descriptors(void);
+struct __bt_plugin_descriptor_attribute const * const *__bt_get_begin_section_plugin_descriptor_attributes(void);
+struct __bt_plugin_descriptor_attribute const * const *__bt_get_end_section_plugin_descriptor_attributes(void);
+struct __bt_plugin_component_class_descriptor const * const *__bt_get_begin_section_component_class_descriptors(void);
+struct __bt_plugin_component_class_descriptor const * const *__bt_get_end_section_component_class_descriptors(void);
+struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_begin_section_component_class_descriptor_attributes(void);
+struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_end_section_component_class_descriptor_attributes(void);
+
 /*
  * Variable attributes for a plugin descriptor pointer to be added to
  * the plugin descriptor section (internal use).
  */
+#ifdef __APPLE__
+#define __BT_PLUGIN_DESCRIPTOR_ATTRS \
+       __attribute__((section("__DATA,btp_desc"), used))
+
+#define __BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL \
+       __start___bt_plugin_descriptors
+
+#define __BT_PLUGIN_DESCRIPTOR_END_SYMBOL \
+       __stop___bt_plugin_descriptors
+
+#define __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA \
+       __asm("section$start$__DATA$btp_desc")
+
+#define __BT_PLUGIN_DESCRIPTOR_END_EXTRA \
+       __asm("section$end$__DATA$btp_desc")
+
+#else
+
 #define __BT_PLUGIN_DESCRIPTOR_ATTRS \
        __attribute__((section("__bt_plugin_descriptors"), used))
 
+#define __BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL \
+       __start___bt_plugin_descriptors
+
+#define __BT_PLUGIN_DESCRIPTOR_END_SYMBOL \
+       __stop___bt_plugin_descriptors
+
+#define __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA
+
+#define __BT_PLUGIN_DESCRIPTOR_END_EXTRA
+#endif
+
 /*
  * Variable attributes for a plugin attribute pointer to be added to
  * the plugin attribute section (internal use).
  */
+#ifdef __APPLE__
+#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS \
+       __attribute__((section("__DATA,btp_desc_att"), used))
+
+#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
+       __start___bt_plugin_descriptor_attributes
+
+#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
+       __stop___bt_plugin_descriptor_attributes
+
+#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA \
+       __asm("section$start$__DATA$btp_desc_att")
+
+#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA \
+       __asm("section$end$__DATA$btp_desc_att")
+
+#else
+
 #define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS \
        __attribute__((section("__bt_plugin_descriptor_attributes"), used))
 
+#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
+       __start___bt_plugin_descriptor_attributes
+
+#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
+       __stop___bt_plugin_descriptor_attributes
+
+#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA
+
+#define __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA
+#endif
+
 /*
  * Variable attributes for a component class descriptor pointer to be
  * added to the component class descriptor section (internal use).
  */
+#ifdef __APPLE__
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS \
+       __attribute__((section("__DATA,btp_cc_desc"), used))
+
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL \
+       __start___bt_plugin_component_class_descriptors
+
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL \
+       __stop___bt_plugin_component_class_descriptors
+
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA \
+       __asm("section$start$__DATA$btp_cc_desc")
+
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA \
+       __asm("section$end$__DATA$btp_cc_desc")
+
+#else
+
 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS \
        __attribute__((section("__bt_plugin_component_class_descriptors"), used))
 
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL \
+       __start___bt_plugin_component_class_descriptors
+
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL \
+       __stop___bt_plugin_component_class_descriptors
+
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA
+
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA
+#endif
+
 /*
  * Variable attributes for a component class descriptor attribute
  * pointer to be added to the component class descriptor attribute
  * section (internal use).
  */
+#ifdef __APPLE__
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_ATTRS \
+       __attribute__((section("__DATA,btp_cc_desc_att"), used))
+
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
+       __start___bt_plugin_component_class_descriptor_attributes
+
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
+       __stop___bt_plugin_component_class_descriptor_attributes
+
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA \
+       __asm("section$start$__DATA$btp_cc_desc_att")
+
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_EXTRA \
+       __asm("section$end$__DATA$btp_cc_desc_att")
+
+#else
+
 #define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_ATTRS \
        __attribute__((section("__bt_plugin_component_class_descriptor_attributes"), used))
 
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL \
+       __start___bt_plugin_component_class_descriptor_attributes
+
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL \
+       __stop___bt_plugin_component_class_descriptor_attributes
+
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA
+
+#define __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_EXTRA
+#endif
+
 /*
  * Declares a plugin descriptor pointer variable with a custom ID.
  *
@@ -274,9 +406,7 @@ struct __bt_plugin_component_class_descriptor_attribute {
                .minor = __BT_PLUGIN_VERSION_MINOR,                     \
                .name = _name,                                          \
        };                                                              \
-       static struct __bt_plugin_descriptor const * const __bt_plugin_descriptor_##_id##_ptr __BT_PLUGIN_DESCRIPTOR_ATTRS = &__bt_plugin_descriptor_##_id; \
-       extern struct __bt_plugin_descriptor const *__start___bt_plugin_descriptors; \
-       extern struct __bt_plugin_descriptor const *__stop___bt_plugin_descriptors
+       static struct __bt_plugin_descriptor const * const __bt_plugin_descriptor_##_id##_ptr __BT_PLUGIN_DESCRIPTOR_ATTRS = &__bt_plugin_descriptor_##_id
 
 /*
  * Defines a plugin attribute (generic, internal use).
@@ -293,9 +423,7 @@ struct __bt_plugin_component_class_descriptor_attribute {
                .type = _attr_type,                                     \
                .value._attr_name = _x,                                 \
        };                                                              \
-       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; \
-       extern struct __bt_plugin_descriptor_attribute const *__start___bt_plugin_descriptor_attributes; \
-       extern struct __bt_plugin_descriptor_attribute const *__stop___bt_plugin_descriptor_attributes
+       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
 
 /*
  * Defines a plugin initialization function attribute attached to a
@@ -360,14 +488,6 @@ struct __bt_plugin_component_class_descriptor_attribute {
 #define BT_PLUGIN_VERSION_WITH_ID(_id, _major, _minor, _patch, _extra) \
        __BT_PLUGIN_DESCRIPTOR_ATTRIBUTE(version, BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION, _id, __BT_PLUGIN_VERSION_STRUCT_VALUE(_major, _minor, _patch, _extra))
 
-/*
- * Declaration of start and stop symbols of component class descriptors
- * section.
- */
-#define __BT_PLUGIN_DECL_COMPONENT_CLASS_DESCRIPTORS_SECTION_START_STOP \
-       extern struct __bt_plugin_component_class_descriptor const *__start___bt_plugin_component_class_descriptors; \
-       extern struct __bt_plugin_component_class_descriptor const *__stop___bt_plugin_component_class_descriptors
-
 /*
  * Defines a source component class descriptor with a custom ID.
  *
@@ -386,8 +506,7 @@ struct __bt_plugin_component_class_descriptor_attribute {
                        .notif_iter_next = _notif_iter_next_method,     \
                },                                                      \
        };                                                              \
-       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; \
-       __BT_PLUGIN_DECL_COMPONENT_CLASS_DESCRIPTORS_SECTION_START_STOP
+       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
 
 /*
  * Defines a filter component class descriptor with a custom ID.
@@ -407,8 +526,7 @@ struct __bt_plugin_component_class_descriptor_attribute {
                        .notif_iter_next = _notif_iter_next_method,     \
                },                                                      \
        };                                                              \
-       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; \
-       __BT_PLUGIN_DECL_COMPONENT_CLASS_DESCRIPTORS_SECTION_START_STOP
+       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
 
 /*
  * Defines a sink component class descriptor with a custom ID.
@@ -428,8 +546,7 @@ struct __bt_plugin_component_class_descriptor_attribute {
                        .consume = _consume_method,                     \
                },                                                      \
        };                                                              \
-       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; \
-       __BT_PLUGIN_DECL_COMPONENT_CLASS_DESCRIPTORS_SECTION_START_STOP
+       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
 
 /*
  * Defines a component class descriptor attribute (generic, internal
@@ -450,9 +567,7 @@ struct __bt_plugin_component_class_descriptor_attribute {
                .type = _attr_type,                                     \
                .value._attr_name = _x,                                 \
        };                                                              \
-       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; \
-       extern struct __bt_plugin_component_class_descriptor_attribute const *__start___bt_plugin_component_class_descriptor_attributes; \
-       extern struct __bt_plugin_component_class_descriptor_attribute const *__stop___bt_plugin_component_class_descriptor_attributes
+       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
 
 /*
  * Defines a description attribute attached to a specific source
@@ -751,18 +866,6 @@ struct __bt_plugin_component_class_descriptor_attribute {
 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
        __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)
 
-/*
- * Defines an iterator seek time method attribute attached to a specific
- * source component class descriptor.
- *
- * _id:            Plugin descriptor ID (C identifier).
- * _comp_class_id: Component class descriptor ID (C identifier).
- * _x:             Iterator seek time method
- *                 (bt_component_class_notification_iterator_seek_time_method).
- */
-#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_SEEK_TIME_METHOD_WITH_ID(_id, _comp_class_id, _x) \
-       __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)
-
 /*
  * Defines an iterator initialization method attribute attached to a
  * specific filter component class descriptor.
@@ -787,18 +890,6 @@ struct __bt_plugin_component_class_descriptor_attribute {
 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD_WITH_ID(_id, _comp_class_id, _x) \
        __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)
 
-/*
- * Defines an iterator seek time method attribute attached to a specific
- * filter component class descriptor.
- *
- * _id:            Plugin descriptor ID (C identifier).
- * _comp_class_id: Component class descriptor ID (C identifier).
- * _x:             Iterator seek time method
- *                 (bt_component_class_notification_iterator_seek_time_method).
- */
-#define BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_SEEK_TIME_METHOD_WITH_ID(_id, _comp_class_id, _x) \
-       __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)
-
 /*
  * Defines a plugin descriptor with an automatic ID.
  *
@@ -1177,18 +1268,6 @@ struct __bt_plugin_component_class_descriptor_attribute {
 #define BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD(_name, _x) \
        BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
 
-/*
- * Defines an iterator seek time method attribute attached to a source
- * component class descriptor which is attached to the automatic plugin
- * descriptor.
- *
- * _name: Component class name (C identifier).
- * _x:    Iterator seek time method
- *        (bt_component_class_notification_iterator_seek_time_method).
- */
-#define BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_SEEK_TIME_METHOD(_name, _x) \
-       BT_PLUGIN_SOURCE_COMPONENT_CLASS_NOTIFICATION_ITERATOR_SEEK_TIME_METHOD_WITH_ID(auto, _name, _x)
-
 /*
  * Defines an iterator initialization method attribute attached to a
  * filter component class descriptor which is attached to the automatic
@@ -1213,17 +1292,55 @@ struct __bt_plugin_component_class_descriptor_attribute {
 #define BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD(_name, _x) \
        BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_FINALIZE_METHOD_WITH_ID(auto, _name, _x)
 
-/*
- * Defines an iterator seek time method attribute attached to a filter
- * component class descriptor which is attached to the automatic plugin
- * descriptor.
- *
- * _name: Component class name (C identifier).
- * _x:    Iterator seek time method
- *        (bt_component_class_notification_iterator_seek_time_method).
- */
-#define BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_SEEK_TIME_METHOD(_name, _x) \
-       BT_PLUGIN_FILTER_COMPONENT_CLASS_NOTIFICATION_ITERATOR_SEEK_TIME_METHOD_WITH_ID(auto, _name, _x)
+#define BT_PLUGIN_MODULE() \
+       static struct __bt_plugin_descriptor const * const __bt_plugin_descriptor_dummy __BT_PLUGIN_DESCRIPTOR_ATTRS = NULL; \
+       _BT_HIDDEN extern struct __bt_plugin_descriptor const *__BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL __BT_PLUGIN_DESCRIPTOR_BEGIN_EXTRA; \
+       _BT_HIDDEN extern struct __bt_plugin_descriptor const *__BT_PLUGIN_DESCRIPTOR_END_SYMBOL __BT_PLUGIN_DESCRIPTOR_END_EXTRA; \
+       \
+       static struct __bt_plugin_descriptor_attribute const * const __bt_plugin_descriptor_attribute_dummy __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_ATTRS = NULL; \
+       _BT_HIDDEN extern struct __bt_plugin_descriptor_attribute const *__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_EXTRA; \
+       _BT_HIDDEN extern struct __bt_plugin_descriptor_attribute const *__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL __BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_EXTRA; \
+       \
+       static struct __bt_plugin_component_class_descriptor const * const __bt_plugin_component_class_descriptor_dummy __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRS = NULL; \
+       _BT_HIDDEN extern struct __bt_plugin_component_class_descriptor const *__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_EXTRA; \
+       _BT_HIDDEN extern struct __bt_plugin_component_class_descriptor const *__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL __BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_EXTRA; \
+       \
+       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; \
+       _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; \
+       _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; \
+       \
+       struct __bt_plugin_descriptor const * const *__bt_get_begin_section_plugin_descriptors(void) \
+       { \
+               return &__BT_PLUGIN_DESCRIPTOR_BEGIN_SYMBOL; \
+       } \
+       struct __bt_plugin_descriptor const * const *__bt_get_end_section_plugin_descriptors(void) \
+       { \
+               return &__BT_PLUGIN_DESCRIPTOR_END_SYMBOL; \
+       } \
+       struct __bt_plugin_descriptor_attribute const * const *__bt_get_begin_section_plugin_descriptor_attributes(void) \
+       { \
+               return &__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL; \
+       } \
+       struct __bt_plugin_descriptor_attribute const * const *__bt_get_end_section_plugin_descriptor_attributes(void) \
+       { \
+               return &__BT_PLUGIN_DESCRIPTOR_ATTRIBUTES_END_SYMBOL; \
+       } \
+       struct __bt_plugin_component_class_descriptor const * const *__bt_get_begin_section_component_class_descriptors(void) \
+       { \
+               return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_BEGIN_SYMBOL; \
+       } \
+       struct __bt_plugin_component_class_descriptor const * const *__bt_get_end_section_component_class_descriptors(void) \
+       { \
+               return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_END_SYMBOL; \
+       } \
+       struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_begin_section_component_class_descriptor_attributes(void) \
+       { \
+               return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_BEGIN_SYMBOL; \
+       } \
+       struct __bt_plugin_component_class_descriptor_attribute const * const *__bt_get_end_section_component_class_descriptor_attributes(void) \
+       { \
+               return &__BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTES_END_SYMBOL; \
+       }
 
 #ifdef __cplusplus
 }
This page took 0.030834 seconds and 4 git commands to generate.