8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
0
|
// Copyright (C) 2023, Jakob Wakeling |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
1
|
// All rights reserved. |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
2
|
|
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
3
|
#ifndef ESH_UTIL_STACK_H_XP00FNGQ |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
4
|
#define ESH_UTIL_STACK_H_XP00FNGQ |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
5
|
|
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
6
|
#include "util.h" |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
7
|
|
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
8
|
#define stack_push(s, e) _stack_push(s, (void *)(uptr)(e)) |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
9
|
|
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
10
|
typedef struct { void *a; u64 al, ac, el; void (*free)(void *); } stack; |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
11
|
|
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
12
|
extern stack stack_init(u64 el, void (*free)(void *)); |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
13
|
extern void stack_free(stack *s); |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
14
|
|
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
15
|
extern void _stack_push(stack *s, void *e); |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
16
|
extern void *stack_pop(stack *s); |
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
17
|
|
8344335 |
Jakob Wakeling |
2023-12-27 15:41:39 |
18
|
#endif // ESH_UTIL_STACK_H_XP00FNGQ |
|
|
|
19
|
|