Remove Babeltrace 1 files and reorganize the tree
[babeltrace.git] / include / babeltrace / object-internal.h
index 747950f721b76509b4ca6b62cb5956cae920aae9..e130a81e883d620cba525cffc28a4ffba2f90fcd 100644 (file)
@@ -33,7 +33,7 @@
 /**
  * All objects publicly exposed by Babeltrace APIs must contain this structure
  * as their first member. This allows the unification of all ref counting
- * mechanism and may be used to provide more base functionality to all
+ * mechanisms and may be used to provide more base functionality to all
  * objects.
  */
 struct bt_object {
@@ -45,11 +45,14 @@ struct bt_object {
 };
 
 static inline
-long bt_object_get_ref_count(const void *);
-static inline
-void bt_object_set_parent(void *, void *);
+long bt_object_get_ref_count(const void *ptr)
+{
+       const struct bt_object *obj = ptr;
+
+       return obj->ref_count.count;
+}
 
-static
+static inline
 void bt_object_release(void *ptr)
 {
        struct bt_object *obj = ptr;
@@ -59,7 +62,7 @@ void bt_object_release(void *ptr)
        }
 }
 
-static
+static inline
 void generic_release(struct bt_object *obj)
 {
        if (obj->parent) {
@@ -71,11 +74,17 @@ void generic_release(struct bt_object *obj)
 }
 
 static inline
-struct bt_object *bt_object_get_parent(void *ptr)
+struct bt_object *bt_object_borrow_parent(void *ptr)
 {
        struct bt_object *obj = ptr;
 
-       return ptr ? bt_get(obj->parent) : NULL;
+       return obj ? obj->parent : NULL;
+}
+
+static inline
+struct bt_object *bt_object_get_parent(void *ptr)
+{
+       return bt_get(bt_object_borrow_parent(ptr));
 }
 
 static inline
@@ -93,6 +102,7 @@ void bt_object_set_parent(void *child_ptr, void *parent)
         * to the parent will be released once the object's reference count
         * falls to zero.
         */
+       BT_PUT(child->parent);
        child->parent = bt_get(parent);
 }
 
@@ -106,12 +116,4 @@ void bt_object_init(void *ptr, bt_object_release_func release)
        bt_ref_init(&obj->ref_count, generic_release);
 }
 
-static inline
-long bt_object_get_ref_count(const void *ptr)
-{
-       const struct bt_object *obj = ptr;
-
-       return obj->ref_count.count;
-}
-
 #endif /* BABELTRACE_OBJECT_INTERNAL_H */
This page took 0.025314 seconds and 4 git commands to generate.