include: add IWYU pragmas in private header files
[babeltrace.git] / include / babeltrace2 / graph / self-component-class.h
1 /*
2 * SPDX-License-Identifier: MIT
3 *
4 * Copyright (C) 2010-2019 EfficiOS Inc. and Linux Foundation
5 */
6
7 #ifndef BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H
8 #define BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H
9
10 /* IWYU pragma: private, include <babeltrace2/babeltrace.h> */
11
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
19 extern "C" {
20 #endif
21
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
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".
33
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.
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 */
89 static inline
90 const 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
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 */
112 static inline
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)
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 */
137 static inline
138 const bt_component_class_filter *
139 bt_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 */
162 static inline
163 const bt_component_class_sink *
164 bt_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 */
193 static inline
194 bt_self_component_class*
195 bt_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 */
217 static inline
218 bt_self_component_class*
219 bt_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 */
241 static inline
242 bt_self_component_class*
243 bt_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
253 #ifdef __cplusplus
254 }
255 #endif
256
257 #endif /* BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H */
This page took 0.035073 seconds and 4 git commands to generate.