#include <babeltrace/compiler.h>
#include <babeltrace/component/component-class-internal.h>
#include <babeltrace/ref.h>
+#include <stdbool.h>
#include <glib.h>
static
{
int ret = 0;
- if (!component_class || !init_method) {
+ if (!component_class || component_class->frozen || !init_method) {
ret = -1;
goto end;
}
{
int ret = 0;
- if (!component_class || !destroy_method) {
+ if (!component_class || component_class->frozen || !destroy_method) {
ret = -1;
goto end;
}
{
int ret = 0;
- if (!component_class || !description) {
+ if (!component_class || component_class->frozen || !description) {
ret = -1;
goto end;
}
int ret = 0;
struct bt_component_class_destroy_listener listener;
- if (!class || !func) {
+ if (!class || class->frozen || !func) {
ret = -1;
goto end;
}
struct bt_component_class_sink *sink_class;
int ret = 0;
- if (!component_class || !add_iterator_method ||
+ if (!component_class || component_class->frozen ||
+ !add_iterator_method ||
component_class->type != BT_COMPONENT_CLASS_TYPE_SINK) {
ret = -1;
goto end;
struct bt_component_class_filter *filter_class;
int ret = 0;
- if (!component_class || !add_iterator_method ||
+ if (!component_class || component_class->frozen ||
+ !add_iterator_method ||
component_class->type !=
BT_COMPONENT_CLASS_TYPE_FILTER) {
ret = -1;
end:
return ret;
}
+
+int bt_component_class_freeze(
+ struct bt_component_class *component_class)
+{
+ int ret = 0;
+
+ if (!component_class) {
+ ret = -1;
+ goto end;
+ }
+
+ component_class->frozen = true;
+
+end:
+ return ret;
+}