if (class->name) {
g_string_free(class->name, TRUE);
}
+ if (class->description) {
+ g_string_free(class->description, TRUE);
+ }
bt_put(class->plugin);
g_free(class);
BT_HIDDEN
struct bt_component_class *bt_component_class_create(
enum bt_component_type type, const char *name,
- struct bt_plugin *plugin)
+ const char *description, struct bt_plugin *plugin)
{
struct bt_component_class *class;
bt_object_init(class, bt_component_class_destroy);
class->type = type;
class->name = g_string_new(name);
- if (!class->name) {
+ class->description = g_string_new(description);
+ if (!class->name || !class->description) {
BT_PUT(class);
goto end;
}
- bt_get(plugin);
- class->plugin = plugin;
+ class->plugin = bt_get(plugin);
end:
return class;
}
+
+const char *bt_component_class_get_name(
+ struct bt_component_class *component_class)
+{
+ return component_class ? component_class->name->str : NULL;
+}
+
+enum bt_component_type bt_component_class_get_type(
+ struct bt_component_class *component_class)
+{
+ return component_class ? component_class->type :
+ BT_COMPONENT_TYPE_UNKNOWN;
+}
+
+struct bt_plugin *bt_component_class_get_plugin(
+ struct bt_component_class *component_class)
+{
+ return component_class ? bt_get(component_class->plugin) :
+ NULL;
+}
+
+const char *bt_component_class_get_description(
+ struct bt_component_class *component_class)
+{
+ return component_class ? component_class->description->str : NULL;
+}
+