X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fgraph%2Fcomponent-class-const.h;h=be76e85e387a473f74835c36fb4ceaa0e5c1a661;hb=efd923e5742993cedafc1eeeb04cfad4ddf5cc8d;hp=bfd1b904dded28265a971ccfc1e83c6b92a8c9d5;hpb=f2b0325d1bd4bc213b08fa42828d6cc86adc6a01;p=babeltrace.git diff --git a/include/babeltrace/graph/component-class-const.h b/include/babeltrace/graph/component-class-const.h index bfd1b904..be76e85e 100644 --- a/include/babeltrace/graph/component-class-const.h +++ b/include/babeltrace/graph/component-class-const.h @@ -24,36 +24,39 @@ * SOFTWARE. */ -/* For bt_bool */ +/* For bt_bool, bt_component_class */ #include #ifdef __cplusplus extern "C" { #endif -struct bt_component_class; +typedef enum bt_component_class_status { + BT_COMPONENT_CLASS_STATUS_OK = 0, + BT_COMPONENT_CLASS_STATUS_NOMEM = -12, +} bt_component_class_status; -enum bt_component_class_type { - BT_COMPONENT_CLASS_TYPE_SOURCE = 0, - BT_COMPONENT_CLASS_TYPE_FILTER = 1, - BT_COMPONENT_CLASS_TYPE_SINK = 2, -}; +typedef enum bt_component_class_type { + BT_COMPONENT_CLASS_TYPE_SOURCE = 0, + BT_COMPONENT_CLASS_TYPE_FILTER = 1, + BT_COMPONENT_CLASS_TYPE_SINK = 2, +} bt_component_class_type; extern const char *bt_component_class_get_name( - const struct bt_component_class *component_class); + const bt_component_class *component_class); extern const char *bt_component_class_get_description( - const struct bt_component_class *component_class); + const bt_component_class *component_class); extern const char *bt_component_class_get_help( - const struct bt_component_class *component_class); + const bt_component_class *component_class); -extern enum bt_component_class_type bt_component_class_get_type( - const struct bt_component_class *component_class); +extern bt_component_class_type bt_component_class_get_type( + const bt_component_class *component_class); static inline bt_bool bt_component_class_is_source( - const struct bt_component_class *component_class) + const bt_component_class *component_class) { return bt_component_class_get_type(component_class) == BT_COMPONENT_CLASS_TYPE_SOURCE; @@ -61,7 +64,7 @@ bt_bool bt_component_class_is_source( static inline bt_bool bt_component_class_is_filter( - const struct bt_component_class *component_class) + const bt_component_class *component_class) { return bt_component_class_get_type(component_class) == BT_COMPONENT_CLASS_TYPE_FILTER; @@ -69,12 +72,31 @@ bt_bool bt_component_class_is_filter( static inline bt_bool bt_component_class_is_sink( - const struct bt_component_class *component_class) + const bt_component_class *component_class) { return bt_component_class_get_type(component_class) == BT_COMPONENT_CLASS_TYPE_SINK; } +extern void bt_component_class_get_ref( + const bt_component_class *component_class); + +extern void bt_component_class_put_ref( + const bt_component_class *component_class); + +#define BT_COMPONENT_CLASS_PUT_REF_AND_RESET(_var) \ + do { \ + bt_component_class_put_ref(_var); \ + (_var) = NULL; \ + } while (0) + +#define BT_COMPONENT_CLASS_MOVE_REF(_var_dst, _var_src) \ + do { \ + bt_component_class_put_ref(_var_dst); \ + (_var_dst) = (_var_src); \ + (_var_src) = NULL; \ + } while (0) + #ifdef __cplusplus } #endif