lib: Add functions to borrow specialized component classes from specialized components
authorSimon Marchi <simon.marchi@efficios.com>
Wed, 1 May 2019 14:17:33 +0000 (10:17 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 3 May 2019 22:19:40 +0000 (18:19 -0400)
The API currently contains a function to obtain a 'bt_component_class *'
from a 'bt_component *'.  This patch adds functions to obtain a
specialized component class from a specialized component.  For example,
a 'bt_component_class_source *' from a 'bt_component_source *'.

Change-Id: Ide192c7759f630adbc884def2e5c462ce2b8f973
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/1161
Tested-by: jenkins
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
bindings/python/bt2/bt2/native_bt_component.i
include/babeltrace/graph/component-filter-const.h
include/babeltrace/graph/component-sink-const.h
include/babeltrace/graph/component-source-const.h
lib/graph/component-filter.c
lib/graph/component-sink.c
lib/graph/component-source.c

index 012b194f07550b54c5d64c52cb843409c1bb2d08..6612ad9c2d5e6c1de63c4aa3237d76f533921acc 100644 (file)
@@ -90,6 +90,10 @@ extern void bt_component_put_ref(const bt_component *component);
 const bt_component *bt_component_source_as_component_const(
                const bt_component_source *component);
 
+extern const bt_component_class_source *
+bt_component_source_borrow_class_const(
+               const bt_component_source *component);
+
 extern uint64_t bt_component_source_get_output_port_count(
                const bt_component_source *component);
 
@@ -112,6 +116,10 @@ extern void bt_component_source_put_ref(
 const bt_component *bt_component_filter_as_component_const(
                const bt_component_filter *component);
 
+extern const bt_component_class_filter *
+bt_component_filter_borrow_class_const(
+               const bt_component_filter *component);
+
 extern uint64_t bt_component_filter_get_input_port_count(
                const bt_component_filter *component);
 
@@ -145,6 +153,10 @@ extern void bt_component_filter_put_ref(
 const bt_component *bt_component_sink_as_component_const(
                const bt_component_sink *component);
 
+extern const bt_component_class_sink *
+bt_component_sink_borrow_class_const(
+               const bt_component_sink *component);
+
 extern uint64_t bt_component_sink_get_input_port_count(
                const bt_component_sink *component);
 
index 546761e375d5e0af1cb872afe21682714fda1b6c..545691cde73f0fcef3d2de3ad95bc2f60c492f6a 100644 (file)
@@ -28,7 +28,7 @@
 
 /*
  * For bt_component, bt_component_filter, bt_port_input, bt_port_output,
- * __BT_UPCAST_CONST
+ * __BT_UPCAST_CONST, bt_component_class_filter
  */
 #include <babeltrace/types.h>
 
@@ -43,6 +43,10 @@ const bt_component *bt_component_filter_as_component_const(
        return __BT_UPCAST_CONST(bt_component, component);
 }
 
+extern const bt_component_class_filter *
+bt_component_filter_borrow_class_const(
+               const bt_component_filter *component);
+
 extern uint64_t bt_component_filter_get_input_port_count(
                const bt_component_filter *component);
 
index d0bd773d3ff0ddfde0628cb74e3fe0c008a01efb..5ce6798284d8e742ea1a2205b3fced8890245d4a 100644 (file)
@@ -28,7 +28,7 @@
 
 /*
  * For bt_component, bt_component_filter, bt_port_input,
- * __BT_UPCAST_CONST
+ * __BT_UPCAST_CONST, bt_component_class_sink
  */
 #include <babeltrace/types.h>
 
@@ -43,6 +43,10 @@ const bt_component *bt_component_sink_as_component_const(
        return __BT_UPCAST_CONST(bt_component, component);
 }
 
+extern const bt_component_class_sink *
+bt_component_sink_borrow_class_const(
+               const bt_component_sink *component);
+
 extern uint64_t bt_component_sink_get_input_port_count(
                const bt_component_sink *component);
 
index 628f22dbf77b98a47d70ca2815e1a31c7ecd6f39..8604359abe048efb72e46f95f6b218a021a6fbe4 100644 (file)
@@ -28,7 +28,7 @@
 
 /*
  * For bt_component, bt_component_filter, bt_port_output,
- * __BT_UPCAST_CONST
+ * __BT_UPCAST_CONST, bt_component_class_source
  */
 #include <babeltrace/types.h>
 
@@ -43,6 +43,10 @@ const bt_component *bt_component_source_as_component_const(
        return __BT_UPCAST_CONST(bt_component, component);
 }
 
+extern const bt_component_class_source *
+bt_component_source_borrow_class_const(
+               const bt_component_source *component);
+
 extern uint64_t bt_component_source_get_output_port_count(
                const bt_component_source *component);
 
index 32a12924737f7af43569dafecdaf0cc2c8dfa5e7..c1c730ca3bbb15f0a4335588fdc77348cb2d1e58 100644 (file)
@@ -56,6 +56,22 @@ end:
        return (void *) filter;
 }
 
+const bt_component_class_filter *
+bt_component_filter_borrow_class_const(
+               const bt_component_filter *component)
+{
+       struct bt_component_class *cls;
+
+       BT_ASSERT_PRE_NON_NULL(component, "Component");
+
+       cls = component->parent.class;
+
+       BT_ASSERT(cls);
+       BT_ASSERT(cls->type == BT_COMPONENT_CLASS_TYPE_FILTER);
+
+       return (bt_component_class_filter *) cls;
+}
+
 uint64_t bt_component_filter_get_output_port_count(
                const struct bt_component_filter *comp)
 {
index 41a9a376108ff93e67730a2d4293708b21587c1e..30c15609723adfa14ca096867fedc4e8443830db 100644 (file)
@@ -55,6 +55,22 @@ end:
        return (void *) sink;
 }
 
+const bt_component_class_sink *
+bt_component_sink_borrow_class_const(
+               const bt_component_sink *component)
+{
+       struct bt_component_class *cls;
+
+       BT_ASSERT_PRE_NON_NULL(component, "Component");
+
+       cls = component->parent.class;
+
+       BT_ASSERT(cls);
+       BT_ASSERT(cls->type == BT_COMPONENT_CLASS_TYPE_SINK);
+
+       return (bt_component_class_sink *) cls;
+}
+
 uint64_t bt_component_sink_get_input_port_count(
                const struct bt_component_sink *component)
 {
index 39755af47c7c799b7c3613ea7a32bcfdb02d9eb0..b638c33247b7c45c77cbc19f3e8811e6fc5ce307 100644 (file)
@@ -57,6 +57,22 @@ end:
        return (void *) source;
 }
 
+const bt_component_class_source *
+bt_component_source_borrow_class_const(
+               const bt_component_source *component)
+{
+       struct bt_component_class *cls;
+
+       BT_ASSERT_PRE_NON_NULL(component, "Component");
+
+       cls = component->parent.class;
+
+       BT_ASSERT(cls);
+       BT_ASSERT(cls->type == BT_COMPONENT_CLASS_TYPE_SOURCE);
+
+       return (bt_component_class_source *) cls;
+}
+
 uint64_t bt_component_source_get_output_port_count(
                const struct bt_component_source *comp)
 {
This page took 0.028876 seconds and 4 git commands to generate.