diff options
author | sanine <sanine.not@pm.me> | 2023-01-03 23:31:48 -0600 |
---|---|---|
committer | sanine <sanine.not@pm.me> | 2023-01-03 23:31:48 -0600 |
commit | 13a7c902c051fa8da1e476687c17bb5431d258e1 (patch) | |
tree | ec75993aba0b8264f0dffd03eee2191020b206be /src/geometry | |
parent | e68e6d4e433fe42a0c6df18b2f2d7990b91b7cd6 (diff) |
add kai_expand_array
Diffstat (limited to 'src/geometry')
-rw-r--r-- | src/geometry/CMakeLists.txt | 7 | ||||
-rw-r--r-- | src/geometry/geometry.c | 71 | ||||
-rw-r--r-- | src/geometry/geometry.h | 20 | ||||
-rw-r--r-- | src/geometry/geometry.test.c | 49 |
4 files changed, 0 insertions, 147 deletions
diff --git a/src/geometry/CMakeLists.txt b/src/geometry/CMakeLists.txt deleted file mode 100644 index e1a0995..0000000 --- a/src/geometry/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -project(kalmia) - -target_sources(kalmia PUBLIC geometry.c) - -if (KALMIA_BUILD_TESTS) - target_sources(kalmia-tests PUBLIC geometry.test.c) -endif() diff --git a/src/geometry/geometry.c b/src/geometry/geometry.c deleted file mode 100644 index be9ce25..0000000 --- a/src/geometry/geometry.c +++ /dev/null @@ -1,71 +0,0 @@ -#include <string.h> -#include <stdlib.h> - -#include <kalmia.h> -#include <ezxml.h> -#include "geometry.h" - - -static int copy_str(char **dest, const char *src) -{ - if (src == NULL) { - *dest = NULL; - return 0; - } - - size_t len = strlen(src)+1; - *dest = malloc(len * sizeof(char)); - if (*dest == NULL) - return -1; - strncpy(*dest, src, len); - return 0; -} - - -ka_float_array_t * kai_parse_float_array(ezxml_t tag) -{ - if (strcmp(ezxml_name(tag), "float_array") != 0) { - /* wrong tag type */ - return NULL; - } - - /* allocate struct */ - ka_float_array_t *a = malloc(sizeof(ka_float_array_t)); - if (a == NULL) return NULL; - - /* inspect attributes */ - const char *count_str = ezxml_attr(tag, "count"); - a->count = strtol(count_str, NULL, 10); - - const char *id_str = ezxml_attr(tag, "id"); - if (copy_str(&(a->id), id_str) < 0) { - free(a); - return NULL; - } - - /* parse data */ - a->array = malloc(a->count * sizeof(ka_real_t)); - if (a->array == NULL) { - free(a->id); - free(a); - return NULL; - } - - char *data = ezxml_txt(tag); - char *end; - int i; - for (i=0; i<a->count; i++) { - a->array[i] = KA_STR_TO_REAL(data, &end); - data = end; - } - - return a; -} - - -void kai_free_float_array(ka_float_array_t *a) -{ - free(a->array); - free(a->id); - free(a); -} diff --git a/src/geometry/geometry.h b/src/geometry/geometry.h deleted file mode 100644 index 971bd1b..0000000 --- a/src/geometry/geometry.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef KALMIA_GEOMETRY_H -#define KALMIA_GEOMETRY_H - -#include <kalmia.h> -#include <ezxml.h> - -typedef struct { - char *id; - size_t count; - ka_real_t *array; -} ka_float_array_t; - - -/* allocate a new float array and parse an xml tag into it */ -ka_float_array_t * kai_parse_float_array(ezxml_t tag); - -/* free a loaded float array */ -void kai_free_float_array(ka_float_array_t *array); - -#endif diff --git a/src/geometry/geometry.test.c b/src/geometry/geometry.test.c deleted file mode 100644 index f400540..0000000 --- a/src/geometry/geometry.test.c +++ /dev/null @@ -1,49 +0,0 @@ -#include <string.h> -#include <math.h> -#include <kalmia.h> -#include "test/test.h" -#include "geometry.h" - - -void parse_float_array(); - - -void suite_geometry() -{ - lily_run_test(parse_float_array); -} - - -void parse_float_array() -{ - char str[1024]; - strncpy( - str, - "<float_array id=\"box-Pos-array\" count=\"24\">\n" - " -0.5 0.5 0.5\n" - " 0.5 0.5 0.5\n" - " -0.5 -0.5 0.5\n" - " 0.5 -0.5 0.5\n" - " -0.5 0.5 -0.5\n" - " 0.5 0.5 -0.5\n" - " -0.5 -0.5 -0.5\n" - " 0.5 -0.5 -0.5\n" - "</float_array>\n", - 1024 - ); - ezxml_t tag = ezxml_parse_str(str, strlen(str)); - - ka_float_array_t *a = kai_parse_float_array(tag); - ezxml_free(tag); - - lily_assert_not_null(a); - lily_assert_string_equal(a->id, "box-Pos-array"); - lily_assert_int_equal(a->count, 24); - - int i; - for (i=0; i<24; i++) { - lily_assert_float_equal(fabs(a->array[i]), 0.5, 1e-3); - } - - kai_free_float_array(a); -} |