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