2 * SPDX-License-Identifier: MIT
4 * Copyright (C) 2010-2019 EfficiOS Inc. and Linux Foundation
7 #ifndef BABELTRACE2_GRAPH_COMPONENT_H
8 #define BABELTRACE2_GRAPH_COMPONENT_H
10 /* IWYU pragma: private, include <babeltrace2/babeltrace.h> */
12 #ifndef __BT_IN_BABELTRACE_H
13 # error "Please include <babeltrace2/babeltrace.h> instead."
16 #include <babeltrace2/graph/component-class.h>
17 #include <babeltrace2/types.h>
18 #include <babeltrace2/logging.h>
25 @defgroup api-comp Components
29 Source, filter, and sink components: nodes in a trace processing
32 A <strong><em>component</em></strong> is a node within a trace
35 @image html component.png
37 A component is \bt_comp_cls instance. Borrow the class of a
38 component with bt_component_borrow_class_const(),
39 bt_component_source_borrow_class_const(),
40 bt_component_filter_borrow_class_const(), and
41 bt_component_sink_borrow_class_const().
43 A component is a \ref api-fund-shared-object "shared object": get a new
44 reference with bt_component_get_ref() and put an existing reference with
45 bt_component_put_ref().
47 The common C type of a port is #bt_component.
49 There are three types of components, which come from the three types
53 <dt>\anchor api-comp-src Source component</dt>
55 A source component's \bt_msg_iter emits fresh \bt_p_msg.
57 A source component's specific type is #bt_component_source and its
58 class's type enumerator is #BT_COMPONENT_CLASS_TYPE_SOURCE.
60 \ref api-fund-c-typing "Upcast" the #bt_component_source type to the
61 #bt_component type with bt_component_source_as_component_const().
63 Get a new source component reference with
64 bt_component_source_get_ref() and put an existing one with
65 bt_component_source_put_ref().
67 A source component has \bt_p_oport only.
69 Get the number of output ports a source component has with
70 bt_component_source_get_output_port_count().
72 Borrow a source component's output port by index with
73 bt_component_source_borrow_output_port_by_index_const() or by name
74 with bt_component_source_borrow_output_port_by_name_const().
77 <dt>\anchor api-comp-flt Filter component</dt>
79 A filter component's message iterator emits fresh and transformed
80 messages. It can also discard existing messages.
82 A filter component's specific type is #bt_component_filter and its
83 class's type enumerator is #BT_COMPONENT_CLASS_TYPE_FILTER.
85 \ref api-fund-c-typing "Upcast" the #bt_component_filter type to the
86 #bt_component type with bt_component_filter_as_component_const().
88 Get a new filter component reference with
89 bt_component_filter_get_ref() and put an existing one with
90 bt_component_filter_put_ref().
92 A filter component has \bt_p_iport and \bt_p_oport.
94 Get the number of output ports a filter component has with
95 bt_component_filter_get_output_port_count().
97 Borrow a filter component's output port by index with
98 bt_component_filter_borrow_output_port_by_index_const() or by name
99 with bt_component_filter_borrow_output_port_by_name_const().
101 Get the number of input ports a filter component has with
102 bt_component_filter_get_input_port_count().
104 Borrow a filter component's input port by index with
105 bt_component_filter_borrow_input_port_by_index_const() or by name
106 with bt_component_filter_borrow_input_port_by_name_const().
109 <dt>\anchor api-comp-sink Sink component</dt>
111 A sink component consumes messages from a source or filter message
114 A filter component's specific type is #bt_component_sink and its
115 class's type enumerator is #BT_COMPONENT_CLASS_TYPE_SINK.
117 \ref api-fund-c-typing "Upcast" the #bt_component_sink type to the
118 #bt_component type with bt_component_sink_as_component_const().
120 Get a new sink component reference with bt_component_sink_get_ref()
121 and put an existing one with bt_component_sink_put_ref().
123 A sink component has \bt_p_iport only.
125 Get the number of input ports a sink component has with
126 bt_component_sink_get_input_port_count().
128 Borrow a sink component's input port by index with
129 bt_component_sink_borrow_input_port_by_index_const() or by name
130 with bt_component_sink_borrow_input_port_by_name_const().
134 Get a component's class type enumerator with
135 bt_component_get_class_type(). You can also use the
136 bt_component_is_source(), bt_component_is_filter(), and
137 bt_component_is_sink() helper functions.
139 You cannot directly create a component: there are no
140 <code>bt_component_*_create()</code> functions. A trace processing
141 \bt_graph creates a component from a \bt_comp_cls when you call one of
142 the <code>bt_graph_add_*_component*()</code> functions. Those functions
143 also return a borrowed reference of the created component through their
144 \bt_p{component} parameter.
148 A component has the following common properties:
152 \anchor api-comp-prop-name
156 Name of the component.
158 Each component has a unique name within a given trace processing
161 A component's name is set when you
162 \ref api-graph-lc-add "add it to a graph" with one of the
163 <code>bt_graph_add_*_component*()</code> functions (\bt_p{name}
164 parameter); you cannot change it afterwards.
166 Get a component's name with bt_component_get_name().
170 \anchor api-comp-prop-log-lvl
174 Logging level of the component (and its message iterators, if any).
176 A component's logging level is set when you
177 \ref api-graph-lc-add "add it to a trace processing graph" with one
178 of the <code>bt_graph_add_*_component*()</code> functions
179 (\bt_p{logging_level} parameter); as of
180 \bt_name_version_min_maj, you cannot change it afterwards.
182 Get a component's logging level with
183 bt_component_get_logging_level().
194 @typedef struct bt_component bt_component;
199 @typedef struct bt_component_source bt_component_source;
204 @typedef struct bt_component_filter bt_component_filter;
209 @typedef struct bt_component_sink bt_component_sink;
218 @name Class type query
224 Returns the type enumerator of the \ref api-comp-cls "class" of
225 the component \bt_p{component}.
228 Component of which to get the class's type enumerator.
231 Type enumerator of the class of \bt_p{component}.
233 @bt_pre_not_null{component}
235 @sa bt_component_is_source() —
236 Returns whether or not a component is a \bt_src_comp.
237 @sa bt_component_is_filter() —
238 Returns whether or not a component is a \bt_flt_comp.
239 @sa bt_component_is_sink() —
240 Returns whether or not a component is a \bt_sink_comp.
242 extern bt_component_class_type
bt_component_get_class_type(
243 const bt_component
*component
);
247 Returns whether or not the component \bt_p{component} is a
254 #BT_TRUE if \bt_p{component} is a source component.
256 @bt_pre_not_null{component}
258 @sa bt_component_get_class_type() —
259 Returns the type enumerator of a component's class.
262 bt_bool
bt_component_is_source(const bt_component
*component
)
264 return bt_component_get_class_type(component
) ==
265 BT_COMPONENT_CLASS_TYPE_SOURCE
;
270 Returns whether or not the component \bt_p{component} is a
277 #BT_TRUE if \bt_p{component} is a filter component.
279 @bt_pre_not_null{component}
281 @sa bt_component_get_class_type() —
282 Returns the type enumerator of a component's class.
285 bt_bool
bt_component_is_filter(const bt_component
*component
)
287 return bt_component_get_class_type(component
) ==
288 BT_COMPONENT_CLASS_TYPE_FILTER
;
293 Returns whether or not the component \bt_p{component} is a
300 #BT_TRUE if \bt_p{component} is a sink component.
302 @bt_pre_not_null{component}
304 @sa bt_component_get_class_type() —
305 Returns the type enumerator of a component's class.
308 bt_bool
bt_component_is_sink(const bt_component
*component
)
310 return bt_component_get_class_type(component
) ==
311 BT_COMPONENT_CLASS_TYPE_SINK
;
317 @name Common class access
323 Borrows the \ref api-comp-cls "class" of the component
327 Component of which to borrow the class.
330 \em Borrowed reference of the class of \bt_p{component}.
332 @bt_pre_not_null{component}
334 extern const bt_component_class
*bt_component_borrow_class_const(
335 const bt_component
*component
);
340 @name Common properties
346 Returns the name of the component \bt_p{component}.
348 See the \ref api-comp-prop-name "name" property.
351 Component of which to get the name.
355 Name of \bt_p{component}.
357 The returned pointer remains valid as long as \bt_p{component}
361 @bt_pre_not_null{component}
363 extern const char *bt_component_get_name(const bt_component
*component
);
367 Returns the logging level of the component \bt_p{component} and its
368 \bt_p_msg_iter, if any.
370 See the \ref api-comp-prop-log-lvl "logging level" property.
373 Component of which to get the logging level.
376 Logging level of \bt_p{component}.
378 @bt_pre_not_null{component}
380 extern bt_logging_level
bt_component_get_logging_level(
381 const bt_component
*component
);
386 @name Common reference count
392 Increments the \ref api-fund-shared-object "reference count" of
393 the component \bt_p{component}.
397 Component of which to increment the reference count.
402 @sa bt_component_put_ref() —
403 Decrements the reference count of a component.
405 extern void bt_component_get_ref(const bt_component
*component
);
409 Decrements the \ref api-fund-shared-object "reference count" of
410 the component \bt_p{component}.
414 Component of which to decrement the reference count.
419 @sa bt_component_get_ref() —
420 Increments the reference count of a component.
422 extern void bt_component_put_ref(const bt_component
*component
);
426 Decrements the reference count of the component
427 \bt_p{_component}, and then sets \bt_p{_component} to \c NULL.
431 Component of which to decrement the reference count.
436 @bt_pre_assign_expr{_component}
438 #define BT_COMPONENT_PUT_REF_AND_RESET(_component) \
440 bt_component_put_ref(_component); \
441 (_component) = NULL; \
446 Decrements the reference count of the component \bt_p{_dst}, sets
447 \bt_p{_dst} to \bt_p{_src}, and then sets \bt_p{_src} to \c NULL.
449 This macro effectively moves a component reference from the expression
450 \bt_p{_src} to the expression \bt_p{_dst}, putting the existing
451 \bt_p{_dst} reference.
455 Destination expression.
466 @bt_pre_assign_expr{_dst}
467 @bt_pre_assign_expr{_src}
469 #define BT_COMPONENT_MOVE_REF(_dst, _src) \
471 bt_component_put_ref(_dst); \
479 @name Source component class access
485 Borrows the \ref api-comp-cls "class" of the \bt_src_comp
489 Source component of which to borrow the class.
492 \em Borrowed reference of the class of \bt_p{component}.
494 @bt_pre_not_null{component}
496 extern const bt_component_class_source
*
497 bt_component_source_borrow_class_const(
498 const bt_component_source
*component
);
503 @name Source component upcast
509 \ref api-fund-c-typing "Upcasts" the \bt_src_comp \bt_p{component}
510 to the common #bt_component type.
514 Source component to upcast.
520 \bt_p{component} as a common component.
523 const bt_component
*bt_component_source_as_component_const(
524 const bt_component_source
*component
)
526 return __BT_UPCAST_CONST(bt_component
, component
);
532 @name Source component port access
538 Returns the number of \bt_p_oport that the \bt_src_comp
539 \bt_p{component} has.
542 Source component of which to get the number of output ports.
545 Number of output ports that \bt_p{component} has.
547 @bt_pre_not_null{component}
549 extern uint64_t bt_component_source_get_output_port_count(
550 const bt_component_source
*component
);
554 Borrows the \bt_oport at index \bt_p{index} from the
555 \bt_src_comp \bt_p{component}.
558 Source component from which to borrow the output port at index
561 Index of the output port to borrow from \bt_p{component}.
565 \em Borrowed reference of the output port of
566 \bt_p{component} at index \bt_p{index}.
568 The returned pointer remains valid as long as \bt_p{component}
572 @bt_pre_not_null{component}
574 \bt_p{index} is less than the number of output ports
575 \bt_p{component} has (as returned by
576 bt_component_source_get_output_port_count()).
578 @sa bt_component_source_get_output_port_count() —
579 Returns the number of output ports that a source component has.
581 extern const bt_port_output
*
582 bt_component_source_borrow_output_port_by_index_const(
583 const bt_component_source
*component
, uint64_t index
);
587 Borrows the \bt_oport named \bt_p{name} from the \bt_src_comp
590 If \bt_p{component} has no output port named \bt_p{name}, this function
594 Source component from which to borrow the output port
597 Name of the output port to borrow from \bt_p{component}.
601 \em Borrowed reference of the output port of
602 \bt_p{component} named \bt_p{name}, or \c NULL if none.
604 The returned pointer remains valid as long as \bt_p{component}
608 @bt_pre_not_null{component}
609 @bt_pre_not_null{name}
611 extern const bt_port_output
*
612 bt_component_source_borrow_output_port_by_name_const(
613 const bt_component_source
*component
, const char *name
);
618 @name Source component reference count
624 Increments the \ref api-fund-shared-object "reference count" of
625 the \bt_src_comp \bt_p{component}.
629 Source component of which to increment the reference count.
634 @sa bt_component_source_put_ref() —
635 Decrements the reference count of a source component.
637 extern void bt_component_source_get_ref(
638 const bt_component_source
*component
);
642 Decrements the \ref api-fund-shared-object "reference count" of
643 the \bt_src_comp \bt_p{component}.
647 Source component of which to decrement the reference count.
652 @sa bt_component_source_get_ref() —
653 Increments the reference count of a source component.
655 extern void bt_component_source_put_ref(
656 const bt_component_source
*component
);
660 Decrements the reference count of the \bt_src_comp
661 \bt_p{_component}, and then sets \bt_p{_component} to \c NULL.
665 Source component of which to decrement the reference count.
670 @bt_pre_assign_expr{_component}
672 #define BT_COMPONENT_SOURCE_PUT_REF_AND_RESET(_component) \
674 bt_component_source_put_ref(_component); \
675 (_component) = NULL; \
680 Decrements the reference count of the \bt_src_comp \bt_p{_dst}, sets
681 \bt_p{_dst} to \bt_p{_src}, and then sets \bt_p{_src} to \c NULL.
683 This macro effectively moves a source component reference from the
684 expression \bt_p{_src} to the expression \bt_p{_dst}, putting the
685 existing \bt_p{_dst} reference.
689 Destination expression.
700 @bt_pre_assign_expr{_dst}
701 @bt_pre_assign_expr{_src}
703 #define BT_COMPONENT_SOURCE_MOVE_REF(_dst, _src) \
705 bt_component_source_put_ref(_dst); \
713 @name Filter component class access
719 Borrows the \ref api-comp-cls "class" of the \bt_flt_comp
723 Filter component of which to borrow the class.
726 \em Borrowed reference of the class of \bt_p{component}.
728 @bt_pre_not_null{component}
730 extern const bt_component_class_filter
*
731 bt_component_filter_borrow_class_const(
732 const bt_component_filter
*component
);
737 @name Filter component upcast
743 \ref api-fund-c-typing "Upcasts" the \bt_flt_comp \bt_p{component}
744 to the common #bt_component type.
748 Filter component to upcast.
754 \bt_p{component} as a common component.
757 const bt_component
*bt_component_filter_as_component_const(
758 const bt_component_filter
*component
)
760 return __BT_UPCAST_CONST(bt_component
, component
);
766 @name Filter component port access
772 Returns the number of \bt_p_iport that the \bt_flt_comp
773 \bt_p{component} has.
776 Filter component of which to get the number of input ports.
779 Number of input ports that \bt_p{component} has.
781 @bt_pre_not_null{component}
783 extern uint64_t bt_component_filter_get_input_port_count(
784 const bt_component_filter
*component
);
788 Borrows the \bt_iport at index \bt_p{index} from the
789 \bt_flt_comp \bt_p{component}.
792 Filter component from which to borrow the input port at index
795 Index of the input port to borrow from \bt_p{component}.
799 \em Borrowed reference of the input port of
800 \bt_p{component} at index \bt_p{index}.
802 The returned pointer remains valid as long as \bt_p{component}
806 @bt_pre_not_null{component}
808 \bt_p{index} is less than the number of input ports
809 \bt_p{component} has (as returned by
810 bt_component_filter_get_input_port_count()).
812 @sa bt_component_filter_get_input_port_count() —
813 Returns the number of input ports that a filter component has.
815 extern const bt_port_input
*
816 bt_component_filter_borrow_input_port_by_index_const(
817 const bt_component_filter
*component
, uint64_t index
);
821 Borrows the \bt_iport named \bt_p{name} from the \bt_flt_comp
824 If \bt_p{component} has no input port named \bt_p{name}, this function
828 Filter component from which to borrow the input port
831 Name of the input port to borrow from \bt_p{component}.
835 \em Borrowed reference of the input port of
836 \bt_p{component} named \bt_p{name}, or \c NULL if none.
838 The returned pointer remains valid as long as \bt_p{component}
842 @bt_pre_not_null{component}
843 @bt_pre_not_null{name}
845 extern const bt_port_input
*
846 bt_component_filter_borrow_input_port_by_name_const(
847 const bt_component_filter
*component
, const char *name
);
851 Returns the number of \bt_p_oport that the \bt_flt_comp
852 \bt_p{component} has.
855 Filter component of which to get the number of output ports.
858 Number of output ports that \bt_p{component} has.
860 @bt_pre_not_null{component}
862 extern uint64_t bt_component_filter_get_output_port_count(
863 const bt_component_filter
*component
);
867 Borrows the \bt_oport at index \bt_p{index} from the
868 \bt_flt_comp \bt_p{component}.
871 Filter component from which to borrow the output port at index
874 Index of the output port to borrow from \bt_p{component}.
878 \em Borrowed reference of the output port of
879 \bt_p{component} at index \bt_p{index}.
881 The returned pointer remains valid as long as \bt_p{component}
885 @bt_pre_not_null{component}
887 \bt_p{index} is less than the number of output ports
888 \bt_p{component} has (as returned by
889 bt_component_filter_get_output_port_count()).
891 @sa bt_component_filter_get_output_port_count() —
892 Returns the number of output ports that a filter component has.
894 extern const bt_port_output
*
895 bt_component_filter_borrow_output_port_by_index_const(
896 const bt_component_filter
*component
, uint64_t index
);
900 Borrows the \bt_oport named \bt_p{name} from the \bt_flt_comp
903 If \bt_p{component} has no output port named \bt_p{name}, this function
907 Filter component from which to borrow the output port
910 Name of the output port to borrow from \bt_p{component}.
914 \em Borrowed reference of the output port of
915 \bt_p{component} named \bt_p{name}, or \c NULL if none.
917 The returned pointer remains valid as long as \bt_p{component}
921 @bt_pre_not_null{component}
922 @bt_pre_not_null{name}
924 extern const bt_port_output
*
925 bt_component_filter_borrow_output_port_by_name_const(
926 const bt_component_filter
*component
, const char *name
);
931 @name Filter component reference count
937 Increments the \ref api-fund-shared-object "reference count" of
938 the \bt_flt_comp \bt_p{component}.
942 Filter component of which to increment the reference count.
947 @sa bt_component_filter_put_ref() —
948 Decrements the reference count of a filter component.
950 extern void bt_component_filter_get_ref(
951 const bt_component_filter
*component
);
955 Decrements the \ref api-fund-shared-object "reference count" of
956 the \bt_flt_comp \bt_p{component}.
960 Filter component of which to decrement the reference count.
965 @sa bt_component_filter_get_ref() —
966 Increments the reference count of a filter component.
968 extern void bt_component_filter_put_ref(
969 const bt_component_filter
*component
);
973 Decrements the reference count of the \bt_flt_comp
974 \bt_p{_component}, and then sets \bt_p{_component} to \c NULL.
978 Filter component of which to decrement the reference count.
983 @bt_pre_assign_expr{_component}
985 #define BT_COMPONENT_FILTER_PUT_REF_AND_RESET(_component) \
987 bt_component_filter_put_ref(_component); \
988 (_component) = NULL; \
993 Decrements the reference count of the \bt_flt_comp \bt_p{_dst}, sets
994 \bt_p{_dst} to \bt_p{_src}, and then sets \bt_p{_src} to \c NULL.
996 This macro effectively moves a filter component reference from the
997 expression \bt_p{_src} to the expression \bt_p{_dst}, putting the
998 existing \bt_p{_dst} reference.
1002 Destination expression.
1004 Can contain \c NULL.
1010 Can contain \c NULL.
1013 @bt_pre_assign_expr{_dst}
1014 @bt_pre_assign_expr{_src}
1016 #define BT_COMPONENT_FILTER_MOVE_REF(_dst, _src) \
1018 bt_component_filter_put_ref(_dst); \
1026 @name Sink component class access
1032 Borrows the \ref api-comp-cls "class" of the \bt_sink_comp
1035 @param[in] component
1036 Sink component of which to borrow the class.
1039 \em Borrowed reference of the class of \bt_p{component}.
1041 @bt_pre_not_null{component}
1043 extern const bt_component_class_sink
*
1044 bt_component_sink_borrow_class_const(
1045 const bt_component_sink
*component
);
1050 @name Sink component upcast
1056 \ref api-fund-c-typing "Upcasts" the \bt_sink_comp \bt_p{component}
1057 to the common #bt_component type.
1059 @param[in] component
1061 Sink component to upcast.
1067 \bt_p{component} as a common component.
1070 const bt_component
*bt_component_sink_as_component_const(
1071 const bt_component_sink
*component
)
1073 return __BT_UPCAST_CONST(bt_component
, component
);
1079 @name Sink component port access
1085 Returns the number of \bt_p_iport that the \bt_sink_comp
1086 \bt_p{component} has.
1088 @param[in] component
1089 Sink component of which to get the number of input ports.
1092 Number of input ports that \bt_p{component} has.
1094 @bt_pre_not_null{component}
1096 extern uint64_t bt_component_sink_get_input_port_count(
1097 const bt_component_sink
*component
);
1101 Borrows the \bt_iport at index \bt_p{index} from the
1102 \bt_sink_comp \bt_p{component}.
1104 @param[in] component
1105 Sink component from which to borrow the input port at index
1108 Index of the input port to borrow from \bt_p{component}.
1112 \em Borrowed reference of the input port of
1113 \bt_p{component} at index \bt_p{index}.
1115 The returned pointer remains valid as long as \bt_p{component}
1119 @bt_pre_not_null{component}
1121 \bt_p{index} is less than the number of input ports
1122 \bt_p{component} has (as returned by
1123 bt_component_sink_get_input_port_count()).
1125 @sa bt_component_sink_get_input_port_count() —
1126 Returns the number of input ports that a sink component has.
1128 extern const bt_port_input
*
1129 bt_component_sink_borrow_input_port_by_index_const(
1130 const bt_component_sink
*component
, uint64_t index
);
1134 Borrows the \bt_oport named \bt_p{name} from the \bt_sink_comp
1137 If \bt_p{component} has no output port named \bt_p{name}, this function
1140 @param[in] component
1141 Sink component from which to borrow the output port
1144 Name of the output port to borrow from \bt_p{component}.
1148 \em Borrowed reference of the output port of
1149 \bt_p{component} named \bt_p{name}, or \c NULL if none.
1151 The returned pointer remains valid as long as \bt_p{component}
1155 @bt_pre_not_null{component}
1156 @bt_pre_not_null{name}
1158 extern const bt_port_input
*
1159 bt_component_sink_borrow_input_port_by_name_const(
1160 const bt_component_sink
*component
, const char *name
);
1165 @name Sink component reference count
1171 Increments the \ref api-fund-shared-object "reference count" of
1172 the \bt_sink_comp \bt_p{component}.
1174 @param[in] component
1176 Sink component of which to increment the reference count.
1181 @sa bt_component_sink_put_ref() —
1182 Decrements the reference count of a sink component.
1184 extern void bt_component_sink_get_ref(
1185 const bt_component_sink
*component
);
1189 Decrements the \ref api-fund-shared-object "reference count" of
1190 the \bt_sink_comp \bt_p{component}.
1192 @param[in] component
1194 Sink component of which to decrement the reference count.
1199 @sa bt_component_sink_get_ref() —
1200 Increments the reference count of a sink component.
1202 extern void bt_component_sink_put_ref(
1203 const bt_component_sink
*component
);
1207 Decrements the reference count of the \bt_sink_comp
1208 \bt_p{_component}, and then sets \bt_p{_component} to \c NULL.
1212 Sink component of which to decrement the reference count.
1214 Can contain \c NULL.
1217 @bt_pre_assign_expr{_component}
1219 #define BT_COMPONENT_SINK_PUT_REF_AND_RESET(_component) \
1221 bt_component_sink_put_ref(_component); \
1222 (_component) = NULL; \
1227 Decrements the reference count of the \bt_sink_comp \bt_p{_dst},
1228 sets \bt_p{_dst} to \bt_p{_src}, and then sets \bt_p{_src} to
1231 This macro effectively moves a sink component reference from the
1232 expression \bt_p{_src} to the expression \bt_p{_dst}, putting the
1233 existing \bt_p{_dst} reference.
1237 Destination expression.
1239 Can contain \c NULL.
1245 Can contain \c NULL.
1248 @bt_pre_assign_expr{_dst}
1249 @bt_pre_assign_expr{_src}
1251 #define BT_COMPONENT_SINK_MOVE_REF(_dst, _src) \
1253 bt_component_sink_put_ref(_dst); \
1266 #endif /* BABELTRACE2_GRAPH_COMPONENT_H */