From d580c90469b4ba182bd8aa8e7a4e289884e426fe Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Feb 2015 13:51:55 +1100 Subject: CustomData: const correctness for interp() --- source/blender/bmesh/intern/bmesh_interp.c | 37 ++++++++++++---------- source/blender/bmesh/intern/bmesh_interp.h | 6 ++-- source/blender/bmesh/intern/bmesh_mods.c | 6 ++-- source/blender/bmesh/operators/bmo_fill_grid.c | 7 ++-- source/blender/bmesh/operators/bmo_inset.c | 12 ++++--- .../blender/bmesh/tools/bmesh_decimate_collapse.c | 8 +++-- 6 files changed, 45 insertions(+), 31 deletions(-) (limited to 'source/blender/bmesh') diff --git a/source/blender/bmesh/intern/bmesh_interp.c b/source/blender/bmesh/intern/bmesh_interp.c index d60c01bd0ff..1d8c6f5c041 100644 --- a/source/blender/bmesh/intern/bmesh_interp.c +++ b/source/blender/bmesh/intern/bmesh_interp.c @@ -70,7 +70,7 @@ static void bm_data_interp_from_elem(CustomData *data_layer, BMElem *ele1, BMEle } } else { - void *src[2]; + const void *src[2]; float w[2]; src[0] = ele1->head.data; @@ -125,7 +125,6 @@ static void UNUSED_FUNCTION(BM_Data_Vert_Average)(BMesh *UNUSED(bm), BMFace *UNU */ void BM_data_interp_face_vert_edge(BMesh *bm, BMVert *v1, BMVert *UNUSED(v2), BMVert *v, BMEdge *e1, const float fac) { - void *src[2]; float w[2]; BMLoop *l_v1 = NULL, *l_v = NULL, *l_v2 = NULL; BMLoop *l_iter = NULL; @@ -150,13 +149,16 @@ void BM_data_interp_face_vert_edge(BMesh *bm, BMVert *v1, BMVert *UNUSED(v2), BM l_v2 = l_iter->prev; } - if (!l_v1 || !l_v2) + if (!l_v1 || !l_v2) { return; - - src[0] = l_v1->head.data; - src[1] = l_v2->head.data; + } + else { + const void *src[2]; + src[0] = l_v1->head.data; + src[1] = l_v2->head.data; - CustomData_bmesh_interp(&bm->ldata, src, w, NULL, 2, l_v->head.data); + CustomData_bmesh_interp(&bm->ldata, src, w, NULL, 2, l_v->head.data); + } } while ((l_iter = l_iter->radial_next) != e1->l); } @@ -168,8 +170,9 @@ void BM_data_interp_face_vert_edge(BMesh *bm, BMVert *v1, BMVert *UNUSED(v2), BM * * \note Only handles loop customdata. multires is handled. */ -void BM_face_interp_from_face_ex(BMesh *bm, BMFace *target, BMFace *source, const bool do_vertex, - void **blocks_l, void **blocks_v, float (*cos_2d)[2], float axis_mat[3][3]) +void BM_face_interp_from_face_ex( + BMesh *bm, BMFace *target, BMFace *source, const bool do_vertex, + const void **blocks_l, const void **blocks_v, float (*cos_2d)[2], float axis_mat[3][3]) { BMLoop *l_iter; BMLoop *l_first; @@ -217,8 +220,10 @@ void BM_face_interp_from_face(BMesh *bm, BMFace *target, BMFace *source, const b if (do_vertex) blocks_v[i] = l_iter->v->head.data; } while (i++, (l_iter = l_iter->next) != l_first); - BM_face_interp_from_face_ex(bm, target, source, do_vertex, - blocks_l, blocks_v, cos_2d, axis_mat); + BM_face_interp_from_face_ex( + bm, target, source, do_vertex, + (const void **)blocks_l, (const void **)blocks_v, + cos_2d, axis_mat); } /** @@ -627,8 +632,8 @@ void BM_loop_interp_from_face(BMesh *bm, BMLoop *target, BMFace *source, { BMLoop *l_iter; BMLoop *l_first; - void **vblocks = do_vertex ? BLI_array_alloca(vblocks, source->len) : NULL; - void **blocks = BLI_array_alloca(blocks, source->len); + const void **vblocks = do_vertex ? BLI_array_alloca(vblocks, source->len) : NULL; + const void **blocks = BLI_array_alloca(blocks, source->len); float (*cos_2d)[2] = BLI_array_alloca(cos_2d, source->len); float *w = BLI_array_alloca(w, source->len); float axis_mat[3][3]; /* use normal to transform into 2d xy coords */ @@ -669,7 +674,7 @@ void BM_vert_interp_from_face(BMesh *bm, BMVert *v, BMFace *source) { BMLoop *l_iter; BMLoop *l_first; - void **blocks = BLI_array_alloca(blocks, source->len); + const void **blocks = BLI_array_alloca(blocks, source->len); float (*cos_2d)[2] = BLI_array_alloca(cos_2d, source->len); float *w = BLI_array_alloca(w, source->len); float axis_mat[3][3]; /* use normal to transform into 2d xy coords */ @@ -1059,7 +1064,7 @@ static void bm_vert_loop_groups_data_layer_merge__single( data_weights = lf->data_weights; - CustomData_bmesh_interp(&bm->ldata, lf->data, data_weights, NULL, lf->data_len, data); + CustomData_bmesh_interp(&bm->ldata, (const void **)lf->data, data_weights, NULL, lf->data_len, data); for (i = 0; i < lf->data_len; i++) { CustomData_copy_elements(type, data, lf->data[i], 1); @@ -1091,7 +1096,7 @@ static void bm_vert_loop_groups_data_layer_merge_weights__single( data_weights = lf->data_weights; } - CustomData_bmesh_interp(&bm->ldata, lf->data, data_weights, NULL, lf->data_len, data); + CustomData_bmesh_interp(&bm->ldata, (const void **)lf->data, data_weights, NULL, lf->data_len, data); for (i = 0; i < lf->data_len; i++) { CustomData_copy_elements(type, data, lf->data[i], 1); diff --git a/source/blender/bmesh/intern/bmesh_interp.h b/source/blender/bmesh/intern/bmesh_interp.h index 1c1c063b7ed..3be6dcdace3 100644 --- a/source/blender/bmesh/intern/bmesh_interp.h +++ b/source/blender/bmesh/intern/bmesh_interp.h @@ -45,8 +45,10 @@ void BM_data_layer_copy(BMesh *bm, CustomData *data, int type, int src_n, int d float BM_elem_float_data_get(CustomData *cd, void *element, int type); void BM_elem_float_data_set(CustomData *cd, void *element, int type, const float val); -void BM_face_interp_from_face_ex(BMesh *bm, BMFace *target, BMFace *source, const bool do_vertex, - void **blocks, void **blocks_v, float (*cos_2d)[2], float axis_mat[3][3]); +void BM_face_interp_from_face_ex( + BMesh *bm, BMFace *target, BMFace *source, const bool do_vertex, + const void **blocks, const void **blocks_v, + float (*cos_2d)[2], float axis_mat[3][3]); void BM_face_interp_from_face(BMesh *bm, BMFace *target, BMFace *source, const bool do_vertex); void BM_loop_interp_from_face(BMesh *bm, BMLoop *target, BMFace *source, const bool do_vertex, const bool do_multires); diff --git a/source/blender/bmesh/intern/bmesh_mods.c b/source/blender/bmesh/intern/bmesh_mods.c index 6687902f77b..7b3f64dc5cd 100644 --- a/source/blender/bmesh/intern/bmesh_mods.c +++ b/source/blender/bmesh/intern/bmesh_mods.c @@ -902,7 +902,9 @@ bool BM_face_split_edgenet( if (l_first == NULL) { mul_v2_m3v3(co, axis_mat, v->co); interp_weights_poly_v2(w, cos_2d, f->len, co); - CustomData_bmesh_interp(&bm->ldata, blocks, w, NULL, f->len, l_iter->head.data); + CustomData_bmesh_interp( + &bm->ldata, (const void **)blocks, + w, NULL, f->len, l_iter->head.data); l_first = l_iter; } else { @@ -1010,7 +1012,7 @@ BMEdge *BM_vert_collapse_faces(BMesh *bm, BMEdge *e_kill, BMVert *v_kill, float l_iter = e_kill->l; do { if (l_iter->v == tv && l_iter->next->v == v_kill) { - void *src[2]; + const void *src[2]; BMLoop *tvloop = l_iter; BMLoop *kvloop = l_iter->next; diff --git a/source/blender/bmesh/operators/bmo_fill_grid.c b/source/blender/bmesh/operators/bmo_fill_grid.c index 40f6937245b..dd954adcd55 100644 --- a/source/blender/bmesh/operators/bmo_fill_grid.c +++ b/source/blender/bmesh/operators/bmo_fill_grid.c @@ -159,7 +159,7 @@ static void bm_loop_pair_test_copy(BMLoop *l_pair_a[2], BMLoop *l_pair_b[2]) */ static void bm_loop_interp_from_grid_boundary_4(BMesh *bm, BMLoop *l, BMLoop *l_bound[4], const float w[4]) { - void *l_cdata[4] = { + const void *l_cdata[4] = { l_bound[0]->head.data, l_bound[1]->head.data, l_bound[2]->head.data, @@ -170,8 +170,7 @@ static void bm_loop_interp_from_grid_boundary_4(BMesh *bm, BMLoop *l, BMLoop *l_ static void bm_loop_interp_from_grid_boundary_2(BMesh *bm, BMLoop *l, BMLoop *l_bound[2], const float t) { - - void *l_cdata[2] = { + const void *l_cdata[2] = { l_bound[0]->head.data, l_bound[1]->head.data}; @@ -346,7 +345,7 @@ static void bm_grid_fill_array(BMesh *bm, BMVert **v_grid, const unsigned int xt if (use_vert_interp) { const float *w = weight_table[XY(x, y)]; - void *v_cdata[4] = { + const void *v_cdata[4] = { v_grid[XY(x, 0)]->head.data, v_grid[XY(0, y)]->head.data, v_grid[XY(x, ytot - 1)]->head.data, diff --git a/source/blender/bmesh/operators/bmo_inset.c b/source/blender/bmesh/operators/bmo_inset.c index b7914e84c50..27e140eb990 100644 --- a/source/blender/bmesh/operators/bmo_inset.c +++ b/source/blender/bmesh/operators/bmo_inset.c @@ -390,8 +390,10 @@ static void bmo_face_inset_individual( if (use_interpolate) { - BM_face_interp_from_face_ex(bm, iface->f, iface->f, true, - iface->blocks_l, iface->blocks_v, iface->cos_2d, iface->axis_mat); + BM_face_interp_from_face_ex( + bm, iface->f, iface->f, true, + (const void **)iface->blocks_l, (const void **)iface->blocks_v, + iface->cos_2d, iface->axis_mat); /* build rim faces */ l_iter = l_first; @@ -993,8 +995,10 @@ void bmo_inset_region_exec(BMesh *bm, BMOperator *op) for (i = 0; i < iface_array_len; i++) { if (iface_array[i]) { InterpFace *iface = iface_array[i]; - BM_face_interp_from_face_ex(bm, iface->f, iface->f, true, - iface->blocks_l, iface->blocks_v, iface->cos_2d, iface->axis_mat); + BM_face_interp_from_face_ex( + bm, iface->f, iface->f, true, + (const void **)iface->blocks_l, (const void **)iface->blocks_v, + iface->cos_2d, iface->axis_mat); } } } diff --git a/source/blender/bmesh/tools/bmesh_decimate_collapse.c b/source/blender/bmesh/tools/bmesh_decimate_collapse.c index ef1783cc693..85402544396 100644 --- a/source/blender/bmesh/tools/bmesh_decimate_collapse.c +++ b/source/blender/bmesh/tools/bmesh_decimate_collapse.c @@ -519,9 +519,11 @@ static void bm_edge_collapse_loop_customdata(BMesh *bm, BMLoop *l, BMVert *v_cle if (CustomData_layer_has_math(&bm->ldata, i)) { const int offset = bm->ldata.layers[i].offset; const int type = bm->ldata.layers[i].type; - void *cd_src[2] = {(char *)src[0] + offset, - (char *)src[1] + offset}; - void *cd_iter = (char *)l_iter->head.data + offset; + const void *cd_src[2] = { + POINTER_OFFSET(src[0], offset), + POINTER_OFFSET(src[1], offset), + }; + void *cd_iter = POINTER_OFFSET(l_iter->head.data, offset); /* detect seams */ if (CustomData_data_equals(type, cd_src[0], cd_iter)) { -- cgit v1.2.3