[utils] Adding a default small size to all arrays based on a look at malloc/realloc usage

This commit is contained in:
Al
2015-12-09 19:46:05 -05:00
parent 779298360c
commit ab205eff96

View File

@@ -7,17 +7,22 @@
#include "klib/kvec.h" #include "klib/kvec.h"
#define DEFAULT_VECTOR_SIZE 8
// Wrapper around kvec.h to provide dynamically allocated vectors // Wrapper around kvec.h to provide dynamically allocated vectors
#define __VECTOR_BASE(name, type) typedef kvec_t(type) name; \ #define __VECTOR_BASE(name, type) typedef kvec_t(type) name; \
static inline name *name##_new(void) { \ static inline name *name##_new(void) { \
name *array = malloc(sizeof(name)); \ name *array = malloc(sizeof(name)); \
if (array == NULL) return NULL; \ if (array == NULL) return NULL; \
kv_init(*array); \ kv_init(*array); \
kv_resize(type, *array, DEFAULT_VECTOR_SIZE); \
return array; \ return array; \
} \ } \
static inline name *name##_new_size(size_t size) { \ static inline name *name##_new_size(size_t size) { \
name *array = name##_new(); \ name *array = name##_new(); \
kv_resize(type, *array, size); \ if (size > DEFAULT_VECTOR_SIZE) { \
kv_resize(type, *array, size); \
} \
return array; \ return array; \
} \ } \
static inline void name##_push(name *array, type value) { \ static inline void name##_push(name *array, type value) { \