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:
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;
};