48 #define STACKARRAY_TYPE_NAMED(type, name, len) \
49 typedef struct stackarray_##name##_##len { \
50 stackarray_base base; \
52 stackarray_iterator (*begin)(stackarray_base * arr); \
53 stackarray_iterator (*rbegin)(stackarray_base * arr); \
54 } stackarray_##name##_##len; \
56 KINLINE stackarray_##name##_##len stackarray_##name##_##len##_create(void) { \
57 stackarray_##name##_##len arr; \
58 kzero_memory(&arr, sizeof(stackarray_##name##_##len)); \
59 arr.base.p_data = arr.data; \
60 arr.base.length = len; \
61 arr.base.stride = sizeof(type); \
62 arr.begin = stackarray_iterator_begin; \
63 arr.rbegin = stackarray_iterator_rbegin; \
67 KINLINE void stackarray_##name##_##len##_destroy(stackarray_##name##_##len* arr) { \
68 kzero_memory(arr, sizeof(stackarray_##name##_##len)); \
74 #define STACKARRAY_TYPE(type, length) STACKARRAY_TYPE_NAMED(type, type, length)
This file contains global type definitions which are used throughout the entire engine and applicatio...
#define KAPI
Import/export qualifier.
Definition: defines.h:205
unsigned int u32
Unsigned 32-bit integer.
Definition: defines.h:25
_Bool b8
8-bit boolean type
Definition: defines.h:58
signed int i32
Signed 32-bit integer.
Definition: defines.h:39
KAPI void * stackarray_iterator_value(const stackarray_iterator *it)
KAPI stackarray_iterator stackarray_iterator_begin(stackarray_base *arr)
struct stackarray_base stackarray_base
KAPI b8 stackarray_iterator_end(const stackarray_iterator *it)
KAPI void stackarray_iterator_next(stackarray_iterator *it)
KAPI stackarray_iterator stackarray_iterator_rbegin(stackarray_base *arr)
KAPI void stackarray_iterator_prev(stackarray_iterator *it)
struct stackarray_iterator stackarray_iterator
Definition: stackarray.h:25
u32 length
Definition: stackarray.h:26
void * p_data
Definition: stackarray.h:28
u32 stride
Definition: stackarray.h:27
Definition: stackarray.h:31
void(* prev)(struct stackarray_iterator *it)
Definition: stackarray.h:38
void(* next)(struct stackarray_iterator *it)
Definition: stackarray.h:37
stackarray_base * arr
Definition: stackarray.h:32
i32 dir
Definition: stackarray.h:34
b8(* end)(const struct stackarray_iterator *it)
Definition: stackarray.h:35
i32 pos
Definition: stackarray.h:33