summaryrefslogtreecommitdiff
path: root/src/vector.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vector.h')
-rw-r--r--src/vector.h145
1 files changed, 62 insertions, 83 deletions
diff --git a/src/vector.h b/src/vector.h
index 2b58d946..500ebb96 100644
--- a/src/vector.h
+++ b/src/vector.h
@@ -19,7 +19,6 @@
#include <stddef.h>
-#include "allocator.h"
#include "common.h"
#include "config.h"
@@ -33,109 +32,89 @@
* size_t capacity;
* } WabtWidgetVector;
*
- * void wabt_destroy_widget_vector(WabtAllocator*, WabtWidgetVector* vec);
- * WabtWidget* wabt_append_widget(WabtAllocator*, WabtWidgetVector* vec);
- * void wabt_resize_widget_vector(WabtAllocator*, WabtWidgetVector* vec,
- * size_t size);
- * void wabt_reserve_widgets(WabtAllocator*, WabtWidgetVector* vec,
- * size_t desired);
- * void wabt_append_widget_value(WabtAllocator*, WabtWidgetVector* vec,
+ * void wabt_destroy_widget_vector(WabtWidgetVector* vec);
+ * WabtWidget* wabt_append_widget(WabtWidgetVector* vec);
+ * void wabt_resize_widget_vector(WabtWidgetVector* vec, size_t size);
+ * void wabt_reserve_widgets(WabtWidgetVector* vec, size_t desired);
+ * void wabt_append_widget_value(WabtWidgetVector* vec,
* const WabtWidget* value);
- * void wabt_extend_widgets(WabtAllocator*, WabtWidgetVector* dst,
- * const WabtWidgetVector* src);
+ * void wabt_extend_widgets(WabtWidgetVector* dst, const WabtWidgetVector* src);
*/
-#define WABT_DEFINE_VECTOR(name, type) \
- typedef struct type##Vector { \
- type* data; \
- size_t size; \
- size_t capacity; \
- } type##Vector; \
- \
- WABT_EXTERN_C_BEGIN \
- static WABT_INLINE void wabt_destroy_##name##_vector( \
- struct WabtAllocator* allocator, type##Vector* vec) WABT_UNUSED; \
- static WABT_INLINE void wabt_resize_##name##_vector( \
- struct WabtAllocator* allocator, type##Vector* vec, size_t desired) \
- WABT_UNUSED; \
- static WABT_INLINE void wabt_reserve_##name##s( \
- struct WabtAllocator* allocator, type##Vector* vec, size_t desired) \
- WABT_UNUSED; \
- static WABT_INLINE type* wabt_append_##name(struct WabtAllocator* allocator, \
- type##Vector* vec) WABT_UNUSED; \
- static WABT_INLINE void wabt_append_##name##_value( \
- struct WabtAllocator* allocator, type##Vector* vec, const type* value) \
- WABT_UNUSED; \
- static WABT_INLINE void wabt_extend_##name##s( \
- struct WabtAllocator* allocator, type##Vector* dst, \
- const type##Vector* src) WABT_UNUSED; \
- WABT_EXTERN_C_END \
- \
- void wabt_destroy_##name##_vector(struct WabtAllocator* allocator, \
- type##Vector* vec) { \
- wabt_free(allocator, vec->data); \
- vec->data = NULL; \
- vec->size = 0; \
- vec->capacity = 0; \
- } \
- void wabt_resize_##name##_vector(struct WabtAllocator* allocator, \
- type##Vector* vec, size_t size) { \
- wabt_resize_vector(allocator, (void**)&vec->data, &vec->size, \
- &vec->capacity, size, sizeof(type)); \
- } \
- void wabt_reserve_##name##s(struct WabtAllocator* allocator, \
- type##Vector* vec, size_t desired) { \
- wabt_ensure_capacity(allocator, (void**)&vec->data, &vec->capacity, \
- desired, sizeof(type)); \
- } \
- type* wabt_append_##name(struct WabtAllocator* allocator, \
- type##Vector* vec) { \
- return (type*)wabt_append_element(allocator, (void**)&vec->data, \
- &vec->size, &vec->capacity, \
- sizeof(type)); \
- } \
- void wabt_append_##name##_value(struct WabtAllocator* allocator, \
- type##Vector* vec, const type* value) { \
- type* slot = wabt_append_##name(allocator, vec); \
- *slot = *value; \
- } \
- void wabt_extend_##name##s(struct WabtAllocator* allocator, \
- type##Vector* dst, const type##Vector* src) { \
- wabt_extend_elements(allocator, (void**)&dst->data, &dst->size, \
- &dst->capacity, (const void**)&src->data, src->size, \
- sizeof(type)); \
+#define WABT_DEFINE_VECTOR(name, type) \
+ typedef struct type##Vector { \
+ type* data; \
+ size_t size; \
+ size_t capacity; \
+ } type##Vector; \
+ \
+ WABT_EXTERN_C_BEGIN \
+ static WABT_INLINE void wabt_destroy_##name##_vector(type##Vector* vec) \
+ WABT_UNUSED; \
+ static WABT_INLINE void wabt_resize_##name##_vector( \
+ type##Vector* vec, size_t desired) WABT_UNUSED; \
+ static WABT_INLINE void wabt_reserve_##name##s(type##Vector* vec, \
+ size_t desired) WABT_UNUSED; \
+ static WABT_INLINE type* wabt_append_##name(type##Vector* vec) WABT_UNUSED; \
+ static WABT_INLINE void wabt_append_##name##_value( \
+ type##Vector* vec, const type* value) WABT_UNUSED; \
+ static WABT_INLINE void wabt_extend_##name##s( \
+ type##Vector* dst, const type##Vector* src) WABT_UNUSED; \
+ WABT_EXTERN_C_END \
+ \
+ void wabt_destroy_##name##_vector(type##Vector* vec) { \
+ wabt_free(vec->data); \
+ vec->data = NULL; \
+ vec->size = 0; \
+ vec->capacity = 0; \
+ } \
+ void wabt_resize_##name##_vector(type##Vector* vec, size_t size) { \
+ wabt_resize_vector((void**)&vec->data, &vec->size, &vec->capacity, size, \
+ sizeof(type)); \
+ } \
+ void wabt_reserve_##name##s(type##Vector* vec, size_t desired) { \
+ wabt_ensure_capacity((void**)&vec->data, &vec->capacity, desired, \
+ sizeof(type)); \
+ } \
+ type* wabt_append_##name(type##Vector* vec) { \
+ return (type*)wabt_append_element((void**)&vec->data, &vec->size, \
+ &vec->capacity, sizeof(type)); \
+ } \
+ void wabt_append_##name##_value(type##Vector* vec, const type* value) { \
+ type* slot = wabt_append_##name(vec); \
+ *slot = *value; \
+ } \
+ void wabt_extend_##name##s(type##Vector* dst, const type##Vector* src) { \
+ wabt_extend_elements((void**)&dst->data, &dst->size, &dst->capacity, \
+ (const void**)&src->data, src->size, sizeof(type)); \
}
-#define WABT_DESTROY_VECTOR_AND_ELEMENTS(allocator, v, name) \
- { \
- size_t i; \
- for (i = 0; i < (v).size; ++i) \
- wabt_destroy_##name(allocator, &((v).data[i])); \
- wabt_destroy_##name##_vector(allocator, &(v)); \
+#define WABT_DESTROY_VECTOR_AND_ELEMENTS(v, name) \
+ { \
+ size_t i; \
+ for (i = 0; i < (v).size; ++i) \
+ wabt_destroy_##name(&((v).data[i])); \
+ wabt_destroy_##name##_vector(&(v)); \
}
WABT_EXTERN_C_BEGIN
-void wabt_ensure_capacity(struct WabtAllocator*,
- void** data,
+void wabt_ensure_capacity(void** data,
size_t* capacity,
size_t desired_size,
size_t elt_byte_size);
-void wabt_resize_vector(struct WabtAllocator*,
- void** data,
+void wabt_resize_vector(void** data,
size_t* size,
size_t* capacity,
size_t desired_size,
size_t elt_byte_size);
-void* wabt_append_element(struct WabtAllocator*,
- void** data,
+void* wabt_append_element(void** data,
size_t* size,
size_t* capacity,
size_t elt_byte_size);
-void wabt_extend_elements(struct WabtAllocator*,
- void** dst,
+void wabt_extend_elements(void** dst,
size_t* dst_size,
size_t* dst_capacity,
const void** src,