axle OS
x86_32 UNIX-like hobby OS
src
std
array_l.h
1
#ifndef STD_ARRAY_L_H
2
#define STD_ARRAY_L_H
3
4
#include "std_base.h"
5
#include "panic.h"
6
#include <stdint.h>
7
#include "std.h"
8
9
__BEGIN_DECLS
10
11
typedef
void
* type_t;
12
13
typedef
struct
array_l_item
{
14
type_t item;
15
struct
array_l_item
* next;
16
}
array_l_item
;
17
18
typedef
struct
{
19
array_l_item
* head;
20
int32_t
size
;
21
}
array_l
;
22
23
//create array list
24
STDAPI
array_l
* array_l_create();
25
26
//destroy array list
27
STDAPI
void
array_l_destroy(
array_l
* array);
28
29
//add item to array list
30
STDAPI
void
array_l_insert(
array_l
* array, type_t item);
31
32
//lookup item at index idx
33
__attribute__
((always_inline))
34
inline
type_t array_l_lookup(
array_l
* array, int32_t idx) {
35
ASSERT(idx < array->
size
&& idx >= 0,
"index (%d) was out of bounds (%d)"
, idx, array->size - 1);
36
37
//walk list
38
array_l_item
* tmp = array->head;
39
for
(
int
i = 0; i < idx; i++) {
40
tmp = tmp->next;
41
}
42
if
(tmp) {
43
return
tmp->item;
44
}
45
return
NULL;
46
}
47
48
//find index of item
49
STDAPI int32_t array_l_index(
array_l
* array, type_t item);
50
51
//deletes item at location i from the array
52
STDAPI
void
array_l_remove(
array_l
* array, int32_t i);
53
54
__END_DECLS
55
56
#endif
array_l_item
Definition:
array_l.h:13
array_l
Definition:
array_l.h:18
__attribute__
Definition:
elf.h:10
size
Definition:
size.h:4
Generated by
1.8.14