X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Flib%2Fgraph%2Fcomponent-class.h;h=b829672a9317ec333b376066e829f6944b8746e5;hb=43c59509042845f8d42c3e99ec74d45fa2dc0908;hp=6536a2310aadb48b365fcce55b93d8a54da92a07;hpb=21a9f056fd7d86d18aa7a1700c7f47d93eb1adeb;p=babeltrace.git diff --git a/src/lib/graph/component-class.h b/src/lib/graph/component-class.h index 6536a231..b829672a 100644 --- a/src/lib/graph/component-class.h +++ b/src/lib/graph/component-class.h @@ -26,15 +26,13 @@ * SOFTWARE. */ -#include #include -#include -#include -#include +#include #include "common/macros.h" #include "lib/object.h" #include "common/list.h" #include +#include #include struct bt_component_class; @@ -63,24 +61,34 @@ struct bt_component_class { struct bt_plugin_so_shared_lib_handle *so_handle; }; -struct bt_component_class_source { +struct bt_component_class_with_iterator_class { struct bt_component_class parent; + bt_message_iterator_class *msg_iter_cls; +}; + +struct bt_component_class_source { + struct bt_component_class_with_iterator_class parent; struct { bt_component_class_source_get_supported_mip_versions_method get_supported_mip_versions; bt_component_class_source_initialize_method init; bt_component_class_source_finalize_method finalize; - bt_component_class_source_message_iterator_initialize_method msg_iter_initialize; - bt_component_class_source_message_iterator_finalize_method msg_iter_finalize; - bt_component_class_source_message_iterator_next_method msg_iter_next; - bt_component_class_source_message_iterator_seek_ns_from_origin_method msg_iter_seek_ns_from_origin; - bt_component_class_source_message_iterator_seek_beginning_method msg_iter_seek_beginning; - bt_component_class_source_message_iterator_can_seek_ns_from_origin_method msg_iter_can_seek_ns_from_origin; - bt_component_class_source_message_iterator_can_seek_beginning_method msg_iter_can_seek_beginning; bt_component_class_source_query_method query; bt_component_class_source_output_port_connected_method output_port_connected; } methods; }; +struct bt_component_class_filter { + struct bt_component_class_with_iterator_class parent; + struct { + bt_component_class_filter_get_supported_mip_versions_method get_supported_mip_versions; + bt_component_class_filter_initialize_method init; + bt_component_class_filter_finalize_method finalize; + bt_component_class_filter_query_method query; + bt_component_class_filter_input_port_connected_method input_port_connected; + bt_component_class_filter_output_port_connected_method output_port_connected; + } methods; +}; + struct bt_component_class_sink { struct bt_component_class parent; struct { @@ -94,25 +102,6 @@ struct bt_component_class_sink { } methods; }; -struct bt_component_class_filter { - struct bt_component_class parent; - struct { - bt_component_class_filter_get_supported_mip_versions_method get_supported_mip_versions; - bt_component_class_filter_initialize_method init; - bt_component_class_filter_finalize_method finalize; - bt_component_class_filter_message_iterator_initialize_method msg_iter_initialize; - bt_component_class_filter_message_iterator_finalize_method msg_iter_finalize; - bt_component_class_filter_message_iterator_next_method msg_iter_next; - bt_component_class_filter_message_iterator_seek_ns_from_origin_method msg_iter_seek_ns_from_origin; - bt_component_class_filter_message_iterator_seek_beginning_method msg_iter_seek_beginning; - bt_component_class_filter_message_iterator_can_seek_ns_from_origin_method msg_iter_can_seek_ns_from_origin; - bt_component_class_filter_message_iterator_can_seek_beginning_method msg_iter_can_seek_beginning; - bt_component_class_filter_query_method query; - bt_component_class_filter_input_port_connected_method input_port_connected; - bt_component_class_filter_output_port_connected_method output_port_connected; - } methods; -}; - BT_HIDDEN void bt_component_class_add_destroy_listener(struct bt_component_class *class, bt_component_class_destroy_listener_func func, void *data); @@ -142,4 +131,12 @@ const char *bt_component_class_type_string(enum bt_component_class_type type) } } +static inline +bool bt_component_class_has_message_iterator_class( + struct bt_component_class *component_class) +{ + return component_class->type == BT_COMPONENT_CLASS_TYPE_SOURCE || + component_class->type == BT_COMPONENT_CLASS_TYPE_FILTER; +} + #endif /* BABELTRACE_GRAPH_COMPONENT_CLASS_INTERNAL_H */