axle OS
x86_32 UNIX-like hobby OS
array_m.h
1 #ifndef STD_ARRAY_M_H
2 #define STD_ARRAY_M_H
3 
4 #include "std_base.h"
5 #include "panic.h"
6 #include <stdint.h>
7 
8 __BEGIN_DECLS
9 
10 #define ARR_NOT_FOUND -1
11 
12 typedef void* type_t;
13 
14 typedef struct {
15  type_t* array;
16  int32_t size;
17  int32_t max_size;
18 } array_m;
19 
20 //create mutable array
21 STDAPI array_m* array_m_create(int32_t max_size);
22 STDAPI array_m* array_m_place(void* addr, int32_t max_size);
23 
24 //destroy mutable array
25 STDAPI void array_m_destroy(array_m* array);
26 
27 //add item to array
28 STDAPI void array_m_insert(array_m* array, type_t item);
29 
30 //lookup item at index i
31 //STDAPI type_t array_m_lookup(array_m* array, int32_t i);
32 __attribute__((always_inline))
33 inline type_t array_m_lookup(array_m* array, int32_t i) {
34  ASSERT(i < array->size && i >= 0, "index (%d) was out of bounds (%d)", i, array->size - 1);
35 
36  return array->array[i];
37 }
38 
39 //find index of item
40 STDAPI int32_t array_m_index(array_m* array, type_t item);
41 
42 //deletes item at location i from the array
43 STDAPI void array_m_remove(array_m* array, int32_t i);
44 
45 __END_DECLS
46 
47 #endif
Definition: elf.h:10
Definition: size.h:4
Definition: array_m.h:14