star-enclosures-2d

Extract enclosures from 2D geometry
git clone git://git.meso-star.fr/star-enclosures-2d.git
Log | Files | Refs | README | LICENSE

commit 2fe944daf1941595fa28c1b787d59a0c5bbea7bc
parent 6b86b78bc7b1e448fea439c3788ae4d4db89a2fc
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Thu,  7 Feb 2019 11:33:19 +0100

Add some debug code

Diffstat:
Msrc/senc2d_scene_analyze.c | 16++++++++++++++++
Msrc/senc2d_scene_analyze_c.h | 9+++++++++
2 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/src/senc2d_scene_analyze.c b/src/senc2d_scene_analyze.c @@ -376,6 +376,7 @@ canceled: /* Compute the normal at the max_y vertex. */ max_ny = 0; sz = darray_side_id_size_get(&ids_of_sides_around_max_y_vertex); + ASSERT(sz > 0); FOR_EACH(ii, 0, sz) { const side_id_t side_id = darray_side_id_cdata_get(&ids_of_sides_around_max_y_vertex)[ii]; @@ -841,9 +842,15 @@ collect_and_link_neighbours } a = current->angle; /* Link sides */ + ASSERT(p_crt_side->facing_side_id[crt_end] == SIDE_NULL__); + ASSERT(p_ccw_side->facing_side_id[ccw_end] == SIDE_NULL__); p_crt_side->facing_side_id[crt_end] = ccw_side_idx; p_ccw_side->facing_side_id[ccw_end] = crt_side_idx; /* Record media */ + ASSERT(p_crt_side->medium == MEDIUM_NULL__ + || p_crt_side->medium == segments_in[crt_id].medium[crt_side]); + ASSERT(p_ccw_side->medium == MEDIUM_NULL__ + || p_ccw_side->medium == segments_in[ccw_id].medium[ccw_side]); p_crt_side->medium = segments_in[crt_id].medium[crt_side]; p_ccw_side->medium = segments_in[ccw_id].medium[ccw_side]; ASSERT(p_crt_side->medium < scn->nmeds); @@ -1113,6 +1120,15 @@ senc2d_scene_analyze res = RES_MEM_ERR; goto error; } +#ifndef NDEBUG + else { + /* Initialise trgsides to allow assert code */ + size_t i; + FOR_EACH(i, 0, 2 * scn->nusegs) + init_segside(scn->dev->allocator, segsides + i); + } +#endif + /* We create a neighbourhood for every single unique vertex, * regardless the fact it is used by a segment. diff --git a/src/senc2d_scene_analyze_c.h b/src/senc2d_scene_analyze_c.h @@ -37,6 +37,15 @@ struct segside { * front(seg_0), back(seg_0), front(seg_1), back(seg_1), ... */ }; +static FINLINE void +init_segside(struct mem_allocator* alloc, struct segside* data) +{ + int i; + ASSERT(data); (void)alloc; + FOR_EACH(i, 0, 3) data->facing_side_id[i] = SIDE_NULL__; + data->medium = MEDIUM_NULL__; +} + #define DARRAY_NAME side_id #define DARRAY_DATA side_id_t #include <rsys/dynamic_array.h>