BT_HIDDEN
struct bt_component_class *bt_component_class_create(
enum bt_component_type type, const char *name,
- const char *description, struct bt_plugin *plugin);
+ const char *description, bt_component_init_cb init,
+ struct bt_plugin *plugin);
#endif /* BABELTRACE_PLUGIN_COMPONENT_CLASS_INTERNAL_H */
BT_HIDDEN
struct bt_component_class *bt_component_class_create(
enum bt_component_type type, const char *name,
- const char *description, struct bt_plugin *plugin)
+ const char *description, bt_component_init_cb init,
+ struct bt_plugin *plugin)
{
struct bt_component_class *class;
bt_object_init(class, bt_component_class_destroy);
class->type = type;
+ class->init = init;
class->name = g_string_new(name);
class->description = g_string_new(description);
if (!class->name || !class->description) {
}
component_class = bt_component_class_create(type, name, description,
- factory->current_plugin);
+ init, factory->current_plugin);
g_ptr_array_add(factory->component_classes, component_class);
end:
return ret;
bt_object_init(component, bt_component_destroy);
component->class = bt_get(component_class);
component->name = g_string_new(name);
- if (component->name) {
+ if (!component->name) {
BT_PUT(component);
goto end;
}