#include <babeltrace/compiler.h>
#include <babeltrace/plugin/component-class-internal.h>
+#include <babeltrace/ref.h>
#include <glib.h>
static
-void bt_component_class_destroy(struct bt_ref *ref)
+void bt_component_class_destroy(struct bt_object *obj)
{
struct bt_component_class *class;
- assert(ref);
- class = container_of(ref, struct bt_component_class, ref);
+ assert(obj);
+ class = container_of(obj, struct bt_component_class, base);
if (class->name) {
g_string_free(class->name, TRUE);
}
- bt_plugin_put(class->plugin);
+
+ bt_put(class->plugin);
g_free(class);
}
goto end;
}
- bt_ref_init(&class->ref, bt_component_class_destroy);
+ bt_object_init(class, bt_component_class_destroy);
class->type = type;
class->name = g_string_new(name);
if (!class->name) {
- bt_component_class_put(class);
- class = NULL;
+ BT_PUT(class);
goto end;
}
- bt_plugin_get(plugin);
- class->plugin = plugin;
+
+ class->plugin = bt_get(plugin);
end:
return class;
}
-BT_HIDDEN
-void bt_component_class_get(struct bt_component_class *class)
+const char *bt_component_class_get_name(
+ struct bt_component_class *component_class)
{
- if (!class) {
- return;
- }
-
- bt_ref_get(&class->ref);
+ return component_class ? component_class->name->str : NULL;
}
-BT_HIDDEN
-void bt_component_class_put(struct bt_component_class *class)
+enum bt_component_type bt_component_class_get_type(
+ struct bt_component_class *component_class)
{
- if (!class) {
- return;
- }
+ return component_class ? component_class->type :
+ BT_COMPONENT_TYPE_UNKNOWN;
+}
- bt_ref_put(&class->ref);
+struct bt_plugin *bt_component_class_get_plugin(
+ struct bt_component_class *component_class)
+{
+ return component_class ? bt_get(component_class->plugin) :
+ NULL;
}