cpp-common/bt2c/fmt.hpp: use `wise_enum::string_type` in `EnableIfIsWiseEnum` definition
[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) __BT_NOEXCEPT
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 __BT_NOEXCEPT
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 */
138 static inline
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)
142 __BT_NOEXCEPT
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 */
164 static inline
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)
168 __BT_NOEXCEPT
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 */
196 static inline
197 bt_self_component_class*
198 bt_self_component_class_source_as_self_component_class(
199 bt_self_component_class_source *self_component_class)
200 __BT_NOEXCEPT
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 */
221 static inline
222 bt_self_component_class*
223 bt_self_component_class_filter_as_self_component_class(
224 bt_self_component_class_filter *self_component_class)
225 __BT_NOEXCEPT
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 */
246 static inline
247 bt_self_component_class*
248 bt_self_component_class_sink_as_self_component_class(
249 bt_self_component_class_sink *self_component_class)
250 __BT_NOEXCEPT
251 {
252 return __BT_UPCAST(bt_self_component_class, self_component_class);
253 }
254
255 /*! @} */
256
257 /*! @} */
258
259 #ifdef __cplusplus
260 }
261 #endif
262
263 #endif /* BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H */
This page took 0.035301 seconds and 4 git commands to generate.