+++ /dev/null
-/*
- * Copyright © 2015 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Jason Ekstrand (jason@jlekstrand.net)
- *
- */
-
-#ifndef NIR_ARRAY_H
-#define NIR_ARRAY_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
- void *mem_ctx;
- size_t size;
- size_t alloc;
- void *data;
-} nir_array;
-
-static inline void
-nir_array_init(nir_array *arr, void *mem_ctx)
-{
- arr->mem_ctx = mem_ctx;
- arr->size = 0;
- arr->alloc = 0;
- arr->data = NULL;
-}
-
-static inline void
-nir_array_fini(nir_array *arr)
-{
- if (arr->mem_ctx)
- ralloc_free(arr->data);
- else
- free(arr->data);
-}
-
-#define NIR_ARRAY_INITIAL_SIZE 64
-
-/* Increments the size of the array by the given ammount and returns a
- * pointer to the beginning of the newly added space.
- */
-static inline void *
-nir_array_grow(nir_array *arr, size_t additional)
-{
- size_t new_size = arr->size + additional;
- if (new_size > arr->alloc) {
- if (arr->alloc == 0)
- arr->alloc = NIR_ARRAY_INITIAL_SIZE;
-
- while (new_size > arr->alloc)
- arr->alloc *= 2;
-
- if (arr->mem_ctx)
- arr->data = reralloc_size(arr->mem_ctx, arr->data, arr->alloc);
- else
- arr->data = realloc(arr->data, arr->alloc);
- }
-
- void *ptr = (void *)((char *)arr->data + arr->size);
- arr->size = new_size;
-
- return ptr;
-}
-
-#define nir_array_add(arr, type, elem) \
- *(type *)nir_array_grow(arr, sizeof(type)) = (elem)
-
-#define nir_array_foreach(arr, type, elem) \
- for (type *elem = (type *)(arr)->data; \
- elem < (type *)((char *)(arr)->data + (arr)->size); elem++)
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* NIR_ARRAY_H */