X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Flib%2Fgraph%2Fcomponent-class.h;h=b829672a9317ec333b376066e829f6944b8746e5;hb=43c59509042845f8d42c3e99ec74d45fa2dc0908;hp=c6757ed3080dd6f3ab3d230743d0123f5b45ca3c;hpb=2ce06c9e12da671dd1098ed4174a070af95cb406;p=babeltrace.git diff --git a/src/lib/graph/component-class.h b/src/lib/graph/component-class.h index c6757ed3..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,27 +61,39 @@ 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_init_method init; + 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_init_method msg_iter_init; - 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 { - bt_component_class_sink_init_method init; + bt_component_class_sink_get_supported_mip_versions_method get_supported_mip_versions; + bt_component_class_sink_initialize_method init; bt_component_class_sink_finalize_method finalize; bt_component_class_sink_query_method query; bt_component_class_sink_input_port_connected_method input_port_connected; @@ -92,24 +102,6 @@ struct bt_component_class_sink { } methods; }; -struct bt_component_class_filter { - struct bt_component_class parent; - struct { - bt_component_class_filter_init_method init; - bt_component_class_filter_finalize_method finalize; - bt_component_class_filter_message_iterator_init_method msg_iter_init; - 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); @@ -129,14 +121,22 @@ const char *bt_component_class_type_string(enum bt_component_class_type type) { switch (type) { case BT_COMPONENT_CLASS_TYPE_SOURCE: - return "BT_COMPONENT_CLASS_TYPE_SOURCE"; + return "SOURCE"; case BT_COMPONENT_CLASS_TYPE_SINK: - return "BT_COMPONENT_CLASS_TYPE_SINK"; + return "SINK"; case BT_COMPONENT_CLASS_TYPE_FILTER: - return "BT_COMPONENT_CLASS_TYPE_FILTER"; + return "FILTER"; default: return "(unknown)"; } } +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 */