X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=src%2Flib%2Fgraph%2Fcomponent-class.h;h=ac51bcfb064e600b7946211bfa1cc512a0dccaf1;hp=359d85959914f34c75628532221fe6b9d254ad67;hb=0235b0db7de5bcacdb3650c92461f2ce5eb2143d;hpb=c4f23e30bf67d2523163614bc9461d84cbe1ae80 diff --git a/src/lib/graph/component-class.h b/src/lib/graph/component-class.h index 359d8595..ac51bcfb 100644 --- a/src/lib/graph/component-class.h +++ b/src/lib/graph/component-class.h @@ -1,36 +1,15 @@ -#ifndef BABELTRACE_GRAPH_COMPONENT_CLASS_INTERNAL_H -#define BABELTRACE_GRAPH_COMPONENT_CLASS_INTERNAL_H - /* + * SPDX-License-Identifier: MIT + * * Copyright 2017-2018 Philippe Proulx * Copyright 2015 Jérémie Galarneau - * - * Author: Jérémie Galarneau - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. */ -#include +#ifndef BABELTRACE_GRAPH_COMPONENT_CLASS_INTERNAL_H +#define BABELTRACE_GRAPH_COMPONENT_CLASS_INTERNAL_H + #include -#include -#include -#include +#include #include "common/macros.h" #include "lib/object.h" #include "common/list.h" @@ -64,24 +43,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 { @@ -95,25 +84,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); @@ -143,4 +113,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 */