X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fgraph%2Fcomponent-internal.h;h=27b03b09595520b5e19598b0dffcec0473735b8c;hb=3230ee6b4f3a704958b761daecae835c56938bc9;hp=1e7b547aef911b56b6f5b9076e8c6bb750737522;hpb=43350437a513e8ed1a158ff3013eb5efefd3dc3b;p=babeltrace.git diff --git a/include/babeltrace/graph/component-internal.h b/include/babeltrace/graph/component-internal.h index 1e7b547a..27b03b09 100644 --- a/include/babeltrace/graph/component-internal.h +++ b/include/babeltrace/graph/component-internal.h @@ -38,6 +38,14 @@ #define DEFAULT_INPUT_PORT_NAME "default" #define DEFAULT_OUTPUT_PORT_NAME "default" +typedef void (*bt_component_destroy_listener_func)( + struct bt_component *class, void *data); + +struct bt_component_destroy_listener { + bt_component_destroy_listener_func func; + void *data; +}; + struct bt_component { struct bt_object base; struct bt_component_class *class; @@ -61,6 +69,9 @@ struct bt_component { /* Input and output ports (weak references) */ GPtrArray *input_ports; GPtrArray *output_ports; + + /* Array of struct bt_component_destroy_listener */ + GArray *destroy_listeners; }; static inline @@ -128,4 +139,12 @@ BT_HIDDEN enum bt_component_status bt_component_remove_port( struct bt_component *component, struct bt_port *port); +BT_HIDDEN +void bt_component_add_destroy_listener(struct bt_component *component, + bt_component_destroy_listener_func func, void *data); + +BT_HIDDEN +void bt_component_remove_destroy_listener(struct bt_component *component, + bt_component_destroy_listener_func func, void *data); + #endif /* BABELTRACE_COMPONENT_COMPONENT_INTERNAL_H */