Kohi Game Engine
stackarray.h File Reference

This files contains an implementation of a static-sized stack-allocated array. More...

#include "defines.h"

Go to the source code of this file.

Data Structures

struct  stackarray_base
 
struct  stackarray_iterator
 

Macros

#define STACKARRAY_TYPE_NAMED(type, name, len)
 
#define STACKARRAY_TYPE(type, length)   STACKARRAY_TYPE_NAMED(type, type, length)
 

Typedefs

typedef struct stackarray_base stackarray_base
 
typedef struct stackarray_iterator stackarray_iterator
 

Functions

KAPI stackarray_iterator stackarray_iterator_begin (stackarray_base *arr)
 
KAPI stackarray_iterator stackarray_iterator_rbegin (stackarray_base *arr)
 
KAPI b8 stackarray_iterator_end (const stackarray_iterator *it)
 
KAPI void * stackarray_iterator_value (const stackarray_iterator *it)
 
KAPI void stackarray_iterator_next (stackarray_iterator *it)
 
KAPI void stackarray_iterator_prev (stackarray_iterator *it)
 

Detailed Description

This files contains an implementation of a static-sized stack-allocated array.

Author
Travis Vroman (travi.nosp@m.s@ko.nosp@m.hieng.nosp@m.ine..nosp@m.com)

Create an array type for a simple type using: STACKARRAY_TYPE(f64, 4). This would create f64_stackarray_4. Create an array type for "advanced" types, such as strings, like this: STACKARRAY_TYPE_NAMED(const char*, string, 4). This would create string_stackarray_4. See the bottom of this file for examples on how to create more stackarray types.

Version
1.0
Date
2024-08-15

Macro Definition Documentation

◆ STACKARRAY_TYPE

#define STACKARRAY_TYPE (   type,
  length 
)    STACKARRAY_TYPE_NAMED(type, type, length)

◆ STACKARRAY_TYPE_NAMED

#define STACKARRAY_TYPE_NAMED (   type,
  name,
  len 
)
Value:
typedef struct stackarray_##name##_##len { \
stackarray_base base; \
type data[len]; \
stackarray_iterator (*begin)(stackarray_base * arr); \
stackarray_iterator (*rbegin)(stackarray_base * arr); \
} stackarray_##name##_##len; \
\
KINLINE stackarray_##name##_##len stackarray_##name##_##len##_create(void) { \
stackarray_##name##_##len arr; \
kzero_memory(&arr, sizeof(stackarray_##name##_##len)); \
arr.base.p_data = arr.data; \
arr.base.length = len; \
arr.base.stride = sizeof(type); \
return arr; \
} \
\
KINLINE void stackarray_##name##_##len##_destroy(stackarray_##name##_##len* arr) { \
kzero_memory(arr, sizeof(stackarray_##name##_##len)); \
arr->begin = 0; \
arr->rbegin = 0; \
}
KAPI stackarray_iterator stackarray_iterator_begin(stackarray_base *arr)
KAPI stackarray_iterator stackarray_iterator_rbegin(stackarray_base *arr)
Definition: stackarray.h:25

Typedef Documentation

◆ stackarray_base

◆ stackarray_iterator

Function Documentation

◆ stackarray_iterator_begin()

KAPI stackarray_iterator stackarray_iterator_begin ( stackarray_base arr)

◆ stackarray_iterator_end()

KAPI b8 stackarray_iterator_end ( const stackarray_iterator it)

◆ stackarray_iterator_next()

KAPI void stackarray_iterator_next ( stackarray_iterator it)

◆ stackarray_iterator_prev()

KAPI void stackarray_iterator_prev ( stackarray_iterator it)

◆ stackarray_iterator_rbegin()

KAPI stackarray_iterator stackarray_iterator_rbegin ( stackarray_base arr)

◆ stackarray_iterator_value()

KAPI void* stackarray_iterator_value ( const stackarray_iterator it)