+int bt_component_class_source_set_notification_iterator_init_method(
+ struct bt_component_class *component_class,
+ bt_component_class_notification_iterator_init_method notification_iterator_init_method)
+{
+ struct bt_component_class_source *source_class;
+ int ret = 0;
+
+ if (!component_class || component_class->frozen ||
+ !notification_iterator_init_method ||
+ component_class->type != BT_COMPONENT_CLASS_TYPE_SOURCE) {
+ ret = -1;
+ goto end;
+ }
+
+ source_class = container_of(component_class,
+ struct bt_component_class_source, parent);
+ source_class->methods.iterator.init = notification_iterator_init_method;
+
+end:
+ return ret;
+}
+
+int bt_component_class_source_set_notification_iterator_destroy_method(
+ struct bt_component_class *component_class,
+ bt_component_class_notification_iterator_destroy_method notification_iterator_destroy_method)
+{
+ struct bt_component_class_source *source_class;
+ int ret = 0;
+
+ if (!component_class || component_class->frozen ||
+ !notification_iterator_destroy_method ||
+ component_class->type != BT_COMPONENT_CLASS_TYPE_SOURCE) {
+ ret = -1;
+ goto end;
+ }
+
+ source_class = container_of(component_class,
+ struct bt_component_class_source, parent);
+ source_class->methods.iterator.destroy =
+ notification_iterator_destroy_method;
+
+end:
+ return ret;
+}
+
+int bt_component_class_source_set_notification_iterator_seek_time_method(
+ struct bt_component_class *component_class,
+ bt_component_class_notification_iterator_seek_time_method notification_iterator_seek_time_method)
+{
+ struct bt_component_class_source *source_class;
+ int ret = 0;
+
+ if (!component_class || component_class->frozen ||
+ !notification_iterator_seek_time_method ||
+ component_class->type != BT_COMPONENT_CLASS_TYPE_SOURCE) {
+ ret = -1;
+ goto end;
+ }
+
+ source_class = container_of(component_class,
+ struct bt_component_class_source, parent);
+ source_class->methods.iterator.seek_time =
+ notification_iterator_seek_time_method;
+
+end:
+ return ret;
+}
+
+int bt_component_class_filter_set_notification_iterator_init_method(
+ struct bt_component_class *component_class,
+ bt_component_class_notification_iterator_init_method notification_iterator_init_method)
+{
+ struct bt_component_class_filter *filter_class;
+ int ret = 0;
+
+ if (!component_class || component_class->frozen ||
+ !notification_iterator_init_method ||
+ component_class->type != BT_COMPONENT_CLASS_TYPE_FILTER) {
+ ret = -1;
+ goto end;
+ }
+
+ filter_class = container_of(component_class,
+ struct bt_component_class_filter, parent);
+ filter_class->methods.iterator.init = notification_iterator_init_method;
+
+end:
+ return ret;
+}
+
+int bt_component_class_filter_set_notification_iterator_destroy_method(
+ struct bt_component_class *component_class,
+ bt_component_class_notification_iterator_destroy_method notification_iterator_destroy_method)
+{
+ struct bt_component_class_filter *filter_class;
+ int ret = 0;
+
+ if (!component_class || component_class->frozen ||
+ !notification_iterator_destroy_method ||
+ component_class->type != BT_COMPONENT_CLASS_TYPE_FILTER) {
+ ret = -1;
+ goto end;
+ }
+
+ filter_class = container_of(component_class,
+ struct bt_component_class_filter, parent);
+ filter_class->methods.iterator.destroy =
+ notification_iterator_destroy_method;
+
+end:
+ return ret;
+}
+
+int bt_component_class_filter_set_notification_iterator_seek_time_method(
+ struct bt_component_class *component_class,
+ bt_component_class_notification_iterator_seek_time_method notification_iterator_seek_time_method)
+{
+ struct bt_component_class_filter *filter_class;
+ int ret = 0;
+
+ if (!component_class || component_class->frozen ||
+ !notification_iterator_seek_time_method ||
+ component_class->type != BT_COMPONENT_CLASS_TYPE_FILTER) {
+ ret = -1;
+ goto end;
+ }
+
+ filter_class = container_of(component_class,
+ struct bt_component_class_filter, parent);
+ filter_class->methods.iterator.seek_time =
+ notification_iterator_seek_time_method;
+
+end:
+ return ret;
+}
+
+int bt_component_class_set_description(