include: add IWYU pragmas in private header files
[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(
91 bt_self_component_class *self_component_class)
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)
116{
117 return __BT_UPCAST_CONST(bt_component_class_source,
118 self_component_class);
119}
120
121/*!
122@brief
123 \ref api-fund-c-typing "Upcasts" the self \bt_flt_comp_cls
124 \bt_p{self_component_class} to the public #bt_component_class_filter
125 type.
126
127@param[in] self_component_class
128 @parblock
129 Filter component class to upcast.
130
131 Can be \c NULL.
132 @endparblock
133
134@returns
135 \bt_p{self_component_class} as a public filter component class.
136*/
137static inline
138const bt_component_class_filter *
139bt_self_component_class_filter_as_component_class_filter(
140 bt_self_component_class_filter *self_component_class)
141{
142 return __BT_UPCAST_CONST(bt_component_class_filter,
143 self_component_class);
144}
145
146/*!
147@brief
148 \ref api-fund-c-typing "Upcasts" the self \bt_sink_comp_cls
149 \bt_p{self_component_class} to the public #bt_component_class_sink
150 type.
151
152@param[in] self_component_class
153 @parblock
154 Sink component class to upcast.
155
156 Can be \c NULL.
157 @endparblock
158
159@returns
160 \bt_p{self_component_class} as a public sink component class.
161*/
162static inline
163const bt_component_class_sink *
164bt_self_component_class_sink_as_component_class_sink(
165 bt_self_component_class_sink *self_component_class)
166{
167 return __BT_UPCAST_CONST(bt_component_class_sink, self_component_class);
168}
169
170/*! @} */
171
172/*!
173@name Self to common self upcast
174@{
175*/
176
177/*!
178@brief
179 \ref api-fund-c-typing "Upcasts" the self \bt_src_comp_cls
180 \bt_p{self_component_class} to the common #bt_self_component_class
181 type.
182
183@param[in] self_component_class
184 @parblock
185 Source component class to upcast.
186
187 Can be \c NULL.
188 @endparblock
189
190@returns
191 \bt_p{self_component_class} as a common self component class.
192*/
193static inline
194bt_self_component_class*
195bt_self_component_class_source_as_self_component_class(
196 bt_self_component_class_source *self_component_class)
197{
198 return __BT_UPCAST(bt_self_component_class, self_component_class);
199}
200
201/*!
202@brief
203 \ref api-fund-c-typing "Upcasts" the self \bt_flt_comp_cls
204 \bt_p{self_component_class} to the common #bt_self_component_class
205 type.
206
207@param[in] self_component_class
208 @parblock
209 Filter component class to upcast.
210
211 Can be \c NULL.
212 @endparblock
213
214@returns
215 \bt_p{self_component_class} as a common self component class.
216*/
217static inline
218bt_self_component_class*
219bt_self_component_class_filter_as_self_component_class(
220 bt_self_component_class_filter *self_component_class)
221{
222 return __BT_UPCAST(bt_self_component_class, self_component_class);
223}
224
225/*!
226@brief
227 \ref api-fund-c-typing "Upcasts" the self \bt_sink_comp_cls
228 \bt_p{self_component_class} to the common #bt_self_component_class
229 type.
230
231@param[in] self_component_class
232 @parblock
233 Sink component class to upcast.
234
235 Can be \c NULL.
236 @endparblock
237
238@returns
239 \bt_p{self_component_class} as a common self component class.
240*/
241static inline
242bt_self_component_class*
243bt_self_component_class_sink_as_self_component_class(
244 bt_self_component_class_sink *self_component_class)
245{
246 return __BT_UPCAST(bt_self_component_class, self_component_class);
247}
248
249/*! @} */
250
251/*! @} */
252
d23b766e
SM
253#ifdef __cplusplus
254}
255#endif
256
257#endif /* BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H */
This page took 0.055391 seconds and 4 git commands to generate.