2 * SPDX-License-Identifier: MIT
4 * Copyright (C) 2010-2019 EfficiOS Inc. and Linux Foundation
7 #ifndef BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H
8 #define BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H
10 #ifndef __BT_IN_BABELTRACE_H
11 # error "Please include <babeltrace2/babeltrace.h> instead."
14 #include <babeltrace2/types.h>
21 @defgroup api-self-comp-cls Self component classes
22 @ingroup api-comp-cls-dev
25 Private views of \bt_p_comp_cls for class methods.
27 The #bt_self_component_class, #bt_self_component_class_source,
28 #bt_self_component_class_filter, #bt_self_component_class_sink types are
29 private views of a \bt_comp_cls from within a component class
30 \ref api-comp-cls-dev-class-meth "class method".
32 As of \bt_name_version_min_maj, this module only contains functions
33 to \ref api-fund-c-typing "upcast" the "self" (private) types to their
34 public #bt_component_class, #bt_component_class_source,
35 #bt_component_class_filter, and #bt_component_class_sink counterparts.
44 @typedef struct bt_self_component_class bt_self_component_class;
49 @typedef struct bt_self_component_class_source bt_self_component_class_source;
52 Self \bt_src_comp_cls.
54 @typedef struct bt_self_component_class_filter bt_self_component_class_filter;
57 Self \bt_flt_comp_cls.
59 @typedef struct bt_self_component_class_sink bt_self_component_class_sink;
62 Self \bt_sink_comp_cls.
68 @name Self to public upcast
74 \ref api-fund-c-typing "Upcasts" the self \bt_comp_cls
75 \bt_p{self_component_class} to the public #bt_component_class type.
77 @param[in] self_component_class
79 Component class to upcast.
85 \bt_p{self_component_class} as a public component class.
88 const bt_component_class
*bt_self_component_class_as_component_class(
89 bt_self_component_class
*self_component_class
)
91 return __BT_UPCAST(bt_component_class
, self_component_class
);
96 \ref api-fund-c-typing "Upcasts" the self \bt_src_comp_cls
97 \bt_p{self_component_class} to the public #bt_component_class_source
100 @param[in] self_component_class
102 Source component class to upcast.
108 \bt_p{self_component_class} as a public source component class.
111 const bt_component_class_source
*
112 bt_self_component_class_source_as_component_class_source(
113 bt_self_component_class_source
*self_component_class
)
115 return __BT_UPCAST_CONST(bt_component_class_source
,
116 self_component_class
);
121 \ref api-fund-c-typing "Upcasts" the self \bt_flt_comp_cls
122 \bt_p{self_component_class} to the public #bt_component_class_filter
125 @param[in] self_component_class
127 Filter component class to upcast.
133 \bt_p{self_component_class} as a public filter component class.
136 const bt_component_class_filter
*
137 bt_self_component_class_filter_as_component_class_filter(
138 bt_self_component_class_filter
*self_component_class
)
140 return __BT_UPCAST_CONST(bt_component_class_filter
,
141 self_component_class
);
146 \ref api-fund-c-typing "Upcasts" the self \bt_sink_comp_cls
147 \bt_p{self_component_class} to the public #bt_component_class_sink
150 @param[in] self_component_class
152 Sink component class to upcast.
158 \bt_p{self_component_class} as a public sink component class.
161 const bt_component_class_sink
*
162 bt_self_component_class_sink_as_component_class_sink(
163 bt_self_component_class_sink
*self_component_class
)
165 return __BT_UPCAST_CONST(bt_component_class_sink
, self_component_class
);
171 @name Self to common self upcast
177 \ref api-fund-c-typing "Upcasts" the self \bt_src_comp_cls
178 \bt_p{self_component_class} to the common #bt_self_component_class
181 @param[in] self_component_class
183 Source component class to upcast.
189 \bt_p{self_component_class} as a common self component class.
192 bt_self_component_class
*
193 bt_self_component_class_source_as_self_component_class(
194 bt_self_component_class_source
*self_component_class
)
196 return __BT_UPCAST(bt_self_component_class
, self_component_class
);
201 \ref api-fund-c-typing "Upcasts" the self \bt_flt_comp_cls
202 \bt_p{self_component_class} to the common #bt_self_component_class
205 @param[in] self_component_class
207 Filter component class to upcast.
213 \bt_p{self_component_class} as a common self component class.
216 bt_self_component_class
*
217 bt_self_component_class_filter_as_self_component_class(
218 bt_self_component_class_filter
*self_component_class
)
220 return __BT_UPCAST(bt_self_component_class
, self_component_class
);
225 \ref api-fund-c-typing "Upcasts" the self \bt_sink_comp_cls
226 \bt_p{self_component_class} to the common #bt_self_component_class
229 @param[in] self_component_class
231 Sink component class to upcast.
237 \bt_p{self_component_class} as a common self component class.
240 bt_self_component_class
*
241 bt_self_component_class_sink_as_self_component_class(
242 bt_self_component_class_sink
*self_component_class
)
244 return __BT_UPCAST(bt_self_component_class
, self_component_class
);
255 #endif /* BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H */