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 /* IWYU pragma: private, include <babeltrace2/babeltrace.h> */
12 #ifndef __BT_IN_BABELTRACE_H
13 # error "Please include <babeltrace2/babeltrace.h> instead."
16 #include <babeltrace2/types.h>
23 @defgroup api-self-comp-cls Self component classes
24 @ingroup api-comp-cls-dev
27 Private views of \bt_p_comp_cls for class methods.
29 The #bt_self_component_class, #bt_self_component_class_source,
30 #bt_self_component_class_filter, #bt_self_component_class_sink types are
31 private views of a \bt_comp_cls from within a component class
32 \ref api-comp-cls-dev-class-meth "class method".
34 As of \bt_name_version_min_maj, this module only contains functions
35 to \ref api-fund-c-typing "upcast" the "self" (private) types to their
36 public #bt_component_class, #bt_component_class_source,
37 #bt_component_class_filter, and #bt_component_class_sink counterparts.
46 @typedef struct bt_self_component_class bt_self_component_class;
51 @typedef struct bt_self_component_class_source bt_self_component_class_source;
54 Self \bt_src_comp_cls.
56 @typedef struct bt_self_component_class_filter bt_self_component_class_filter;
59 Self \bt_flt_comp_cls.
61 @typedef struct bt_self_component_class_sink bt_self_component_class_sink;
64 Self \bt_sink_comp_cls.
70 @name Self to public upcast
76 \ref api-fund-c-typing "Upcasts" the self \bt_comp_cls
77 \bt_p{self_component_class} to the public #bt_component_class type.
79 @param[in] self_component_class
81 Component class to upcast.
87 \bt_p{self_component_class} as a public component class.
90 const bt_component_class
*bt_self_component_class_as_component_class(
91 bt_self_component_class
*self_component_class
) __BT_NOEXCEPT
93 return __BT_UPCAST(bt_component_class
, self_component_class
);
98 \ref api-fund-c-typing "Upcasts" the self \bt_src_comp_cls
99 \bt_p{self_component_class} to the public #bt_component_class_source
102 @param[in] self_component_class
104 Source component class to upcast.
110 \bt_p{self_component_class} as a public source component class.
113 const bt_component_class_source
*
114 bt_self_component_class_source_as_component_class_source(
115 bt_self_component_class_source
*self_component_class
)
118 return __BT_UPCAST_CONST(bt_component_class_source
,
119 self_component_class
);
124 \ref api-fund-c-typing "Upcasts" the self \bt_flt_comp_cls
125 \bt_p{self_component_class} to the public #bt_component_class_filter
128 @param[in] self_component_class
130 Filter component class to upcast.
136 \bt_p{self_component_class} as a public filter component class.
139 const bt_component_class_filter
*
140 bt_self_component_class_filter_as_component_class_filter(
141 bt_self_component_class_filter
*self_component_class
)
144 return __BT_UPCAST_CONST(bt_component_class_filter
,
145 self_component_class
);
150 \ref api-fund-c-typing "Upcasts" the self \bt_sink_comp_cls
151 \bt_p{self_component_class} to the public #bt_component_class_sink
154 @param[in] self_component_class
156 Sink component class to upcast.
162 \bt_p{self_component_class} as a public sink component class.
165 const bt_component_class_sink
*
166 bt_self_component_class_sink_as_component_class_sink(
167 bt_self_component_class_sink
*self_component_class
)
170 return __BT_UPCAST_CONST(bt_component_class_sink
, self_component_class
);
176 @name Self to common self upcast
182 \ref api-fund-c-typing "Upcasts" the self \bt_src_comp_cls
183 \bt_p{self_component_class} to the common #bt_self_component_class
186 @param[in] self_component_class
188 Source component class to upcast.
194 \bt_p{self_component_class} as a common self component class.
197 bt_self_component_class
*
198 bt_self_component_class_source_as_self_component_class(
199 bt_self_component_class_source
*self_component_class
)
202 return __BT_UPCAST(bt_self_component_class
, self_component_class
);
207 \ref api-fund-c-typing "Upcasts" the self \bt_flt_comp_cls
208 \bt_p{self_component_class} to the common #bt_self_component_class
211 @param[in] self_component_class
213 Filter component class to upcast.
219 \bt_p{self_component_class} as a common self component class.
222 bt_self_component_class
*
223 bt_self_component_class_filter_as_self_component_class(
224 bt_self_component_class_filter
*self_component_class
)
227 return __BT_UPCAST(bt_self_component_class
, self_component_class
);
232 \ref api-fund-c-typing "Upcasts" the self \bt_sink_comp_cls
233 \bt_p{self_component_class} to the common #bt_self_component_class
236 @param[in] self_component_class
238 Sink component class to upcast.
244 \bt_p{self_component_class} as a common self component class.
247 bt_self_component_class
*
248 bt_self_component_class_sink_as_self_component_class(
249 bt_self_component_class_sink
*self_component_class
)
252 return __BT_UPCAST(bt_self_component_class
, self_component_class
);
263 #endif /* BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H */