493afb05e6
This is working repository now. I had to clean this up due to my f_ups, that made this simple repo around 200MB large. Signed-off-by: Piotr Krygier <piotrkrygier@everyonecancode@xyz>
46 lines
818 B
C
46 lines
818 B
C
/**
|
|
* @file stack.h
|
|
* @author Piotr Krygier (everyonecancode@gmail.com)
|
|
* @brief
|
|
* @version 0.1
|
|
* @date 2024-05-01
|
|
*
|
|
* @copyright Copyright (c) 2024
|
|
*
|
|
*/
|
|
|
|
#ifndef STACK_H
|
|
#define STACK_H
|
|
|
|
#define RSE_STACK_DEFINE(name, type, size) \
|
|
struct name { \
|
|
type data[size]; \
|
|
int top; \
|
|
}
|
|
|
|
#define RSE_STACK_PUSH(stack, value) \
|
|
stack.data[++stack.top] = value
|
|
|
|
#define RSE_STACK_POP(stack) \
|
|
stack.data[stack.top--]
|
|
|
|
#define RSE_STACK_TOP(stack) \
|
|
stack.data[stack.top]
|
|
|
|
#define RSE_STACK_IS_EMPTY(stack) \
|
|
(stack.top == -1)
|
|
|
|
#define RSE_STACK_IS_FULL(stack, size) \
|
|
(stack.top == size - 1)
|
|
|
|
#define RSE_STACK_INIT(stack) \
|
|
(stack.top = -1)
|
|
|
|
#define RSE_STACK_SIZE(stack) \
|
|
(stack.top + 1)
|
|
|
|
#define RSE_STACK_CLEAR(stack) \
|
|
(stack.top = -1)
|
|
|
|
#endif // STACK_H
|