X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=src%2Flib%2Fgraph%2Fcomponent-class.h;h=ac51bcfb064e600b7946211bfa1cc512a0dccaf1;hp=bded3328a3981eb0e0a0f85ac822de128d2f2cbf;hb=0235b0db7de5bcacdb3650c92461f2ce5eb2143d;hpb=c594ab036e1797da45594dce8dfc07d90f2bb81f diff --git a/src/lib/graph/component-class.h b/src/lib/graph/component-class.h index bded3328..ac51bcfb 100644 --- a/src/lib/graph/component-class.h +++ b/src/lib/graph/component-class.h @@ -1,40 +1,20 @@ -#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" #include +#include #include struct bt_component_class; @@ -54,6 +34,7 @@ struct bt_component_class { GString *name; GString *description; GString *help; + GString *plugin_name; /* Array of struct bt_component_class_destroy_listener */ GArray *destroy_listeners; @@ -62,27 +43,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; @@ -91,24 +84,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); @@ -128,14 +103,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 */