Cleanup: Use references, const variables

This commit is contained in:
Hans Goudey 2022-01-21 18:20:07 -06:00
parent 45d038181a
commit 1f026a3db9
1 changed files with 63 additions and 68 deletions

View File

@ -331,7 +331,7 @@ static void weld_assert_poly_no_vert_repetition(const WeldPoly &wp,
}
else {
int i = 0;
while (weld_iter_loop_of_poly_next(&iter)) {
while (weld_iter_loop_of_poly_next(iter)) {
verts[i++] = iter.v;
}
}
@ -676,7 +676,7 @@ static void weld_edge_groups_setup(const int medge_len,
/** \name Weld Poly and Loop API
* \{ */
static bool weld_iter_loop_of_poly_begin(WeldLoopOfPolyIter *iter,
static bool weld_iter_loop_of_poly_begin(WeldLoopOfPolyIter &iter,
const WeldPoly &wp,
Span<WeldLoop> wloop,
Span<MLoop> mloop,
@ -687,19 +687,19 @@ static bool weld_iter_loop_of_poly_begin(WeldLoopOfPolyIter *iter,
return false;
}
iter->loop_start = wp.loop_start;
iter->loop_end = wp.loop_end;
iter->wloop = wloop;
iter->mloop = mloop;
iter->loop_map = loop_map;
iter->group = group_buffer;
iter.loop_start = wp.loop_start;
iter.loop_end = wp.loop_end;
iter.wloop = wloop;
iter.mloop = mloop;
iter.loop_map = loop_map;
iter.group = group_buffer;
int group_len = 0;
if (group_buffer) {
/* First loop group needs more attention. */
int loop_start, loop_end, l;
loop_start = iter->loop_start;
loop_end = l = iter->loop_end;
loop_start = iter.loop_start;
loop_end = l = iter.loop_end;
while (l >= loop_start) {
const int loop_ctx = loop_map[l];
if (loop_ctx != OUT_OF_CONTEXT) {
@ -715,30 +715,30 @@ static bool weld_iter_loop_of_poly_begin(WeldLoopOfPolyIter *iter,
group_len = loop_end - l;
int i = 0;
while (l < loop_end) {
iter->group[i++] = ++l;
iter.group[i++] = ++l;
}
}
}
iter->group_len = group_len;
iter.group_len = group_len;
iter->l_next = iter->loop_start;
iter.l_next = iter.loop_start;
#ifdef USE_WELD_DEBUG
iter->v = OUT_OF_CONTEXT;
iter.v = OUT_OF_CONTEXT;
#endif
return true;
}
static bool weld_iter_loop_of_poly_next(WeldLoopOfPolyIter *iter)
static bool weld_iter_loop_of_poly_next(WeldLoopOfPolyIter &iter)
{
int loop_end = iter->loop_end;
Span<WeldLoop> wloop = iter->wloop;
Span<int> loop_map = iter->loop_map;
int l = iter->l_curr = iter->l_next;
if (l == iter->loop_start) {
const int loop_end = iter.loop_end;
Span<WeldLoop> wloop = iter.wloop;
Span<int> loop_map = iter.loop_map;
int l = iter.l_curr = iter.l_next;
if (l == iter.loop_start) {
/* `grupo_len` is already calculated in the first loop */
}
else {
iter->group_len = 0;
iter.group_len = 0;
}
while (l <= loop_end) {
int l_next = l + 1;
@ -749,32 +749,32 @@ static bool weld_iter_loop_of_poly_next(WeldLoopOfPolyIter *iter)
l_next = wl->loop_skip_to;
}
if (wl->flag == ELEM_COLLAPSED) {
if (iter->group) {
iter->group[iter->group_len++] = l;
if (iter.group) {
iter.group[iter.group_len++] = l;
}
l = l_next;
continue;
}
#ifdef USE_WELD_DEBUG
BLI_assert(iter->v != wl->vert);
BLI_assert(iter.v != wl->vert);
#endif
iter->v = wl->vert;
iter->e = wl->edge;
iter->type = 1;
iter.v = wl->vert;
iter.e = wl->edge;
iter.type = 1;
}
else {
const MLoop *ml = &iter->mloop[l];
const MLoop &ml = iter.mloop[l];
#ifdef USE_WELD_DEBUG
BLI_assert((uint)iter->v != ml->v);
BLI_assert((uint)iter.v != ml.v);
#endif
iter->v = ml->v;
iter->e = ml->e;
iter->type = 0;
iter.v = ml.v;
iter.e = ml.e;
iter.type = 0;
}
if (iter->group) {
iter->group[iter->group_len++] = l;
if (iter.group) {
iter.group[iter.group_len++] = l;
}
iter->l_next = l_next;
iter.l_next = l_next;
return true;
}
@ -1026,18 +1026,13 @@ static void weld_poly_loop_ctx_setup(Span<MLoop> mloop,
MutableSpan<WeldGroup> r_vlinks,
WeldMesh *r_weld_mesh)
{
int poly_kill_len, loop_kill_len, wpoly_len, wpoly_new_len;
WeldPoly *wpoly_new;
WeldLoop *wl;
MutableSpan<WeldPoly> wpoly = r_weld_mesh->wpoly;
MutableSpan<WeldLoop> wloop = r_weld_mesh->wloop;
wpoly_new = r_weld_mesh->wpoly_new;
wpoly_len = r_weld_mesh->wpoly_len;
wpoly_new_len = 0;
poly_kill_len = 0;
loop_kill_len = 0;
WeldPoly *wpoly_new = r_weld_mesh->wpoly_new;
int wpoly_len = r_weld_mesh->wpoly_len;
int wpoly_new_len = 0;
int poly_kill_len = 0;
int loop_kill_len = 0;
Span<int> loop_map = r_weld_mesh->loop_map;
@ -1051,7 +1046,7 @@ static void weld_poly_loop_ctx_setup(Span<MLoop> mloop,
int poly_len = wp.len;
int ctx_verts_len = 0;
wl = &wloop[ctx_loops_ofs];
WeldLoop *wl = &wloop[ctx_loops_ofs];
for (int l = ctx_loops_len; l--; wl++) {
const int edge_dest = wl->edge;
if (edge_dest == ELEM_COLLAPSED) {
@ -1108,7 +1103,7 @@ static void weld_poly_loop_ctx_setup(Span<MLoop> mloop,
/* Setup Polygon Overlap. */
int wpoly_and_new_len = wpoly_len + wpoly_new_len;
const int wpoly_and_new_len = wpoly_len + wpoly_new_len;
r_vlinks.fill({0, 0});
MutableSpan<WeldGroup> v_links = r_vlinks;
@ -1116,8 +1111,8 @@ static void weld_poly_loop_ctx_setup(Span<MLoop> mloop,
for (const int i : IndexRange(wpoly_and_new_len)) {
const WeldPoly &wp = wpoly[i];
WeldLoopOfPolyIter iter;
if (weld_iter_loop_of_poly_begin(&iter, wp, wloop, mloop, loop_map, nullptr)) {
while (weld_iter_loop_of_poly_next(&iter)) {
if (weld_iter_loop_of_poly_begin(iter, wp, wloop, mloop, loop_map, nullptr)) {
while (weld_iter_loop_of_poly_next(iter)) {
v_links[iter.v].len++;
}
}
@ -1135,8 +1130,8 @@ static void weld_poly_loop_ctx_setup(Span<MLoop> mloop,
for (const int i : IndexRange(wpoly_and_new_len)) {
const WeldPoly &wp = wpoly[i];
WeldLoopOfPolyIter iter;
if (weld_iter_loop_of_poly_begin(&iter, wp, wloop, mloop, loop_map, nullptr)) {
while (weld_iter_loop_of_poly_next(&iter)) {
if (weld_iter_loop_of_poly_begin(iter, wp, wloop, mloop, loop_map, nullptr)) {
while (weld_iter_loop_of_poly_next(iter)) {
link_poly_buffer[v_links[iter.v].ofs++] = i;
}
}
@ -1159,8 +1154,8 @@ static void weld_poly_loop_ctx_setup(Span<MLoop> mloop,
}
WeldLoopOfPolyIter iter;
weld_iter_loop_of_poly_begin(&iter, wp, wloop, mloop, loop_map, nullptr);
weld_iter_loop_of_poly_next(&iter);
weld_iter_loop_of_poly_begin(iter, wp, wloop, mloop, loop_map, nullptr);
weld_iter_loop_of_poly_next(iter);
struct WeldGroup *link_a = &v_links[iter.v];
polys_len_a = link_a->len;
if (polys_len_a == 1) {
@ -1181,7 +1176,7 @@ static void weld_poly_loop_ctx_setup(Span<MLoop> mloop,
}
WeldLoopOfPolyIter iter_b = iter;
while (weld_iter_loop_of_poly_next(&iter_b)) {
while (weld_iter_loop_of_poly_next(iter_b)) {
struct WeldGroup *link_b = &v_links[iter_b.v];
polys_len_b = link_b->len;
if (polys_len_b == 1) {
@ -1253,15 +1248,15 @@ static void weld_poly_loop_ctx_setup(Span<MLoop> mloop,
/** \name Weld Mesh API
* \{ */
static void weld_mesh_context_create(const Mesh *mesh,
static void weld_mesh_context_create(const Mesh &mesh,
MutableSpan<int> vert_dest_map,
const int vert_kill_len,
WeldMesh *r_weld_mesh)
{
Span<MEdge> medge{mesh->medge, mesh->totedge};
Span<MPoly> mpoly{mesh->mpoly, mesh->totpoly};
Span<MLoop> mloop{mesh->mloop, mesh->totloop};
const int mvert_len = mesh->totvert;
Span<MEdge> medge{mesh.medge, mesh.totedge};
Span<MPoly> mpoly{mesh.mpoly, mesh.totpoly};
Span<MLoop> mloop{mesh.mloop, mesh.totloop};
const int mvert_len = mesh.totvert;
Vector<WeldVert> wvert = weld_vert_ctx_alloc_and_setup(vert_dest_map, vert_kill_len);
r_weld_mesh->vert_kill_len = vert_kill_len;
@ -1686,7 +1681,7 @@ static Mesh *weldModifier_doWeld(WeldModifierData *wmd,
}
WeldMesh weld_mesh;
weld_mesh_context_create(mesh, vert_dest_map, vert_kill_len, &weld_mesh);
weld_mesh_context_create(*mesh, vert_dest_map, vert_kill_len, &weld_mesh);
const int result_nverts = totvert - weld_mesh.vert_kill_len;
const int result_nedges = totedge - weld_mesh.edge_kill_len;
@ -1740,7 +1735,7 @@ static Mesh *weldModifier_doWeld(WeldModifierData *wmd,
dest_index = 0;
for (int i = 0; i < totedge; i++) {
int source_index = i;
const int source_index = i;
int count = 0;
while (i < totedge && weld_mesh.edge_groups_map[i] == OUT_OF_CONTEXT) {
edge_final[i] = dest_index + count;
@ -1787,8 +1782,8 @@ static Mesh *weldModifier_doWeld(WeldModifierData *wmd,
Array<int, 64> group_buffer(weld_mesh.max_poly_len);
for (const int i : mpoly.index_range()) {
const MPoly &mp = mpoly[i];
int loop_start = loop_cur;
int poly_ctx = weld_mesh.poly_map[i];
const int loop_start = loop_cur;
const int poly_ctx = weld_mesh.poly_map[i];
if (poly_ctx == OUT_OF_CONTEXT) {
int mp_loop_len = mp.totloop;
CustomData_copy_data(&mesh->ldata, &result->ldata, mp.loopstart, loop_cur, mp_loop_len);
@ -1802,14 +1797,14 @@ static Mesh *weldModifier_doWeld(WeldModifierData *wmd,
const WeldPoly &wp = weld_mesh.wpoly[poly_ctx];
WeldLoopOfPolyIter iter;
if (!weld_iter_loop_of_poly_begin(
&iter, wp, weld_mesh.wloop, mloop, weld_mesh.loop_map, group_buffer.data())) {
iter, wp, weld_mesh.wloop, mloop, weld_mesh.loop_map, group_buffer.data())) {
continue;
}
if (wp.poly_dst != OUT_OF_CONTEXT) {
continue;
}
while (weld_iter_loop_of_poly_next(&iter)) {
while (weld_iter_loop_of_poly_next(iter)) {
customdata_weld(
&mesh->ldata, &result->ldata, group_buffer.data(), iter.group_len, loop_cur);
int v = vert_final[iter.v];
@ -1834,17 +1829,17 @@ static Mesh *weldModifier_doWeld(WeldModifierData *wmd,
for (const int i : IndexRange(weld_mesh.wpoly_new_len)) {
const WeldPoly &wp = weld_mesh.wpoly_new[i];
int loop_start = loop_cur;
const int loop_start = loop_cur;
WeldLoopOfPolyIter iter;
if (!weld_iter_loop_of_poly_begin(
&iter, wp, weld_mesh.wloop, mloop, weld_mesh.loop_map, group_buffer.data())) {
iter, wp, weld_mesh.wloop, mloop, weld_mesh.loop_map, group_buffer.data())) {
continue;
}
if (wp.poly_dst != OUT_OF_CONTEXT) {
continue;
}
while (weld_iter_loop_of_poly_next(&iter)) {
while (weld_iter_loop_of_poly_next(iter)) {
customdata_weld(&mesh->ldata, &result->ldata, group_buffer.data(), iter.group_len, loop_cur);
int v = vert_final[iter.v];
int e = edge_final[iter.e];