_get_ref and _put_ref must be implemented by any sub-class of
_SharedObject, marking them as abstract methods could help find
mistakes.
Change-Id: I0e161a0bbc1c432d9ed59279d3e4b1b6f6a26215
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/10239
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
# Copyright (c) 2017 Philippe Proulx <pproulx@efficios.com>
+import abc
+
+
class _BaseObject:
# Ensure that the object always has _ptr set, even if it throws during
# construction.
# Python object that owns a reference to a Babeltrace object.
-class _SharedObject(_BaseObject):
-
+class _SharedObject(_BaseObject, abc.ABC):
# Get a new reference on ptr.
#
# This must be implemented by subclasses to work correctly with a pointer
# of the native type they wrap.
@staticmethod
+ @abc.abstractmethod
def _get_ref(ptr):
raise NotImplementedError
# of the native type they wrap.
@staticmethod
+ @abc.abstractmethod
def _put_ref(ptr):
raise NotImplementedError