X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Fplugin-system%2Fiterator.c;h=45f73bdd3c3be6df976df747d43fe22c3b6081cf;hb=ea8d3e58d3d580a2b732ef6bd39c2f948ef8974a;hp=b2f79f2011ab42929015bef3a7334d2e79970b93;hpb=6cdbfd7a28f6e3ead89ccb4359fe4062c5f0a94c;p=babeltrace.git diff --git a/lib/plugin-system/iterator.c b/lib/plugin-system/iterator.c index b2f79f20..45f73bdd 100644 --- a/lib/plugin-system/iterator.c +++ b/lib/plugin-system/iterator.c @@ -72,7 +72,7 @@ enum bt_notification_iterator_status bt_notification_iterator_validate( struct bt_notification_iterator *iterator) { enum bt_notification_iterator_status ret = - BT_NOTIFICATION_ITERATOR_STATUS_OK; + BT_NOTIFICATION_ITERATOR_STATUS_OK; if (!iterator || !iterator->get || !iterator->next) { ret = BT_NOTIFICATION_ITERATOR_STATUS_INVAL; @@ -87,14 +87,72 @@ enum bt_notification_iterator_status bt_notification_iterator_set_get_cb( bt_notification_iterator_get_cb get) { enum bt_notification_iterator_status ret = - BT_NOTIFICATION_ITERATOR_STATUS_OK; + BT_NOTIFICATION_ITERATOR_STATUS_OK; if (!iterator || !get) { ret = BT_NOTIFICATION_ITERATOR_STATUS_INVAL; goto end; } - + iterator->get = get; +end: + return ret; +} + +enum bt_notification_iterator_status +bt_notification_iterator_set_next_cb(struct bt_notification_iterator *iterator, + bt_notification_iterator_next_cb next) +{ + enum bt_notification_iterator_status ret = + BT_NOTIFICATION_ITERATOR_STATUS_OK; + + if (!iterator || !next) { + ret = BT_NOTIFICATION_ITERATOR_STATUS_INVAL; + goto end; + } + + iterator->next = next; +end: + return ret; +} + +enum bt_notification_iterator_status +bt_notification_iterator_set_destroy_cb( + struct bt_notification_iterator *iterator, + bt_notification_iterator_destroy_cb destroy) +{ + enum bt_notification_iterator_status ret = + BT_NOTIFICATION_ITERATOR_STATUS_OK; + + if (!iterator || !destroy) { + ret = BT_NOTIFICATION_ITERATOR_STATUS_INVAL; + goto end; + } + + iterator->user_destroy = destroy; +end: + return ret; +} + +void *bt_notification_iterator_get_private_data( + struct bt_notification_iterator *iterator) +{ + return iterator ? iterator->user_data : NULL; +} + +enum bt_notification_iterator_status +bt_notification_iterator_set_private_data( + struct bt_notification_iterator *iterator, void *data) +{ + enum bt_notification_iterator_status ret = + BT_NOTIFICATION_ITERATOR_STATUS_OK; + + if (!iterator || !data) { + ret = BT_NOTIFICATION_ITERATOR_STATUS_INVAL; + goto end; + } + + iterator->user_data = data; end: return ret; }