commit 37d6b4949b911e8612b6afae4389d815cd3edda6
parent 17ac410c1412561a16ce03c57cd9192c12acbab6
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Wed, 29 Mar 2017 16:18:25 +0200
Merge remote-tracking branch 'origin/develop' into feature_outputs
Diffstat:
4 files changed, 39 insertions(+), 1 deletion(-)
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
@@ -49,7 +49,7 @@ rcmake_append_runtime_dirs(_runtime_dirs RSys Star3D StarCPR StarSF StarSP)
################################################################################
set(VERSION_MAJOR 0)
set(VERSION_MINOR 1)
-set(VERSION_PATCH 0)
+set(VERSION_PATCH 1)
set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
set(SSOL_FILES_SRC
diff --git a/src/ssol.h b/src/ssol.h
@@ -811,6 +811,12 @@ ssol_instance_set_receiver
const int mask, /* Combination of ssol_side_flag */
const int per_primitive); /* Enable the per primitive integration */
+SSOL_API res_T
+ssol_instance_is_receiver
+ (struct ssol_instance* instance,
+ int* mask, /* Combination of ssol_side_flag */
+ int* per_primitive);
+
/* Define whether or not the instance is sampled or not. By default an instance
* is sampled. */
SSOL_API res_T
diff --git a/src/ssol_instance.c b/src/ssol_instance.c
@@ -167,6 +167,16 @@ ssol_instance_set_receiver
}
res_T
+ssol_instance_is_receiver
+ (struct ssol_instance* instance, int* mask, int* per_primitive)
+{
+ if(!instance || !mask || !per_primitive) return RES_BAD_ARG;
+ *mask = instance->receiver_mask;
+ *per_primitive = instance->receiver_per_primitive;
+ return RES_OK;
+}
+
+res_T
ssol_instance_sample
(struct ssol_instance* instance,
const int sample)
diff --git a/src/test_ssol_instance.c b/src/test_ssol_instance.c
@@ -39,6 +39,7 @@ main(int argc, char** argv)
size_t n;
unsigned i, count;
uint32_t id, id1;
+ int mask, prim;
(void) argc, (void) argv;
mem_init_proxy_allocator(&allocator, &mem_default_allocator);
@@ -84,6 +85,27 @@ main(int argc, char** argv)
CHECK(ssol_instance_set_receiver(NULL, 0, 0), RES_BAD_ARG);
CHECK(ssol_instance_set_receiver(instance, 0, 0), RES_OK);
+
+ CHECK(ssol_instance_is_receiver(NULL, NULL, NULL), RES_BAD_ARG);
+ CHECK(ssol_instance_is_receiver(instance, NULL, NULL), RES_BAD_ARG);
+ CHECK(ssol_instance_is_receiver(NULL, &mask, NULL), RES_BAD_ARG);
+ CHECK(ssol_instance_is_receiver(instance, &mask, NULL), RES_BAD_ARG);
+ CHECK(ssol_instance_is_receiver(NULL, NULL, &prim), RES_BAD_ARG);
+ CHECK(ssol_instance_is_receiver(instance, NULL, &prim), RES_BAD_ARG);
+ CHECK(ssol_instance_is_receiver(NULL, &mask, &prim), RES_BAD_ARG);
+ CHECK(ssol_instance_is_receiver(instance, &mask, &prim), RES_OK);
+ CHECK(mask, 0);
+ CHECK(prim, 0);
+
+ CHECK(ssol_instance_set_receiver(instance, SSOL_FRONT, 0), RES_OK);
+ CHECK(ssol_instance_is_receiver(instance, &mask, &prim), RES_OK);
+ CHECK(mask, SSOL_FRONT);
+ CHECK(prim, 0);
+ CHECK(ssol_instance_set_receiver(instance, SSOL_FRONT|SSOL_BACK, 1), RES_OK);
+ CHECK(ssol_instance_is_receiver(instance, &mask, &prim), RES_OK);
+ CHECK(mask, SSOL_FRONT|SSOL_BACK);
+ CHECK(prim, 1);
+
CHECK(ssol_instance_sample(NULL, 0), RES_BAD_ARG);
CHECK(ssol_instance_sample(instance, 0), RES_OK);
CHECK(ssol_instance_sample(instance, 1), RES_OK);