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>
const bt_component *bt_component_source_as_component_const(
const bt_component_source *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);
extern uint64_t bt_component_source_get_output_port_count(
const bt_component_source *component);
const bt_component *bt_component_filter_as_component_const(
const bt_component_filter *component);
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);
extern uint64_t bt_component_filter_get_input_port_count(
const bt_component_filter *component);
const bt_component *bt_component_sink_as_component_const(
const bt_component_sink *component);
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);
extern uint64_t bt_component_sink_get_input_port_count(
const bt_component_sink *component);
/*
* For bt_component, bt_component_filter, bt_port_input, bt_port_output,
/*
* For bt_component, bt_component_filter, bt_port_input, bt_port_output,
+ * __BT_UPCAST_CONST, bt_component_class_filter
*/
#include <babeltrace/types.h>
*/
#include <babeltrace/types.h>
return __BT_UPCAST_CONST(bt_component, component);
}
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);
extern uint64_t bt_component_filter_get_input_port_count(
const bt_component_filter *component);
/*
* For bt_component, bt_component_filter, bt_port_input,
/*
* For bt_component, bt_component_filter, bt_port_input,
+ * __BT_UPCAST_CONST, bt_component_class_sink
*/
#include <babeltrace/types.h>
*/
#include <babeltrace/types.h>
return __BT_UPCAST_CONST(bt_component, component);
}
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);
extern uint64_t bt_component_sink_get_input_port_count(
const bt_component_sink *component);
/*
* For bt_component, bt_component_filter, bt_port_output,
/*
* For bt_component, bt_component_filter, bt_port_output,
+ * __BT_UPCAST_CONST, bt_component_class_source
*/
#include <babeltrace/types.h>
*/
#include <babeltrace/types.h>
return __BT_UPCAST_CONST(bt_component, component);
}
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);
extern uint64_t bt_component_source_get_output_port_count(
const bt_component_source *component);
return (void *) filter;
}
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)
{
uint64_t bt_component_filter_get_output_port_count(
const struct bt_component_filter *comp)
{
+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)
{
uint64_t bt_component_sink_get_input_port_count(
const struct bt_component_sink *component)
{
return (void *) source;
}
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)
{
uint64_t bt_component_source_get_output_port_count(
const struct bt_component_source *comp)
{