39 if(parent_ ==
nullptr)
42 decltype(parent_) tmp = parent_->find();
43#ifdef TTK_ENABLE_OPENMP
44#pragma omp atomic write
59#ifndef TTK_ENABLE_KAMIKAZE
60 if(data_.states.size() != 1) {
61 std::cout <<
"AtomicUF :: getFirstState : nb state 1 != "
62 << data_.states.size() << std::endl;
65 return data_.states[0];
69#ifndef TTK_ENABLE_KAMIKAZE
70 if(
id >= data_.states.size()) {
71 std::cout <<
"AtomicUF :: getState : " <<
id
72 <<
" >= " << data_.states.size() << std::endl;
75 return data_.states[id];
83 return data_.states.size();
87 return data_.openedArcs;
91 data_.openedArcs.reset();
112 const auto &nbState = data_.states.size();
115 s->
merge(*data_.states[i]);
118 data_.states.reset(1);
129#ifdef TTK_ENABLE_OPENMP
130#pragma omp atomic write
136#ifdef TTK_ENABLE_OPENMP
137#pragma omp atomic write
150 uf0->data_.
merge(uf1->data_);
154 uf1->data_.
merge(uf0->data_);
159 uf0->data_.
merge(uf1->data_);
173 for(
int i = 0; i < (int)sets.size() - 1; i++)
180 return rank_ < other.rank_;
184 return rank_ > other.rank_;
void setExtrema(SimplexId v)
void reserveData(const size_t &s)
void addArcToClose(idSuperArc a)
CurrentState * getState(const std::size_t id)
FTMAtomicVector< idSuperArc > & getOpenedArcs()
FTMAtomicVector< CurrentState * > & getStates()
SimplexId getExtrema() const
CurrentState * getFirstState()
bool operator>(const AtomicUF &other) const
AtomicUF(SimplexId extrema=nullVertex)
CurrentState * mergeStates()
void setRank(const int &rank)
void addState(CurrentState *s)
size_t getNbStates() const
static AtomicUF * makeUnion(std::vector< AtomicUF * > &sets)
static AtomicUF * makeUnion(AtomicUF *uf0, AtomicUF *uf1)
void setParent(AtomicUF *parent)
bool operator<(const AtomicUF &other) const
long unsigned int idSuperArc
SuperArc index in vect_superArcs_.
SimplexId valence
for vertex up/down valence
TTK base package defining the standard types.
int SimplexId
Identifier type for simplices of any dimension.
void merge(CurrentState &other)
void merge(SharedData &other)