commit 00a867bc704ef1aa020f5620809c1b53e78343c7
parent f36753feec820985af069759ffb8459110783e37
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Mon, 20 Aug 2018 16:05:03 +0200
Fix type confusion (uint VS enclosure_id)
Diffstat:
3 files changed, 28 insertions(+), 22 deletions(-)
diff --git a/src/senc_descriptor.c b/src/senc_descriptor.c
@@ -36,7 +36,7 @@ descriptor_release(ref_T * ref)
scn = desc->scene;
darray_triangle_enc_release(&desc->triangles_enc);
darray_enclosure_release(&desc->enclosures);
- darray_ids_array_release(&desc->ids_array_by_medium);
+ darray_enc_ids_array_release(&desc->enc_ids_array_by_medium);
MEM_RM(scn->dev->allocator, desc);
SENC(scene_ref_put(scn));
@@ -58,8 +58,9 @@ descriptor_create(struct senc_scene* scn)
ref_init(&desc->ref);
darray_triangle_enc_init(scn->dev->allocator, &desc->triangles_enc);
darray_enclosure_init(scn->dev->allocator, &desc->enclosures);
- darray_ids_array_init(scn->dev->allocator, &desc->ids_array_by_medium);
- OK(darray_ids_array_resize(&desc->ids_array_by_medium, scn->nmeds));
+ darray_enc_ids_array_init(scn->dev->allocator,
+ &desc->enc_ids_array_by_medium);
+ OK(darray_enc_ids_array_resize(&desc->enc_ids_array_by_medium, scn->nmeds));
/* Enclosure 0 is always defined for infinite */
OK(darray_enclosure_resize(&desc->enclosures, 1));
desc->enclosures_count = 1;
@@ -113,13 +114,13 @@ senc_descriptor_get_enclosure_count_by_medium
unsigned* count)
{
size_t tmp;
- const struct darray_uint* ids;
+ const struct darray_enc_id* enc_ids;
if(!desc || !count || imed >= desc->scene->nmeds)
return RES_BAD_ARG;
- ASSERT(darray_ids_array_size_get(&desc->ids_array_by_medium)
+ ASSERT(darray_enc_ids_array_size_get(&desc->enc_ids_array_by_medium)
== desc->scene->nmeds);
- ids = darray_ids_array_cdata_get(&desc->ids_array_by_medium) + imed;
- tmp = darray_uint_size_get(ids);
+ enc_ids = darray_enc_ids_array_cdata_get(&desc->enc_ids_array_by_medium) + imed;
+ tmp = darray_enc_id_size_get(enc_ids);
ASSERT(tmp < UINT_MAX); /* API type */
*count = (unsigned)tmp;
return RES_OK;
@@ -148,12 +149,13 @@ senc_descriptor_get_enclosure_by_medium
const unsigned idx,
struct senc_enclosure** out_enc)
{
- const struct darray_uint* ids;
+ const struct darray_enc_id* enc_ids;
unsigned index;
if(!desc || imed >= desc->scene->nmeds || !out_enc) return RES_BAD_ARG;
- ids = darray_ids_array_cdata_get(&desc->ids_array_by_medium) + imed;
- if(idx >= darray_uint_size_get(ids)) return RES_BAD_ARG;
- index = darray_uint_cdata_get(ids)[idx];
+ enc_ids =
+ darray_enc_ids_array_cdata_get(&desc->enc_ids_array_by_medium) + imed;
+ if(idx >= darray_enc_id_size_get(enc_ids)) return RES_BAD_ARG;
+ index = darray_enc_id_cdata_get(enc_ids)[idx];
return senc_descriptor_get_enclosure(desc, index, out_enc);
}
diff --git a/src/senc_descriptor_c.h b/src/senc_descriptor_c.h
@@ -18,7 +18,6 @@
#include <rsys/ref_count.h>
#include <rsys/dynamic_array.h>
-#include <rsys/dynamic_array_uint.h>
#include "senc.h"
#include "senc_enclosure_data.h"
@@ -73,12 +72,16 @@ triangle_enc_init(struct mem_allocator* alloc, struct triangle_enc* trg) {
#define DARRAY_FUNCTOR_COPY_AND_RELEASE enclosure_data_copy_and_release
#include <rsys/dynamic_array.h>
-#define DARRAY_NAME ids_array
-#define DARRAY_DATA struct darray_uint
-#define DARRAY_FUNCTOR_INIT darray_uint_init
-#define DARRAY_FUNCTOR_COPY darray_uint_copy
-#define DARRAY_FUNCTOR_RELEASE darray_uint_release
-#define DARRAY_FUNCTOR_COPY_AND_RELEASE darray_uint_copy_and_release
+#define DARRAY_NAME enc_id
+#define DARRAY_DATA enclosure_id_t
+#include <rsys/dynamic_array.h>
+
+#define DARRAY_NAME enc_ids_array
+#define DARRAY_DATA struct darray_enc_id
+#define DARRAY_FUNCTOR_INIT darray_enc_id_init
+#define DARRAY_FUNCTOR_COPY darray_enc_id_copy
+#define DARRAY_FUNCTOR_RELEASE darray_enc_id_release
+#define DARRAY_FUNCTOR_COPY_AND_RELEASE darray_enc_id_copy_and_release
#include <rsys/dynamic_array.h>
struct senc_descriptor {
@@ -88,7 +91,7 @@ struct senc_descriptor {
struct darray_triangle_enc triangles_enc;
/* Store enclosures */
struct darray_enclosure enclosures;
- struct darray_ids_array ids_array_by_medium;
+ struct darray_enc_ids_array enc_ids_array_by_medium;
trg_id_t triangle_count;
vrtx_id_t vertices_count;
diff --git a/src/senc_scene_analyze.c b/src/senc_scene_analyze.c
@@ -992,7 +992,7 @@ build_result
const enclosure_id_t e = (enclosure_id_t)ee;
struct enclosure_data* enc = enclosures + e;
const struct cc_descriptor* current = cc_descriptors[enc->first_component];
- struct darray_uint* ids_by_medium;
+ struct darray_enc_id* enc_ids_by_medium;
trg_id_t fst_idx = 0;
trg_id_t sgd_idx = enc->side_count;
trg_id_t t;
@@ -1010,11 +1010,12 @@ build_result
= (unsigned)current->medium; /* Back to API type */
ASSERT(enc->header.enclosed_medium < desc->scene->nmeds);
- ids_by_medium = darray_ids_array_data_get(&desc->ids_array_by_medium)
+ enc_ids_by_medium =
+ darray_enc_ids_array_data_get(&desc->enc_ids_array_by_medium)
+ current->medium;
#pragma omp critical
{
- tmp_res = darray_uint_push_back(ids_by_medium, &e);
+ tmp_res = darray_enc_id_push_back(enc_ids_by_medium, &e);
}
if(tmp_res != RES_OK) *res = tmp_res;
if(*res != RES_OK) continue;