X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fgraph%2Fcomponent-sink-const.h;h=5ce6798284d8e742ea1a2205b3fced8890245d4a;hb=7e69c04f557e46fb50e5a888a3bc3451afbd3b8e;hp=af69be8cd59601492459e29ed0e7df4f51fcc86f;hpb=0d72b8c329ad51d14ab4e83330b38c2c8da69dd4;p=babeltrace.git diff --git a/include/babeltrace/graph/component-sink-const.h b/include/babeltrace/graph/component-sink-const.h index af69be8c..5ce67982 100644 --- a/include/babeltrace/graph/component-sink-const.h +++ b/include/babeltrace/graph/component-sink-const.h @@ -2,10 +2,9 @@ #define BABELTRACE_GRAPH_COMPONENT_SINK_CONST_H /* + * Copyright 2017-2018 Philippe Proulx * Copyright 2017 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 @@ -27,31 +26,56 @@ #include +/* + * For bt_component, bt_component_filter, bt_port_input, + * __BT_UPCAST_CONST, bt_component_class_sink + */ +#include + #ifdef __cplusplus extern "C" { #endif -struct bt_component; -struct bt_component_sink; -struct bt_port_input; - static inline -const struct bt_component *bt_component_sink_as_component_const( - const struct bt_component_sink *component) +const bt_component *bt_component_sink_as_component_const( + const bt_component_sink *component) { - return (const void *) component; + return __BT_UPCAST_CONST(bt_component, component); } +extern const bt_component_class_sink * +bt_component_sink_borrow_class_const( + const bt_component_sink *component); + extern uint64_t bt_component_sink_get_input_port_count( - const struct bt_component_sink *component); + const bt_component_sink *component); -extern const struct bt_port_input * +extern const bt_port_input * bt_component_sink_borrow_input_port_by_name_const( - const struct bt_component_sink *component, const char *name); + const bt_component_sink *component, const char *name); -extern const struct bt_port_input * +extern const bt_port_input * bt_component_sink_borrow_input_port_by_index_const( - const struct bt_component_sink *component, uint64_t index); + const bt_component_sink *component, uint64_t index); + +extern void bt_component_sink_get_ref( + const bt_component_sink *component_sink); + +extern void bt_component_sink_put_ref( + const bt_component_sink *component_sink); + +#define BT_COMPONENT_SINK_PUT_REF_AND_RESET(_var) \ + do { \ + bt_component_sink_put_ref(_var); \ + (_var) = NULL; \ + } while (0) + +#define BT_COMPONENT_SINK_MOVE_REF(_var_dst, _var_src) \ + do { \ + bt_component_sink_put_ref(_var_dst); \ + (_var_dst) = (_var_src); \ + (_var_src) = NULL; \ + } while (0) #ifdef __cplusplus }