From 0ee72b8dfb23fa16c1bf86cc6b4ac7da8e193af8 Mon Sep 17 00:00:00 2001 From: Al Date: Mon, 31 Aug 2015 14:44:43 -0400 Subject: [PATCH] [math] can only use memset for *_array_new_zeros --- src/vector_math.h | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/vector_math.h b/src/vector_math.h index 66f2d3fd..b69a31f4 100644 --- a/src/vector_math.h +++ b/src/vector_math.h @@ -10,10 +10,23 @@ __VECTOR_BASE(name, type) \ __VECTOR_DESTROY(name, type) \ \ + static inline name *name##_copy(name *vector, size_t n) { \ + name *cpy = name##_new_size(n); \ + memcpy(vector->a, cpy->a, n * sizeof(type)); \ + cpy->n = n; \ + return cpy; \ + } \ + \ + static inline void type##_array_set(type *array, size_t n, type value) { \ + for (int i = 0; i < n; i++) { \ + array[i] = value; \ + } \ + } \ + \ static inline name *name##_new_value(size_t n, type value) { \ name *vector = name##_new_size(n); \ if (vector == NULL) return NULL; \ - memset(vector->a, (type)value, n * sizeof(type)); \ + type##_array_set(vector->a, n, (type)value); \ vector->n = n; \ return vector; \ } \ @@ -23,20 +36,11 @@ } \ \ static inline name *name##_new_zeros(size_t n) { \ + name *vector = name##_new_size(n); \ + memset(vector->a, 0, n * sizeof(type)); \ return name##_new_value(n, (type)0); \ } \ \ - static inline name *name##_copy(name *vector, size_t n) { \ - name *cpy = name##_new_size(n); \ - memcpy(vector->a, cpy->a, n * sizeof(type)); \ - cpy->n = n; \ - return cpy; \ - } \ - \ - static inline void type##_array_set(type *array, size_t n, type value) { \ - memset(array, (type)value, n * sizeof(type)); \ - } \ - \ static inline type type##_array_max(type *array, size_t n) { \ if (n < 1) return (type) 0; \ type val = array[0]; \