Babeltrace 2 C API  2.0.3
Open-source trace manipulation framework
component-class.h
1 #ifndef BABELTRACE2_GRAPH_COMPONENT_CLASS_H
2 #define BABELTRACE2_GRAPH_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
33 extern "C" {
34 #endif
35 
220 
226 
233 
255  const bt_component_class *component_class);
256 
273 static inline
275  const bt_component_class *component_class)
276 {
277  return bt_component_class_get_type(component_class) ==
279 }
280 
297 static inline
299  const bt_component_class *component_class)
300 {
301  return bt_component_class_get_type(component_class) ==
303 }
304 
321 static inline
323  const bt_component_class *component_class)
324 {
325  return bt_component_class_get_type(component_class) ==
327 }
328 
355 extern const char *bt_component_class_get_name(
356  const bt_component_class *component_class);
357 
378 extern const char *bt_component_class_get_description(
379  const bt_component_class *component_class);
380 
400 extern const char *bt_component_class_get_help(
401  const bt_component_class *component_class);
402 
425 extern void bt_component_class_get_ref(
426  const bt_component_class *component_class);
427 
443 extern void bt_component_class_put_ref(
444  const bt_component_class *component_class);
445 
461 #define BT_COMPONENT_CLASS_PUT_REF_AND_RESET(_component_class) \
462  do { \
463  bt_component_class_put_ref(_component_class); \
464  (_component_class) = NULL; \
465  } while (0)
466 
494 #define BT_COMPONENT_CLASS_MOVE_REF(_dst, _src) \
495  do { \
496  bt_component_class_put_ref(_dst); \
497  (_dst) = (_src); \
498  (_src) = NULL; \
499  } while (0)
500 
523 static inline
524 const bt_component_class *
526  const bt_component_class_source *component_class)
527 {
528  return __BT_UPCAST_CONST(bt_component_class, component_class);
529 }
530 
554  const bt_component_class_source *component_class);
555 
572  const bt_component_class_source *component_class);
573 
589 #define BT_COMPONENT_CLASS_SOURCE_PUT_REF_AND_RESET(_component_class) \
590  do { \
591  bt_component_class_source_put_ref(_component_class); \
592  (_component_class) = NULL; \
593  } while (0)
594 
621 #define BT_COMPONENT_CLASS_SOURCE_MOVE_REF(_dst, _src) \
622  do { \
623  bt_component_class_source_put_ref(_dst); \
624  (_dst) = (_src); \
625  (_src) = NULL; \
626  } while (0)
627 
650 static inline
651 const bt_component_class *
653  const bt_component_class_filter *component_class)
654 {
655  return __BT_UPCAST_CONST(bt_component_class, component_class);
656 }
657 
681  const bt_component_class_filter *component_class);
682 
699  const bt_component_class_filter *component_class);
700 
716 #define BT_COMPONENT_CLASS_FILTER_PUT_REF_AND_RESET(_component_class) \
717  do { \
718  bt_component_class_filter_put_ref(_component_class); \
719  (_component_class) = NULL; \
720  } while (0)
721 
748 #define BT_COMPONENT_CLASS_FILTER_MOVE_REF(_dst, _src) \
749  do { \
750  bt_component_class_filter_put_ref(_dst); \
751  (_dst) = (_src); \
752  (_src) = NULL; \
753  } while (0)
754 
777 static inline
778 const bt_component_class *
780  const bt_component_class_sink *component_class)
781 {
782  return __BT_UPCAST_CONST(bt_component_class, component_class);
783 }
784 
808  const bt_component_class_sink *component_class);
809 
826  const bt_component_class_sink *component_class);
827 
843 #define BT_COMPONENT_CLASS_SINK_PUT_REF_AND_RESET(_component_class) \
844  do { \
845  bt_component_class_sink_put_ref(_component_class); \
846  (_component_class) = NULL; \
847  } while (0)
848 
875 #define BT_COMPONENT_CLASS_SINK_MOVE_REF(_dst, _src) \
876  do { \
877  bt_component_class_sink_put_ref(_dst); \
878  (_dst) = (_src); \
879  (_src) = NULL; \
880  } while (0)
881 
886 #ifdef __cplusplus
887 }
888 #endif
889 
890 #endif /* BABELTRACE2_GRAPH_COMPONENT_CLASS_H */
struct bt_component_class_source bt_component_class_source
Source component class.
Definition: types.h:42
void bt_component_class_filter_put_ref(const bt_component_class_filter *component_class)
Decrements the reference count of the filter component class component_class.
const char * bt_component_class_get_description(const bt_component_class *component_class)
Returns the description of the component class component_class.
void bt_component_class_filter_get_ref(const bt_component_class_filter *component_class)
Increments the reference count of the filter component class component_class.
static bt_bool bt_component_class_is_filter(const bt_component_class *component_class)
Returns whether or not the component class component_class is a filter component class.
Definition: component-class.h:298
struct bt_component_class_filter bt_component_class_filter
Filter component class.
Definition: types.h:40
void bt_component_class_source_get_ref(const bt_component_class_source *component_class)
Increments the reference count of the source component class component_class.
void bt_component_class_sink_put_ref(const bt_component_class_sink *component_class)
Decrements the reference count of the sink component class component_class.
static const bt_component_class * bt_component_class_filter_as_component_class_const(const bt_component_class_filter *component_class)
Upcasts the filter component class component_class to the common bt_component_class type...
Definition: component-class.h:652
static const bt_component_class * bt_component_class_sink_as_component_class_const(const bt_component_class_sink *component_class)
Upcasts the sink component class component_class to the common bt_component_class type...
Definition: component-class.h:779
struct bt_component_class bt_component_class
Component class.
Definition: types.h:39
bt_component_class_type
Component class type enumerators.
Definition: component-class.h:214
static const bt_component_class * bt_component_class_source_as_component_class_const(const bt_component_class_source *component_class)
Upcasts the source component class component_class to the common bt_component_class type...
Definition: component-class.h:525
void bt_component_class_put_ref(const bt_component_class *component_class)
Decrements the reference count of the component class component_class.
struct bt_component_class_sink bt_component_class_sink
Sink component class.
Definition: types.h:41
int bt_bool
Babeltrace 2 boolean type.
Definition: types.h:140
Filter component class.
Definition: component-class.h:225
const char * bt_component_class_get_name(const bt_component_class *component_class)
Returns the name of the component class component_class.
Source component class.
Definition: component-class.h:219
void bt_component_class_sink_get_ref(const bt_component_class_sink *component_class)
Increments the reference count of the sink component class component_class.
void bt_component_class_get_ref(const bt_component_class *component_class)
Increments the reference count of the component class component_class.
static bt_bool bt_component_class_is_source(const bt_component_class *component_class)
Returns whether or not the component class component_class is a source component class.
Definition: component-class.h:274
void bt_component_class_source_put_ref(const bt_component_class_source *component_class)
Decrements the reference count of the source component class component_class.
Sink component class.
Definition: component-class.h:231
const char * bt_component_class_get_help(const bt_component_class *component_class)
Returns the help text of the component class component_class.
bt_component_class_type bt_component_class_get_type(const bt_component_class *component_class)
Returns the type enumerator of the component class component_class.
static bt_bool bt_component_class_is_sink(const bt_component_class *component_class)
Returns whether or not the component class component_class is a sink component class.
Definition: component-class.h:322