17#ifndef PM_INTERVAL_INCLUDED
18#define PM_INTERVAL_INCLUDED
39template <
typename Dimension,
typename Event_value>
50 static constexpr Event_value
inf = std::numeric_limits<Event_value>::has_infinity
51 ? std::numeric_limits<Event_value>::infinity()
52 : static_cast<Event_value>(-1);
77 stream <<
"[" << interval.
dim <<
"] ";
78 if constexpr (std::numeric_limits<Event_value>::has_infinity) {
79 stream << interval.
birth <<
" - " << interval.
death;
84 stream << interval.
birth;
89 stream << interval.
death;
100 template <std::
size_t I>
101 constexpr auto&
get() &
noexcept
103 static_assert(I < 3,
"Value mismatch at argument 1 in template parameter list. Maximal possible value is 2.");
105 if constexpr (I == 0)
return birth;
106 if constexpr (I == 1)
return death;
107 if constexpr (I == 2)
return dim;
116 template <std::
size_t I>
117 constexpr const auto&
get() const& noexcept
119 static_assert(I < 3,
"Value mismatch at argument 1 in template parameter list. Maximal possible value is 2.");
121 if constexpr (I == 0)
return birth;
122 if constexpr (I == 1)
return death;
123 if constexpr (I == 2)
return dim;
132 template <std::
size_t I>
133 constexpr auto&&
get() &&
noexcept
135 static_assert(I < 3,
"Value mismatch at argument 1 in template parameter list. Maximal possible value is 2.");
137 if constexpr (I == 0)
return std::move(
birth);
138 if constexpr (I == 1)
return std::move(
death);
139 if constexpr (I == 2)
return std::move(
dim);
148 template <std::
size_t I>
149 constexpr const auto&&
get() const&& noexcept
151 static_assert(I < 3,
"Value mismatch at argument 1 in template parameter list. Maximal possible value is 2.");
153 if constexpr (I == 0)
return std::move(
birth);
154 if constexpr (I == 1)
return std::move(
death);
155 if constexpr (I == 2)
return std::move(
dim);
172template <
typename Dimension,
typename Event_value>
173struct tuple_size<
Gudhi::persistence_matrix::Persistence_interval<Dimension, Event_value> >
174 : integral_constant<size_t, 3> {};
186template <
size_t I,
typename Dimension,
typename Event_value>
187struct tuple_element<I,
Gudhi::persistence_matrix::Persistence_interval<Dimension, Event_value> > {
188 static_assert(I < 3,
"Value mismatch at argument 1 in template parameter list. Maximal possible value is 2.");
190 using type = conditional_t < I<2, Event_value, Dimension>;
204template <
size_t I,
typename Dimension,
typename Event_value>
207 return i.template
get<I>();
221template <
size_t I,
typename Dimension,
typename Event_value>
224 return i.template
get<I>();
238template <
size_t I,
typename Dimension,
typename Event_value>
241 return std::move(i).template
get<I>();
255template <
size_t I,
typename Dimension,
typename Event_value>
258 return std::move(i).template
get<I>();
constexpr auto & get(Gudhi::persistence_matrix::Persistence_interval< Dimension, Event_value > &i) noexcept
Partial specialization of get for Gudhi::persistence_matrix::Persistence_interval.
Definition persistence_interval.h:205
Persistence matrix namespace.
Definition FieldOperators.h:18
Gudhi namespace.
Definition SimplicialComplexForAlpha.h:14
Type for an interval in a persistent diagram or barcode. Stores the birth, death and dimension of the...
Definition persistence_interval.h:40
constexpr const auto && get() const &&noexcept
Specialization of get for Gudhi::persistence_matrix::Persistence_interval.
Definition persistence_interval.h:149
Dimension dim
Definition persistence_interval.h:65
static constexpr Internal_key inf
Definition persistence_interval.h:50
constexpr auto && get() &&noexcept
Specialization of get for Gudhi::persistence_matrix::Persistence_interval.
Definition persistence_interval.h:133
Internal_key death
Definition persistence_interval.h:67
constexpr auto & get() &noexcept
Specialization of get for Gudhi::persistence_matrix::Persistence_interval.
Definition persistence_interval.h:101
constexpr const auto & get() const &noexcept
Specialization of get for Gudhi::persistence_matrix::Persistence_interval.
Definition persistence_interval.h:117
Internal_key birth
Definition persistence_interval.h:66
friend std::ostream & operator<<(std::ostream &stream, const Persistence_interval &interval)
operator<<
Definition persistence_interval.h:75
Persistence_interval(Event_value birth=inf, Event_value death=inf, Dimension dim=-1)
Constructor.
Definition persistence_interval.h:61