star-cad

Geometric operators for computer-aided design
git clone git://git.meso-star.fr/star-cad.git
Log | Files | Refs | README | LICENSE

commit 98263846262da3b902622c5c53920e822eeb7961
parent 9a934b6abffb7b5f7190174ce7d0f42ffc2b8cc8
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Fri, 15 Jul 2022 18:22:45 +0200

Remove useless scad id for geometries

Diffstat:
Msrc/scad_geometry.c | 45++++++++++-----------------------------------
Msrc/scad_geometry.h | 1-
Msrc/scad_scene.c | 14++++++--------
Msrc/scad_scene.h | 7-------
4 files changed, 16 insertions(+), 51 deletions(-)

diff --git a/src/scad_geometry.c b/src/scad_geometry.c @@ -34,7 +34,6 @@ static res_T scad_geometry_create (struct scad_scene* scene, const char* name, - const unsigned scad_ID, struct scad_geometry** out_geometry) { res_T res = RES_OK; @@ -55,11 +54,7 @@ scad_geometry_create str_init(scene->device->allocator, &geom->name); geom->scene = scene; - geom->scad_ID = scad_ID; scene->device->need_synchro = 1; - ASSERT(!htable_geometries_find(&scene->attached_geometry, &geom->scad_ID)); - ERR(htable_geometries_set(&scene->attached_geometry, &geom->scad_ID, - &geom)); if(name) { ERR(str_set(&geom->name, name)); ERR(htable_names_set(&scene->geometry_names, &name, &geom)); @@ -144,7 +139,6 @@ scad_scene_add_box struct scad_geometry** out_geometry) { int ierr, gmsh_ID; - unsigned scad_ID; struct scad_geometry* geom = NULL; res_T res = RES_OK; @@ -157,8 +151,7 @@ scad_scene_add_box gmsh_ID = gmshModelOccAddBox(SPLIT3(xyz), SPLIT3(dxdydz), -1, &ierr); ERR(gmsh_err_to_res_T(ierr)); - scad_ID = scene->current_ID++; - ERR(scad_geometry_create(scene, name, scad_ID, &geom)); + ERR(scad_geometry_create(scene, name, &geom)); geom->gmsh_dimTags_n = 2; geom->gmsh_dimTags = malloc(geom->gmsh_dimTags_n * sizeof(int)); if(! geom->gmsh_dimTags_n) { @@ -190,7 +183,6 @@ scad_scene_add_cylinder struct scad_geometry** out_geometry) { int ierr, gmsh_ID; - unsigned scad_ID; struct scad_geometry* geom = NULL; res_T res = RES_OK; @@ -204,8 +196,7 @@ scad_scene_add_cylinder &ierr); ERR(gmsh_err_to_res_T(ierr)); - scad_ID = scene->current_ID++; - ERR(scad_geometry_create(scene, name, scad_ID, &geom)); + ERR(scad_geometry_create(scene, name, &geom)); geom->gmsh_dimTags_n = 2; geom->gmsh_dimTags = malloc(geom->gmsh_dimTags_n * sizeof(int)); if(! geom->gmsh_dimTags_n) { @@ -235,7 +226,6 @@ scad_scene_add_sphere struct scad_geometry** out_geometry) { int ierr, gmsh_ID; - unsigned scad_ID; struct scad_geometry* geom = NULL; res_T res = RES_OK; @@ -248,8 +238,7 @@ scad_scene_add_sphere gmsh_ID = gmshModelOccAddSphere(SPLIT3(xyz), rad, -1, -PI/2, PI/2, 2*PI, &ierr); ERR(gmsh_err_to_res_T(ierr)); - scad_ID = scene->current_ID++; - ERR(scad_geometry_create(scene, name, scad_ID, &geom)); + ERR(scad_geometry_create(scene, name, &geom)); geom->gmsh_dimTags_n = 2; geom->gmsh_dimTags = malloc(geom->gmsh_dimTags_n * sizeof(int)); if(! geom->gmsh_dimTags_n) { @@ -281,7 +270,6 @@ scad_scene_create_group { int ierr, gid; struct scad_geometry* geom = NULL; - unsigned scad_id; size_t sz, i, n; int* ids = NULL; res_T res = RES_OK; @@ -317,8 +305,7 @@ scad_scene_create_group ASSERT(gid > 0); ERR(gmsh_err_to_res_T(ierr)); - scad_id = scene->current_ID++; - ERR(scad_geometry_create(scene, name, scad_id, &geom)); + ERR(scad_geometry_create(scene, name, &geom)); geom->is_group = gid; geom->group_dim = dim; geom->gmsh_dimTags_n = 2 * sz; @@ -364,7 +351,6 @@ scad_scene_fuse_geometries int* data1; int* data2; int ierr = 0; - unsigned scad_id; struct scad_geometry* geom = NULL; res_T res = RES_OK; @@ -387,8 +373,7 @@ scad_scene_fuse_geometries &mapnn, -1, remove, remove, &ierr); ERR(gmsh_err_to_res_T(ierr)); - scad_id = scene->current_ID++; - ERR(scad_geometry_create(scene, name, scad_id, &geom)); + ERR(scad_geometry_create(scene, name, &geom)); geom->gmsh_dimTags_n = tagoutn; geom->gmsh_dimTags = tagout; if(remove) { /* FIXME: not sure of this! */ @@ -425,7 +410,6 @@ scad_scene_cut_geometries int* data1; int* data2; int ierr = 0; - unsigned scad_id; struct scad_geometry* geom = NULL; res_T res = RES_OK; @@ -448,8 +432,7 @@ scad_scene_cut_geometries &mapnn, -1, remove, remove, &ierr); ERR(gmsh_err_to_res_T(ierr)); - scad_id = scene->current_ID++; - ERR(scad_geometry_create(scene, name, scad_id, &geom)); + ERR(scad_geometry_create(scene, name, &geom)); geom->gmsh_dimTags_n = tagoutn; geom->gmsh_dimTags = tagout; if(remove) { /* FIXME: not sure of this! */ @@ -486,7 +469,6 @@ scad_scene_intersect_geometries int* data1; int* data2; int ierr = 0; - unsigned scad_id; struct scad_geometry* geom = NULL; res_T res = RES_OK; @@ -509,8 +491,7 @@ scad_scene_intersect_geometries &mapnn, -1, remove, remove, &ierr); ERR(gmsh_err_to_res_T(ierr)); - scad_id = scene->current_ID++; - ERR(scad_geometry_create(scene, name, scad_id, &geom)); + ERR(scad_geometry_create(scene, name, &geom)); geom->gmsh_dimTags_n = tagoutn; geom->gmsh_dimTags = tagout; if(remove) { /* FIXME: not sure of this! */ @@ -547,7 +528,6 @@ scad_scene_geometries_common_boundaries int* data1; int* data2; int ierr = 0; - unsigned scad_id; int* bound1; int* bound2; size_t n1, n2; @@ -577,8 +557,7 @@ scad_scene_geometries_common_boundaries &mapn, &mapnn, -1, 0/*no delete*/, 0/*no delete*/, &ierr); ERR(gmsh_err_to_res_T(ierr)); - scad_id = scene->current_ID++; - ERR(scad_geometry_create(scene, name, scad_id, &geom)); + ERR(scad_geometry_create(scene, name, &geom)); geom->gmsh_dimTags_n = tagoutn; geom->gmsh_dimTags = tagout; if(remove) { /* FIXME: not sure of this! */ @@ -681,7 +660,6 @@ scad_scene_geometries_fragment int* data1; int* data2; int ierr = 0; - unsigned scad_id; struct scad_geometry* geom = NULL; res_T res = RES_OK; @@ -704,8 +682,7 @@ scad_scene_geometries_fragment &mapnn, -1, remove, remove, &ierr); ERR(gmsh_err_to_res_T(ierr)); - scad_id = scene->current_ID++; - ERR(scad_geometry_create(scene, name, scad_id, &geom)); + ERR(scad_geometry_create(scene, name, &geom)); geom->gmsh_dimTags_n = tagoutn; geom->gmsh_dimTags = tagout; if(remove) { /* FIXME: not sure of this! */ @@ -733,7 +710,6 @@ scad_scene_geometry_boundary size_t tagoutn, sz; int* data; int ierr = 0; - unsigned scad_id; res_T res = RES_OK; if(!scene || !geom || !out_geometry || geom->scene != scene) { @@ -750,8 +726,7 @@ size_t tagoutn, sz; gmshModelGetBoundary(data, sz, &tagout, &tagoutn, 1, 0, 0, &ierr); ERR(gmsh_err_to_res_T(ierr)); - scad_id = scene->current_ID++; - ERR(scad_geometry_create(scene, name, scad_id, &geom)); + ERR(scad_geometry_create(scene, name, &geom)); geom->gmsh_dimTags_n = tagoutn; geom->gmsh_dimTags = tagout; diff --git a/src/scad_geometry.h b/src/scad_geometry.h @@ -28,7 +28,6 @@ struct scad_geometry { size_t gmsh_dimTags_n; struct scad_scene* scene; struct str name; - unsigned scad_ID; int is_group, group_dim; }; diff --git a/src/scad_scene.c b/src/scad_scene.c @@ -45,21 +45,20 @@ scene_release(ref_T* ref) { struct scad_scene* scn; struct mem_allocator* allocator; - struct htable_geometries_iterator it, end; + struct htable_names_iterator it, end; int ierr = 0; res_T res; ASSERT(ref); scn = CONTAINER_OF(ref, struct scad_scene, ref); allocator = scn->device->allocator; - htable_geometries_begin(&scn->attached_geometry, &it); - htable_geometries_end(&scn->attached_geometry, &end); - while(!htable_geometries_iterator_eq(&it, &end)) { - struct scad_geometry* geom = *htable_geometries_iterator_data_get(&it); + htable_names_begin(&scn->geometry_names, &it); + htable_names_end(&scn->geometry_names, &end); + while(!htable_names_iterator_eq(&it, &end)) { + struct scad_geometry* geom = *htable_names_iterator_data_get(&it); ASSERT(geom->scene == scn); SCAD(geometry_release(geom)); - htable_geometries_iterator_next(&it); + htable_names_iterator_next(&it); } - htable_geometries_release(&scn->attached_geometry); htable_names_release(&scn->geometry_names); res = device_set_current_scene(scn); ASSERT(res == RES_OK); (void)res; @@ -97,7 +96,6 @@ scad_scene_create res = RES_MEM_ERR; goto error; } - htable_geometries_init(device->allocator, &scn->attached_geometry); htable_names_init(device->allocator, &scn->geometry_names); scn->device = device; set_name(scn); diff --git a/src/scad_scene.h b/src/scad_scene.h @@ -24,11 +24,6 @@ struct scad_geometry; #include <rsys/ref_count.h> #include <rsys/hash_table.h> -#define HTABLE_NAME geometries -#define HTABLE_DATA struct scad_geometry* -#define HTABLE_KEY unsigned /* scad ID */ -#include <rsys/hash_table.h> - static INLINE char name_eq(char* const* a, char* const* b) { @@ -44,10 +39,8 @@ name_eq(char* const* a, char* const* b) struct scad_scene { struct scad_device* device; - struct htable_geometries attached_geometry; struct htable_names geometry_names; char name[8]; - unsigned current_ID; ref_T ref; };