From 5bffa4ee793a891237538cb4d18754bed4d43748 Mon Sep 17 00:00:00 2001 From: Ginger Bill Date: Sun, 9 Oct 2016 16:03:23 +0100 Subject: SSA - Dominator Tree Builder --- src/array.cpp | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) (limited to 'src/array.cpp') diff --git a/src/array.cpp b/src/array.cpp index 2e8bf3400..e50863637 100644 --- a/src/array.cpp +++ b/src/array.cpp @@ -18,14 +18,15 @@ struct Array { } }; -template void array_init (Array *array, gbAllocator a, isize init_capacity = 8); -template void array_free (Array *array); -template void array_add (Array *array, T const &t); -template T array_pop (Array *array); -template void array_clear (Array *array); -template void array_reserve (Array *array, isize capacity); -template void array_resize (Array *array, isize count); -template void array_set_capacity(Array *array, isize capacity); +template void array_init (Array *array, gbAllocator a, isize init_capacity = 8); +template Array array_make (T *data, isize count, isize capacity); +template void array_free (Array *array); +template void array_add (Array *array, T const &t); +template T array_pop (Array *array); +template void array_clear (Array *array); +template void array_reserve (Array *array, isize capacity); +template void array_resize (Array *array, isize count); +template void array_set_capacity(Array *array, isize capacity); template @@ -36,9 +37,21 @@ void array_init(Array *array, gbAllocator a, isize init_capacity) { array->capacity = init_capacity; } +template +Array array_make(T *data, isize count, isize capacity) { + Array a = {}; + a.data = data; + a.count = count; + a.capacity = capacity; + return a; +} + + template void array_free(Array *array) { - gb_free(array->allocator, array->data); + if (array->allocator.proc != NULL) { + gb_free(array->allocator, array->data); + } array->count = 0; array->capacity = 0; } -- cgit v1.2.3