+ def __repr__(self):
+ return '<{}.{} object @ {}>'.format(self.__class__.__module__,
+ self.__class__.__name__,
+ hex(self.addr))
+
+ def __copy__(self):
+ raise NotImplementedError
+
+ def __deepcopy__(self, memo):
+ raise NotImplementedError
+
+
+# A Python object that is itself not refcounted, but is wholly owned by an
+# object that is itself refcounted (a _SharedObject). A Babeltrace unique
+# object gets destroyed once its owner gets destroyed (its refcount drops to
+# 0).
+#
+# In the Python bindings, to avoid having to deal with issues with the lifetime
+# of unique objects, we make it so acquiring a reference on a unique object
+# acquires a reference on its owner.
+
+class _UniqueObject(_BaseObject):
+
+ # Create a _UniqueObject.
+ #
+ # - ptr: SWIG Object, pointer to the unique object.
+ # - owner_ptr: SWIG Object, pointer to the owner of the unique
+ # object. A new reference is acquired.
+ # - owner_get_ref: Callback to get a reference on the owner
+ # - owner_put_ref: Callback to put a reference on the owner.
+