summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2022-12-10 20:40:24 +0100
committerMarc Glisse <marc.glisse@inria.fr>2022-12-10 20:40:24 +0100
commit8226f645e01c11ccfc7919327bb281b6f805bfa4 (patch)
tree1b2dde2d67dc31d956728fa90e918fd1e121c70b
parent50a772551a29fe0178ff05e3390754ac89cf5826 (diff)
Use std::optional for possibly None argument.
-rw-r--r--src/python/gudhi/bottleneck.cc9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/python/gudhi/bottleneck.cc b/src/python/gudhi/bottleneck.cc
index 3a0fe473..1cf3283c 100644
--- a/src/python/gudhi/bottleneck.cc
+++ b/src/python/gudhi/bottleneck.cc
@@ -9,18 +9,17 @@
*/
#include <gudhi/Bottleneck.h>
-
+#include <optional>
#include <pybind11_diagram_utils.h>
+#include <pybind11/stl.h>
// Indices are added internally in bottleneck_distance, they are not needed in the input.
static auto make_point(double x, double y, py::ssize_t) { return std::pair(x, y); };
// For compatibility with older versions, we want to support e=None.
-// In C++17, the recommended way is std::optional<double>.
-double bottleneck(Dgm d1, Dgm d2, py::object epsilon)
+double bottleneck(Dgm d1, Dgm d2, std::optional<double> epsilon)
{
- double e = (std::numeric_limits<double>::min)();
- if (!epsilon.is_none()) e = epsilon.cast<double>();
+ double e = epsilon.value_or((std::numeric_limits<double>::min)());
// I *think* the call to request() has to be before releasing the GIL.
auto diag1 = numpy_to_range_of_pairs(d1, make_point);
auto diag2 = numpy_to_range_of_pairs(d2, make_point);