Move to kernel style SPDX license identifiers
[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
d23b766e
SM
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
17extern "C" {
18#endif
19
43c59509
PP
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
27The #bt_self_component_class, #bt_self_component_class_source,
28#bt_self_component_class_filter, #bt_self_component_class_sink types are
29private views of a \bt_comp_cls from within a component class
30\ref api-comp-cls-dev-class-meth "class method".
31
32As of \bt_name_version_min_maj, this module only contains functions
33to \ref api-fund-c-typing "upcast" the "self" (private) types to their
34public #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*/
d23b766e
SM
87static inline
88const 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
43c59509
PP
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*/
110static inline
111const bt_component_class_source *
112bt_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*/
135static inline
136const bt_component_class_filter *
137bt_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*/
160static inline
161const bt_component_class_sink *
162bt_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*/
191static inline
192bt_self_component_class*
193bt_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*/
215static inline
216bt_self_component_class*
217bt_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*/
239static inline
240bt_self_component_class*
241bt_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
d23b766e
SM
251#ifdef __cplusplus
252}
253#endif
254
255#endif /* BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H */
This page took 0.04268 seconds and 4 git commands to generate.