2 * SPDX-License-Identifier: MIT
4 * Copyright (C) 2010-2019 EfficiOS Inc. and Linux Foundation
7 #ifndef BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H
8 #define BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H
10 /* IWYU pragma: private, include <babeltrace2/babeltrace.h> */
12 #ifndef __BT_IN_BABELTRACE_H
13 # error "Please include <babeltrace2/babeltrace.h> instead."
16 #include <babeltrace2/types.h>
23 @defgroup api-self-comp-cls Self component classes
24 @ingroup api-comp-cls-dev
27 Private views of \bt_p_comp_cls for class methods.
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".
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.
46 @typedef struct bt_self_component_class bt_self_component_class;
51 @typedef struct bt_self_component_class_source bt_self_component_class_source;
54 Self \bt_src_comp_cls.
56 @typedef struct bt_self_component_class_filter bt_self_component_class_filter;
59 Self \bt_flt_comp_cls.
61 @typedef struct bt_self_component_class_sink bt_self_component_class_sink;
64 Self \bt_sink_comp_cls.
70 @name Self to public upcast
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.
79 @param[in] self_component_class
81 Component class to upcast.
87 \bt_p{self_component_class} as a public component class.
90 const bt_component_class
*bt_self_component_class_as_component_class(
91 bt_self_component_class
*self_component_class
)
93 return __BT_UPCAST(bt_component_class
, self_component_class
);
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
102 @param[in] self_component_class
104 Source component class to upcast.
110 \bt_p{self_component_class} as a public source component class.
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
)
117 return __BT_UPCAST_CONST(bt_component_class_source
,
118 self_component_class
);
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
127 @param[in] self_component_class
129 Filter component class to upcast.
135 \bt_p{self_component_class} as a public filter component class.
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
)
142 return __BT_UPCAST_CONST(bt_component_class_filter
,
143 self_component_class
);
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
152 @param[in] self_component_class
154 Sink component class to upcast.
160 \bt_p{self_component_class} as a public sink component class.
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
)
167 return __BT_UPCAST_CONST(bt_component_class_sink
, self_component_class
);
173 @name Self to common self upcast
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
183 @param[in] self_component_class
185 Source component class to upcast.
191 \bt_p{self_component_class} as a common self component class.
194 bt_self_component_class
*
195 bt_self_component_class_source_as_self_component_class(
196 bt_self_component_class_source
*self_component_class
)
198 return __BT_UPCAST(bt_self_component_class
, self_component_class
);
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
207 @param[in] self_component_class
209 Filter component class to upcast.
215 \bt_p{self_component_class} as a common self component class.
218 bt_self_component_class
*
219 bt_self_component_class_filter_as_self_component_class(
220 bt_self_component_class_filter
*self_component_class
)
222 return __BT_UPCAST(bt_self_component_class
, self_component_class
);
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
231 @param[in] self_component_class
233 Sink component class to upcast.
239 \bt_p{self_component_class} as a common self component class.
242 bt_self_component_class
*
243 bt_self_component_class_sink_as_self_component_class(
244 bt_self_component_class_sink
*self_component_class
)
246 return __BT_UPCAST(bt_self_component_class
, self_component_class
);
257 #endif /* BABELTRACE2_GRAPH_SELF_COMPONENT_CLASS_H */