X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fplugin%2Fplugin-system.h;h=9a9332006a477b0e2345fb2ad9b44e71c59351d8;hb=47e5a0329d01fa74bdf8b3fdcf75940f6789c93f;hp=e7ca01a58dca2bbc58f8c83b0c797fd850885120;hpb=48c86b66fe007c348e5ce543d8ee1ce7a066f894;p=babeltrace.git diff --git a/include/babeltrace/plugin/plugin-system.h b/include/babeltrace/plugin/plugin-system.h index e7ca01a5..9a933200 100644 --- a/include/babeltrace/plugin/plugin-system.h +++ b/include/babeltrace/plugin/plugin-system.h @@ -31,13 +31,15 @@ */ #include -#include +#include #ifdef __cplusplus extern "C" { #endif struct bt_notification; +struct bt_notification_iterator; +struct bt_component; /** * Component private data deallocation function type. @@ -51,8 +53,14 @@ typedef void (*bt_component_destroy_cb)(struct bt_component *component); * * @param component Component instance */ -typedef struct bt_notification_iterator *( - *bt_component_source_iterator_create_cb)( +typedef enum bt_component_status (*bt_component_source_iterator_init_cb)( + struct bt_component *component, + struct bt_notification_iterator *iterator); + +typedef struct bt_component *(*bt_component_init_cb)( + struct bt_component *component); + +typedef struct bt_component *(*bt_component_fini_cb)( struct bt_component *component); /** @@ -65,10 +73,10 @@ typedef struct bt_notification_iterator *( typedef enum bt_component_status (*bt_component_sink_handle_notification_cb)( struct bt_component *, struct bt_notification *); -typedef struct bt_notification *(bt_notification_iterator_get_notification_cb)( +typedef struct bt_notification *(*bt_notification_iterator_get_cb)( struct bt_notification_iterator *); -typedef enum bt_notification_iterator_status (bt_notification_iterator_next_cb)( +typedef enum bt_notification_iterator_status (*bt_notification_iterator_next_cb)( struct bt_notification_iterator *); /** @@ -79,6 +87,21 @@ typedef enum bt_notification_iterator_status (bt_notification_iterator_next_cb)( */ extern void *bt_component_get_private_data(struct bt_component *component); +extern enum bt_notification_iterator_status +bt_notification_iterator_set_get_cb(struct bt_notification_iterator *iterator, + bt_notification_iterator_get_cb get); + +extern enum bt_notification_iterator_status +bt_notification_iterator_set_next_cb(struct bt_notification_iterator *iterator, + bt_notification_iterator_next_cb next); + +extern enum bt_notification_iterator_status +bt_notification_iterator_set_private_data( + struct bt_notification_iterator *iterator, void *data); + +extern void *bt_notification_iterator_get_private_data( + struct bt_notification_iterator *iterator); + /** * Set a component's private (implementation) data. * @@ -89,21 +112,6 @@ extern void *bt_component_get_private_data(struct bt_component *component); extern enum bt_component_status bt_component_set_private_data( struct bt_component *component, void *data); - -/** Notification iterator functions */ -/** - * Allocate a notification iterator. - * - * @param component Component instance - * @param next_cb Callback advancing to the next notification - * @param notification_cb Callback providing the current notification - * @returns A notification iterator instance - */ -extern struct bt_notification_iterator *bt_notification_iterator_create( - struct bt_component *component, - bt_notification_iterator_next_cb next_cb, - bt_notification_iterator_get_notification_cb notification_cb); - #ifdef __cplusplus } #endif