cpp-common/bt2c/fmt.hpp: use `wise_enum::string_type` in `EnableIfIsWiseEnum` definition
[babeltrace.git] / include / babeltrace2 / graph / self-component-class.h
CommitLineData
d23b766e 1/*
0235b0db 2 * SPDX-License-Identifier: MIT
d23b766e 3 *
0235b0db 4 * Copyright (C) 2010-2019 EfficiOS Inc. and Linux Foundation
d23b766e
SM
5 */
6
0235b0db
MJ
7#ifndef BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H
8#define BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H
9
f38da6ca
SM
10/* IWYU pragma: private, include <babeltrace2/babeltrace.h> */
11
d23b766e
SM
12#ifndef __BT_IN_BABELTRACE_H
13# error "Please include <babeltrace2/babeltrace.h> instead."
14#endif
15
16#include <babeltrace2/types.h>
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
43c59509
PP
22/*!
23@defgroup api-self-comp-cls Self component classes
24@ingroup api-comp-cls-dev
25
26@brief
27 Private views of \bt_p_comp_cls for class methods.
28
29The #bt_self_component_class, #bt_self_component_class_source,
30#bt_self_component_class_filter, #bt_self_component_class_sink types are
31private views of a \bt_comp_cls from within a component class
32\ref api-comp-cls-dev-class-meth "class method".
33
34As of \bt_name_version_min_maj, this module only contains functions
35to \ref api-fund-c-typing "upcast" the "self" (private) types to their
36public #bt_component_class, #bt_component_class_source,
37#bt_component_class_filter, and #bt_component_class_sink counterparts.
38*/
39
40/*! @{ */
41
42/*!
43@name Types
44@{
45
46@typedef struct bt_self_component_class bt_self_component_class;
47
48@brief
49 Self \bt_comp_cls.
50
51@typedef struct bt_self_component_class_source bt_self_component_class_source;
52
53@brief
54 Self \bt_src_comp_cls.
55
56@typedef struct bt_self_component_class_filter bt_self_component_class_filter;
57
58@brief
59 Self \bt_flt_comp_cls.
60
61@typedef struct bt_self_component_class_sink bt_self_component_class_sink;
62
63@brief
64 Self \bt_sink_comp_cls.
65
66@}
67*/
68
69/*!
70@name Self to public upcast
71@{
72*/
73
74/*!
75@brief
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.
78
79@param[in] self_component_class
80 @parblock
81 Component class to upcast.
82
83 Can be \c NULL.
84 @endparblock
85
86@returns
87 \bt_p{self_component_class} as a public component class.
88*/
d23b766e
SM
89static inline
90const bt_component_class *bt_self_component_class_as_component_class(
4c81a2b7 91 bt_self_component_class *self_component_class) __BT_NOEXCEPT
d23b766e
SM
92{
93 return __BT_UPCAST(bt_component_class, self_component_class);
94}
95
43c59509
PP
96/*!
97@brief
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
100 type.
101
102@param[in] self_component_class
103 @parblock
104 Source component class to upcast.
105
106 Can be \c NULL.
107 @endparblock
108
109@returns
110 \bt_p{self_component_class} as a public source component class.
111*/
112static inline
113const bt_component_class_source *
114bt_self_component_class_source_as_component_class_source(
115 bt_self_component_class_source *self_component_class)
4c81a2b7 116 __BT_NOEXCEPT
43c59509
PP
117{
118 return __BT_UPCAST_CONST(bt_component_class_source,
119 self_component_class);
120}
121
122/*!
123@brief
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
126 type.
127
128@param[in] self_component_class
129 @parblock
130 Filter component class to upcast.
131
132 Can be \c NULL.
133 @endparblock
134
135@returns
136 \bt_p{self_component_class} as a public filter component class.
137*/
138static inline
139const bt_component_class_filter *
140bt_self_component_class_filter_as_component_class_filter(
141 bt_self_component_class_filter *self_component_class)
4c81a2b7 142 __BT_NOEXCEPT
43c59509
PP
143{
144 return __BT_UPCAST_CONST(bt_component_class_filter,
145 self_component_class);
146}
147
148/*!
149@brief
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
152 type.
153
154@param[in] self_component_class
155 @parblock
156 Sink component class to upcast.
157
158 Can be \c NULL.
159 @endparblock
160
161@returns
162 \bt_p{self_component_class} as a public sink component class.
163*/
164static inline
165const bt_component_class_sink *
166bt_self_component_class_sink_as_component_class_sink(
167 bt_self_component_class_sink *self_component_class)
4c81a2b7 168 __BT_NOEXCEPT
43c59509
PP
169{
170 return __BT_UPCAST_CONST(bt_component_class_sink, self_component_class);
171}
172
173/*! @} */
174
175/*!
176@name Self to common self upcast
177@{
178*/
179
180/*!
181@brief
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
184 type.
185
186@param[in] self_component_class
187 @parblock
188 Source component class to upcast.
189
190 Can be \c NULL.
191 @endparblock
192
193@returns
194 \bt_p{self_component_class} as a common self component class.
195*/
196static inline
197bt_self_component_class*
198bt_self_component_class_source_as_self_component_class(
199 bt_self_component_class_source *self_component_class)
4c81a2b7 200 __BT_NOEXCEPT
43c59509
PP
201{
202 return __BT_UPCAST(bt_self_component_class, self_component_class);
203}
204
205/*!
206@brief
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
209 type.
210
211@param[in] self_component_class
212 @parblock
213 Filter component class to upcast.
214
215 Can be \c NULL.
216 @endparblock
217
218@returns
219 \bt_p{self_component_class} as a common self component class.
220*/
221static inline
222bt_self_component_class*
223bt_self_component_class_filter_as_self_component_class(
224 bt_self_component_class_filter *self_component_class)
4c81a2b7 225 __BT_NOEXCEPT
43c59509
PP
226{
227 return __BT_UPCAST(bt_self_component_class, self_component_class);
228}
229
230/*!
231@brief
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
234 type.
235
236@param[in] self_component_class
237 @parblock
238 Sink component class to upcast.
239
240 Can be \c NULL.
241 @endparblock
242
243@returns
244 \bt_p{self_component_class} as a common self component class.
245*/
246static inline
247bt_self_component_class*
248bt_self_component_class_sink_as_self_component_class(
249 bt_self_component_class_sink *self_component_class)
4c81a2b7 250 __BT_NOEXCEPT
43c59509
PP
251{
252 return __BT_UPCAST(bt_self_component_class, self_component_class);
253}
254
255/*! @} */
256
257/*! @} */
258
d23b766e
SM
259#ifdef __cplusplus
260}
261#endif
262
263#endif /* BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H */
This page took 0.060936 seconds and 4 git commands to generate.