2024-02-08 02:48:14 -07:00
|
|
|
#ifndef ARC_STD_STACK_H_
|
|
|
|
|
#define ARC_STD_STACK_H_
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief a stack type
|
|
|
|
|
*/
|
|
|
|
|
typedef struct ARC_Stack ARC_Stack;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief creates ARC_Stack type
|
|
|
|
|
*
|
|
|
|
|
* @param stack ARC_Stack to initialize
|
|
|
|
|
*/
|
|
|
|
|
void ARC_Stack_Create(ARC_Stack **stack);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief destroyes ARC_Stack type
|
|
|
|
|
*/
|
|
|
|
|
void ARC_Stack_Destroy(ARC_Stack *stack);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief pushes value on stack
|
|
|
|
|
*
|
|
|
|
|
* @param stack ARC_Stack to push to
|
|
|
|
|
* @param data data that is being pushed
|
|
|
|
|
*/
|
|
|
|
|
void ARC_Stack_Push(ARC_Stack *stack, void *data);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief pops top off of ARC_Stack
|
|
|
|
|
*
|
|
|
|
|
* @param stack ARC_Stack to remove from
|
|
|
|
|
*
|
|
|
|
|
* @return the poped data from the stack as a void *
|
|
|
|
|
*/
|
|
|
|
|
void *ARC_Stack_Pop(ARC_Stack *stack);
|
|
|
|
|
|
|
|
|
|
/**
|
2024-02-08 03:12:37 -07:00
|
|
|
* @brief gets size of stack
|
2024-02-08 02:48:14 -07:00
|
|
|
*
|
2024-02-08 03:12:37 -07:00
|
|
|
* @param stack ARC_Stack to get size from
|
2024-02-08 02:48:14 -07:00
|
|
|
*
|
|
|
|
|
* @return the stacks size
|
|
|
|
|
*/
|
|
|
|
|
uint32_t ARC_Stack_Size(ARC_Stack *stack);
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2025-03-28 04:30:45 -06:00
|
|
|
#endif // !ARC_STD_STACK_H_
|