40#ifndef H_HEXDOM_ALGO_ID_MAP_H
41#define H_HEXDOM_ALGO_ID_MAP_H
44#include <exploragram/hexdom/basic.h>
52 if (size >= 0) ind.resize(
index_t(size));
58 while (ind[i] != ind[ind[i]]) ind[i] = ind[ind[i]];
62 connect_to_root(ind, a);
63 connect_to_root(ind, b);
69 connect_to_root(ind, i);
78 for (
index_t i = 0; i < ind.
size(); i++)
if (i == ind[i]) {
79 old_grp_2_new_grp[i] = nb_groups;
83 ind[i] = old_grp_2_new_grp[ind[i]];
87namespace IdMapSigned {
104 while (ind[i] != ind[ind[i]]) {
105 sign[i] = (sign[i] == sign[ind[i]]);
106 ind[i] = ind[ind[i]];
111 connect_to_root(ind, sign, a);
112 connect_to_root(ind, sign, b);
113 sign[ind[a]] = ((sign[a] == sign[b]) == ab_link_sign);
114 ind[ind[a]] = ind[b];
119 connect_to_root(ind, sign, i);
127 FOR(i,ind.size())if (i == ind[i]) {
128 old_grp_2_new_grp[i] = nb_groups;
131 FOR(i, ind.
size()) ind[i] = old_grp_2_new_grp[ind[i]];
#define geo_assert(x)
Verifies that a condition is met.
Vector with aligned memory allocation.
index_t size() const
Gets the number of elements.
Included by all headers in exploragram.
Types and functions for memory manipulation.
Global Vorpaline namespace.
geo_index_t index_t
The type for storing and manipulating indices.