diff options
| author | Ginger Bill <bill@gingerbill.org> | 2016-10-09 16:03:23 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2016-10-09 16:03:23 +0100 |
| commit | 5bffa4ee793a891237538cb4d18754bed4d43748 (patch) | |
| tree | eff90ab481be282de32447c69ae40941b2053221 /src/array.cpp | |
| parent | 2e0b260d3aecb41f2168d6d0481d75897b5763f5 (diff) | |
SSA - Dominator Tree Builder
Diffstat (limited to 'src/array.cpp')
| -rw-r--r-- | src/array.cpp | 31 |
1 files changed, 22 insertions, 9 deletions
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 <typename T> void array_init (Array<T> *array, gbAllocator a, isize init_capacity = 8); -template <typename T> void array_free (Array<T> *array); -template <typename T> void array_add (Array<T> *array, T const &t); -template <typename T> T array_pop (Array<T> *array); -template <typename T> void array_clear (Array<T> *array); -template <typename T> void array_reserve (Array<T> *array, isize capacity); -template <typename T> void array_resize (Array<T> *array, isize count); -template <typename T> void array_set_capacity(Array<T> *array, isize capacity); +template <typename T> void array_init (Array<T> *array, gbAllocator a, isize init_capacity = 8); +template <typename T> Array<T> array_make (T *data, isize count, isize capacity); +template <typename T> void array_free (Array<T> *array); +template <typename T> void array_add (Array<T> *array, T const &t); +template <typename T> T array_pop (Array<T> *array); +template <typename T> void array_clear (Array<T> *array); +template <typename T> void array_reserve (Array<T> *array, isize capacity); +template <typename T> void array_resize (Array<T> *array, isize count); +template <typename T> void array_set_capacity(Array<T> *array, isize capacity); template <typename T> @@ -37,8 +38,20 @@ void array_init(Array<T> *array, gbAllocator a, isize init_capacity) { } template <typename T> +Array<T> array_make(T *data, isize count, isize capacity) { + Array<T> a = {}; + a.data = data; + a.count = count; + a.capacity = capacity; + return a; +} + + +template <typename T> void array_free(Array<T> *array) { - gb_free(array->allocator, array->data); + if (array->allocator.proc != NULL) { + gb_free(array->allocator, array->data); + } array->count = 0; array->capacity = 0; } |