solstice

Compute collected power and efficiencies of a solar plant
git clone git://git.meso-star.com/solstice.git
Log | Files | Refs | README | LICENSE

commit 4496b673300ab4e5504e6ec302bc855b8c900832
parent 213e4244f521327d0dbb6db97ccf2b858d57201e
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Thu, 17 Nov 2016 16:43:41 +0100

Implement the geometry getters

Diffstat:
Msrc/solstice_geometry.h | 15+++++++++++++++
Msrc/solstice_parser.c | 9+++++++++
Msrc/solstice_parser.h | 5+++++
Msrc/test_solstice_parser2.c | 2++
4 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/src/solstice_geometry.h b/src/solstice_geometry.h @@ -71,4 +71,19 @@ solstice_geometry_copy_and_release return darray_object_id_copy_and_release(&dst->objects, &src->objects); } +static FINLINE size_t +solstice_geometry_get_objects_count(const struct solstice_geometry* geom) +{ + ASSERT(geom); + return darray_object_id_size_get(&geom->objects); +} + +static FINLINE struct solstice_object_id +solstice_geometry_get_object + (const struct solstice_geometry* geom, const size_t i) +{ + ASSERT(geom && i < solstice_geometry_get_objects_count(geom)); + return darray_object_id_cdata_get(&geom->objects)[i]; +} + #endif /* SOLSTICE_GEOMETRY_H */ diff --git a/src/solstice_parser.c b/src/solstice_parser.c @@ -2772,6 +2772,15 @@ solstice_parser_get_entity return darray_entity_cdata_get(&parser->entities) + entity.i; } +const struct solstice_geometry* +solstice_parser_get_geometry + (const struct solstice_parser* parser, + const struct solstice_geometry_id geom) +{ + ASSERT(parser && geom.i < darray_geometry_size_get(&parser->geometries)); + return darray_geometry_cdata_get(&parser->geometries) + geom.i; +} + void solstice_parser_entity_iterator_begin (struct solstice_parser* parser, diff --git a/src/solstice_parser.h b/src/solstice_parser.h @@ -58,6 +58,11 @@ solstice_parser_get_entity (const struct solstice_parser* parser, const struct solstice_entity_id entity); +extern LOCAL_SYM const struct solstice_geometry* +solstice_parser_get_geometry + (const struct solstice_parser* parser, + const struct solstice_geometry_id geom); + extern LOCAL_SYM void solstice_parser_entity_iterator_begin (struct solstice_parser* parser, diff --git a/src/test_solstice_parser2.c b/src/test_solstice_parser2.c @@ -24,6 +24,7 @@ main(int argc, char** argv) struct solstice_entity_iterator it, end; struct solstice_entity_id entity_id; const struct solstice_entity* entity, *entity1, *entity2; + const struct solstice_geometry* geom; double tmp[3]; FILE* stream; @@ -73,6 +74,7 @@ main(int argc, char** argv) CHECK(d3_eq(entity->rotation, d3(tmp, 4, 5, 6)), 1); CHECK(strcmp("lvl0", str_cget(&entity->name)), 0); CHECK(solstice_entity_get_children_count(entity), 2); + geom = solstice_parser_get_geometry(parser, entity->geometry); entity_id = solstice_entity_get_child(entity, 0); entity1 = solstice_parser_get_entity(parser, entity_id);