48 fillVector<Visit>(visits_.
down, {nullptr, false});
49 fillVector<Visit>(visits_.
up, {nullptr, false});
60 const auto propId = propagations_.
getNext();
62 = std::make_unique<Propagation>(leaf, comp, fromMin);
63 return propagations_[propId].get();
68 visits_.
up[v].prop = prop;
70 visits_.
down[v].prop = prop;
76 visits_.
up[v].prop = prop;
77 visits_.
up[v].done =
true;
79 visits_.
down[v].prop = prop;
80 visits_.
down[v].done =
true;
86 return visits_.
up[v].prop == prop;
88 return visits_.
down[v].prop == prop;
97 return visits_.
up[v].prop == prop && visits_.
up[v].done;
99 return visits_.
down[v].prop == prop && visits_.
down[v].done;
110#ifdef TTK_ENABLE_OPENMP4
111#pragma omp atomic read seq_cst
113 res = visits_.
down[v].done;
115#ifdef TTK_ENABLE_OPENMP4
116#pragma omp atomic read seq_cst
118 res = visits_.
up[v].done;
125 return visits_.
up[v];
127 return visits_.
down[v];
134 return visits_.
down[v];
136 return visits_.
up[v];
TTK processing package that manage a parallel version of vector Same as in FTM: Common ?
void reserve(const std::size_t &newSize, const bool fromOther=false)
idVertex nbElmt_
Allocation may depends on the number of vertices.
TTK fTRGraph propagation management with Fibonacci heaps.
manage propagations for FTR Graph
void toVisit(const idVertex v, Propagation *const prop)
Visit visitOpposite(const idVertex v, const Propagation *const prop) const
bool hasVisitedOpposite(const idVertex v, Propagation *const prop) const
bool willVisit(const idVertex v, const Propagation *const prop) const
Visit visit(const idVertex v, const Propagation *const prop) const
Propagation * newPropagation(const idVertex leaf, const VertCompFN &comp, const bool fromMin)
~Propagations() override=default
void visit(const idVertex v, Propagation *const prop)
bool hasVisited(const idVertex v, Propagation *const prop) const
std::function< bool(const idVertex, const idVertex)> VertCompFN
SimplexId idVertex
Vertex index in scalars_.
std::vector< Visit > down