summaryrefslogtreecommitdiff
path: root/src/python/gudhi/simplex_tree.pyx
diff options
context:
space:
mode:
authorVincent Rouvreau <vincent.rouvreau@inria.fr>2022-02-14 11:08:00 +0100
committerVincent Rouvreau <vincent.rouvreau@inria.fr>2022-02-14 11:08:00 +0100
commit43981a4d487669fe2002337ab62b72dd9e83a64a (patch)
tree37340e1462365d08bc0fe494cb867d3e88618164 /src/python/gudhi/simplex_tree.pyx
parentfb8ce008feadcaf6a936740a3ed54d50970c731c (diff)
Remove shallow copy
Diffstat (limited to 'src/python/gudhi/simplex_tree.pyx')
-rw-r--r--src/python/gudhi/simplex_tree.pyx54
1 files changed, 20 insertions, 34 deletions
diff --git a/src/python/gudhi/simplex_tree.pyx b/src/python/gudhi/simplex_tree.pyx
index ed7c3b92..0213e363 100644
--- a/src/python/gudhi/simplex_tree.pyx
+++ b/src/python/gudhi/simplex_tree.pyx
@@ -30,7 +30,6 @@ cdef class SimplexTree:
# unfortunately 'cdef public Simplex_tree_interface_full_featured* thisptr' is not possible
# Use intptr_t instead to cast the pointer
cdef public intptr_t thisptr
- cdef bool __thisptr_to_be_deleted
# Get the pointer casted as it should be
cdef Simplex_tree_interface_full_featured* get_ptr(self) nogil:
@@ -39,36 +38,32 @@ cdef class SimplexTree:
cdef Simplex_tree_persistence_interface * pcohptr
# Fake constructor that does nothing but documenting the constructor
- def __init__(self, other = None, copy = True):
+ def __init__(self, other = None):
"""SimplexTree constructor.
- :param other: If `other` is a SimplexTree (default = None), the SimplexTree is constructed from a deep/shallow copy of `other`.
+
+ :param other: If `other` is a `None` (default value), an empty `SimplexTree` is created.
+ If `other` is a `SimplexTree`, the `SimplexTree` is constructed from a deep copy of `other`.
:type other: SimplexTree
- :param copy: If `True`, the copy will be deep and if `False, the copy will be shallow. Default is `True`.
- :type copy: bool
- :returns: A simplex tree that is a (deep or shallow) copy of itself.
+ :returns: An empty or a copy simplex tree.
:rtype: SimplexTree
- :note: copy constructor requires :func:`compute_persistence` to be launched again as the result is not copied.
+
+ :note: If the `SimplexTree` is a copy, it requires :func:`compute_persistence` to be launched again as the
+ persistence result is not copied.
"""
# The real cython constructor
- def __cinit__(self, other = None, copy = True):
+ def __cinit__(self, other = None):
cdef SimplexTree ostr
if other and type(other) is SimplexTree:
ostr = <SimplexTree> other
- if copy:
- self.thisptr = <intptr_t>(new Simplex_tree_interface_full_featured(dereference(ostr.get_ptr())))
- else:
- self.thisptr = ostr.thisptr
- # Avoid double free - The original is in charge of deletion
- self.__thisptr_to_be_deleted = False
+ self.thisptr = <intptr_t>(new Simplex_tree_interface_full_featured(dereference(ostr.get_ptr())))
else:
- self.__thisptr_to_be_deleted = True
self.thisptr = <intptr_t>(new Simplex_tree_interface_full_featured())
def __dealloc__(self):
cdef Simplex_tree_interface_full_featured* ptr = self.get_ptr()
# Avoid double free - The original is in charge of deletion
- if ptr != NULL and self.__thisptr_to_be_deleted:
+ if ptr != NULL:
del ptr
if self.pcohptr != NULL:
del self.pcohptr
@@ -83,33 +78,24 @@ cdef class SimplexTree:
"""
return self.pcohptr != NULL
- def copy(self, deep=True):
+ def copy(self):
"""
- :param deep: If `True`, the copy will be deep and if `False`, the copy will be shallow. Default is `True`.
- :type deep: bool
- :returns: A simplex tree that is a (deep or shallow) copy of itself.
+ :returns: A simplex tree that is a deep copy of itself.
:rtype: SimplexTree
- :note: copy requires :func:`compute_persistence` to be launched again as the result is not copied.
+
+ :note: copy requires :func:`compute_persistence` to be launched again as the persistence result is not copied.
"""
stree = SimplexTree()
cdef Simplex_tree_interface_full_featured* stree_ptr
cdef Simplex_tree_interface_full_featured* self_ptr=self.get_ptr()
- if deep:
- with nogil:
- stree_ptr = new Simplex_tree_interface_full_featured(dereference(self_ptr))
-
- stree.thisptr = <intptr_t>(stree_ptr)
- else:
- stree.thisptr = self.thisptr
- # Avoid double free - The original is in charge of deletion
- stree.__thisptr_to_be_deleted = False
- return stree
+ with nogil:
+ stree_ptr = new Simplex_tree_interface_full_featured(dereference(self_ptr))
- def __copy__(self):
- return self.copy(deep=False)
+ stree.thisptr = <intptr_t>(stree_ptr)
+ return stree
def __deepcopy__(self):
- return self.copy(deep=True)
+ return self.copy()
def filtration(self, simplex):
"""This function returns the filtration value for a given N-simplex in