Document libbabeltrace2's C API
[babeltrace.git] / include / babeltrace2 / graph / self-component-class.h
CommitLineData
5c3441d8
SM
1#ifndef BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H
2#define BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H
3
4/*
5 * Copyright (c) 2010-2019 EfficiOS Inc. and Linux Foundation
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to deal
9 * in the Software without restriction, including without limitation the rights
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 * copies of the Software, and to permit persons to whom the Software is
12 * furnished to do so, subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included in
15 * all copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 * SOFTWARE.
24 */
25
26#ifndef __BT_IN_BABELTRACE_H
27# error "Please include <babeltrace2/babeltrace.h> instead."
28#endif
29
30#include <babeltrace2/types.h>
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
7704a0af
PP
36/*!
37@defgroup api-self-comp-cls Self component classes
38@ingroup api-comp-cls-dev
39
40@brief
41 Private views of \bt_p_comp_cls for class methods.
42
43The #bt_self_component_class, #bt_self_component_class_source,
44#bt_self_component_class_filter, #bt_self_component_class_sink types are
45private views of a \bt_comp_cls from within a component class
46\ref api-comp-cls-dev-class-meth "class method".
47
48As of \bt_name_version_min_maj, this module only contains functions
49to \ref api-fund-c-typing "upcast" the "self" (private) types to their
50public #bt_component_class, #bt_component_class_source,
51#bt_component_class_filter, and #bt_component_class_sink counterparts.
52*/
53
54/*! @{ */
55
56/*!
57@name Types
58@{
59
60@typedef struct bt_self_component_class bt_self_component_class;
61
62@brief
63 Self \bt_comp_cls.
64
65@typedef struct bt_self_component_class_source bt_self_component_class_source;
66
67@brief
68 Self \bt_src_comp_cls.
69
70@typedef struct bt_self_component_class_filter bt_self_component_class_filter;
71
72@brief
73 Self \bt_flt_comp_cls.
74
75@typedef struct bt_self_component_class_sink bt_self_component_class_sink;
76
77@brief
78 Self \bt_sink_comp_cls.
79
80@}
81*/
82
83/*!
84@name Self to public upcast
85@{
86*/
87
88/*!
89@brief
90 \ref api-fund-c-typing "Upcasts" the self \bt_comp_cls
91 \bt_p{self_component_class} to the public #bt_component_class type.
92
93@param[in] self_component_class
94 @parblock
95 Component class to upcast.
96
97 Can be \c NULL.
98 @endparblock
99
100@returns
101 \bt_p{self_component_class} as a public component class.
102*/
5c3441d8
SM
103static inline
104const bt_component_class *bt_self_component_class_as_component_class(
105 bt_self_component_class *self_component_class)
106{
107 return __BT_UPCAST(bt_component_class, self_component_class);
108}
109
7704a0af
PP
110/*!
111@brief
112 \ref api-fund-c-typing "Upcasts" the self \bt_src_comp_cls
113 \bt_p{self_component_class} to the public #bt_component_class_source
114 type.
115
116@param[in] self_component_class
117 @parblock
118 Source component class to upcast.
119
120 Can be \c NULL.
121 @endparblock
122
123@returns
124 \bt_p{self_component_class} as a public source component class.
125*/
126static inline
127const bt_component_class_source *
128bt_self_component_class_source_as_component_class_source(
129 bt_self_component_class_source *self_component_class)
130{
131 return __BT_UPCAST_CONST(bt_component_class_source,
132 self_component_class);
133}
134
135/*!
136@brief
137 \ref api-fund-c-typing "Upcasts" the self \bt_flt_comp_cls
138 \bt_p{self_component_class} to the public #bt_component_class_filter
139 type.
140
141@param[in] self_component_class
142 @parblock
143 Filter component class to upcast.
144
145 Can be \c NULL.
146 @endparblock
147
148@returns
149 \bt_p{self_component_class} as a public filter component class.
150*/
151static inline
152const bt_component_class_filter *
153bt_self_component_class_filter_as_component_class_filter(
154 bt_self_component_class_filter *self_component_class)
155{
156 return __BT_UPCAST_CONST(bt_component_class_filter,
157 self_component_class);
158}
159
160/*!
161@brief
162 \ref api-fund-c-typing "Upcasts" the self \bt_sink_comp_cls
163 \bt_p{self_component_class} to the public #bt_component_class_sink
164 type.
165
166@param[in] self_component_class
167 @parblock
168 Sink component class to upcast.
169
170 Can be \c NULL.
171 @endparblock
172
173@returns
174 \bt_p{self_component_class} as a public sink component class.
175*/
176static inline
177const bt_component_class_sink *
178bt_self_component_class_sink_as_component_class_sink(
179 bt_self_component_class_sink *self_component_class)
180{
181 return __BT_UPCAST_CONST(bt_component_class_sink, self_component_class);
182}
183
184/*! @} */
185
186/*!
187@name Self to common self upcast
188@{
189*/
190
191/*!
192@brief
193 \ref api-fund-c-typing "Upcasts" the self \bt_src_comp_cls
194 \bt_p{self_component_class} to the common #bt_self_component_class
195 type.
196
197@param[in] self_component_class
198 @parblock
199 Source component class to upcast.
200
201 Can be \c NULL.
202 @endparblock
203
204@returns
205 \bt_p{self_component_class} as a common self component class.
206*/
207static inline
208bt_self_component_class*
209bt_self_component_class_source_as_self_component_class(
210 bt_self_component_class_source *self_component_class)
211{
212 return __BT_UPCAST(bt_self_component_class, self_component_class);
213}
214
215/*!
216@brief
217 \ref api-fund-c-typing "Upcasts" the self \bt_flt_comp_cls
218 \bt_p{self_component_class} to the common #bt_self_component_class
219 type.
220
221@param[in] self_component_class
222 @parblock
223 Filter component class to upcast.
224
225 Can be \c NULL.
226 @endparblock
227
228@returns
229 \bt_p{self_component_class} as a common self component class.
230*/
231static inline
232bt_self_component_class*
233bt_self_component_class_filter_as_self_component_class(
234 bt_self_component_class_filter *self_component_class)
235{
236 return __BT_UPCAST(bt_self_component_class, self_component_class);
237}
238
239/*!
240@brief
241 \ref api-fund-c-typing "Upcasts" the self \bt_sink_comp_cls
242 \bt_p{self_component_class} to the common #bt_self_component_class
243 type.
244
245@param[in] self_component_class
246 @parblock
247 Sink component class to upcast.
248
249 Can be \c NULL.
250 @endparblock
251
252@returns
253 \bt_p{self_component_class} as a common self component class.
254*/
255static inline
256bt_self_component_class*
257bt_self_component_class_sink_as_self_component_class(
258 bt_self_component_class_sink *self_component_class)
259{
260 return __BT_UPCAST(bt_self_component_class, self_component_class);
261}
262
263/*! @} */
264
265/*! @} */
266
5c3441d8
SM
267#ifdef __cplusplus
268}
269#endif
270
271#endif /* BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H */
This page took 0.042873 seconds and 4 git commands to generate.