#ifndef ARC_STD_STACK_H_ #define ARC_STD_STACK_H_ #ifdef __cplusplus extern "C" { #endif #include /** * @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); /** * @brief gets size of stack * * @param stack ARC_Stack to get size from * * @return the stacks size */ uint32_t ARC_Stack_Size(ARC_Stack *stack); #ifdef __cplusplus } #endif #endif //ARC_STD_STACK_H_