summaryrefslogtreecommitdiff
path: root/src/python/include/Simplex_tree_interface.h
diff options
context:
space:
mode:
authorROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-08-28 17:42:12 +0200
committerROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-08-28 17:42:12 +0200
commitcea821f9ca34c270a5ccc047342c2c21ae79a6c0 (patch)
tree5d4222b33e0de0b5cf2e4c819b627442f01ed437 /src/python/include/Simplex_tree_interface.h
parentaabeed3df85d33b42bff8bbc55e93f363e84c3a8 (diff)
A prototype to fix #364
Diffstat (limited to 'src/python/include/Simplex_tree_interface.h')
-rw-r--r--src/python/include/Simplex_tree_interface.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/python/include/Simplex_tree_interface.h b/src/python/include/Simplex_tree_interface.h
index e288a8cf..9f92b349 100644
--- a/src/python/include/Simplex_tree_interface.h
+++ b/src/python/include/Simplex_tree_interface.h
@@ -39,6 +39,7 @@ class Simplex_tree_interface : public Simplex_tree<SimplexTreeOptions> {
using Skeleton_simplex_iterator = typename Base::Skeleton_simplex_iterator;
using Complex_simplex_iterator = typename Base::Complex_simplex_iterator;
using Extended_filtration_data = typename Base::Extended_filtration_data;
+ typedef bool (*blocker_func)(Simplex simplex, void *user_data);
public:
@@ -188,6 +189,17 @@ class Simplex_tree_interface : public Simplex_tree<SimplexTreeOptions> {
return collapsed_stree_ptr;
}
+ void expansion_with_blockers_callback(int dimension, blocker_func user_func, void *user_data) {
+ Base::expansion_with_blockers(dimension, [&](Simplex_handle sh){
+ Simplex simplex;
+ for (auto vertex : Base::simplex_vertex_range(sh)) {
+ simplex.insert(simplex.begin(), vertex);
+ }
+ return user_func(simplex, user_data);
+ });
+ Base::clear_filtration();
+ }
+
// Iterator over the simplex tree
Complex_simplex_iterator get_simplices_iterator_begin() {
// this specific case works because the range is just a pair of iterators - won't work if range was a vector