X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fgraph%2Fcomponent-class-source.h;h=d0fed047dbc89037ce6d2688679a46d09d8231f7;hb=b09a5592823a648d50b1584f35faa399a139523f;hp=5bf1f178d331f5685a458d0bde5090e22bd8b509;hpb=834e9996a9d02f0cec468cb103ab2a573b7317b1;p=babeltrace.git diff --git a/include/babeltrace/graph/component-class-source.h b/include/babeltrace/graph/component-class-source.h index 5bf1f178..d0fed047 100644 --- a/include/babeltrace/graph/component-class-source.h +++ b/include/babeltrace/graph/component-class-source.h @@ -2,6 +2,7 @@ #define BABELTRACE_GRAPH_COMPONENT_CLASS_SOURCE_H /* + * Copyright 2017-2018 Philippe Proulx * Copyright 2016 Jérémie Galarneau * * Permission is hereby granted, free of charge, to any person obtaining a copy @@ -23,21 +24,121 @@ * SOFTWARE. */ +#include + +/* For enum bt_self_component_status */ +#include + +/* For enum bt_self_message_iterator_status */ +#include + +/* For enum bt_query_status */ +#include + +/* + * For bt_component_class, bt_component_class_source, bt_port_input, + * bt_query_executor, bt_self_component_class_source, + * bt_self_component_source, bt_self_component_port_output, bt_value, + * bt_message_array_const + */ +#include + #ifdef __cplusplus extern "C" { #endif -struct bt_component_class; -struct bt_component_class_source; +typedef enum bt_self_component_status +(*bt_component_class_source_init_method)( + bt_self_component_source *self_component, + const bt_value *params, void *init_method_data); + +typedef void (*bt_component_class_source_finalize_method)( + bt_self_component_source *self_component); + +typedef enum bt_self_message_iterator_status +(*bt_component_class_source_message_iterator_init_method)( + bt_self_message_iterator *message_iterator, + bt_self_component_source *self_component, + bt_self_component_port_output *port); + +typedef void +(*bt_component_class_source_message_iterator_finalize_method)( + bt_self_message_iterator *message_iterator); + +typedef enum bt_self_message_iterator_status +(*bt_component_class_source_message_iterator_next_method)( + bt_self_message_iterator *message_iterator, + bt_message_array_const msgs, uint64_t capacity, + uint64_t *count); + +typedef enum bt_query_status +(*bt_component_class_source_query_method)( + bt_self_component_class_source *comp_class, + const bt_query_executor *query_executor, + const char *object, const bt_value *params, + const bt_value **result); + +typedef enum bt_self_component_status +(*bt_component_class_source_accept_output_port_connection_method)( + bt_self_component_source *self_component, + bt_self_component_port_output *self_port, + const bt_port_input *other_port); + +typedef enum bt_self_component_status +(*bt_component_class_source_output_port_connected_method)( + bt_self_component_source *self_component, + bt_self_component_port_output *self_port, + const bt_port_input *other_port); + +typedef void +(*bt_component_class_source_output_port_disconnected_method)( + bt_self_component_source *self_component, + bt_self_component_port_output *self_port); static inline -struct bt_component_class * -bt_component_class_source_borrow_component_class( - struct bt_component_class_source *comp_cls_source) +bt_component_class *bt_component_class_source_as_component_class( + bt_component_class_source *comp_cls_source) { return (void *) comp_cls_source; } +extern +bt_component_class_source *bt_component_class_source_create( + const char *name, + bt_component_class_source_message_iterator_next_method method); + +extern int bt_component_class_source_set_init_method( + bt_component_class_source *comp_class, + bt_component_class_source_init_method method); + +extern int bt_component_class_source_set_finalize_method( + bt_component_class_source *comp_class, + bt_component_class_source_finalize_method method); + +extern int bt_component_class_source_set_accept_output_port_connection_method( + bt_component_class_source *comp_class, + bt_component_class_source_accept_output_port_connection_method method); + +extern int bt_component_class_source_set_output_port_connected_method( + bt_component_class_source *comp_class, + bt_component_class_source_output_port_connected_method method); + +extern int bt_component_class_source_set_output_port_disconnected_method( + bt_component_class_source *comp_class, + bt_component_class_source_output_port_disconnected_method method); + +extern int bt_component_class_source_set_query_method( + bt_component_class_source *comp_class, + bt_component_class_source_query_method method); + +extern int bt_component_class_source_set_message_iterator_init_method( + bt_component_class_source *comp_class, + bt_component_class_source_message_iterator_init_method method); + +extern int bt_component_class_source_set_message_iterator_finalize_method( + bt_component_class_source *comp_class, + bt_component_class_source_message_iterator_finalize_method method); + #ifdef __cplusplus } #endif