27#ifndef JUNO_BUFF_STACK_API_H
28#define JUNO_BUFF_STACK_API_H
55 ptStackRoot->zLength = 0;
56 ptStackRoot->zCapacity = zCapacity;
57 ptStackRoot->_pfcnFailureHandler = pfcnFailureHdlr;
58 ptStackRoot->_pvFailureUserData = pvFailureUserData;
73 if(ptStackRoot->zLength < ptStackRoot->zCapacity)
75 tResult.tOk = ptStackRoot->zLength;
76 ptStackRoot->zLength += 1;
81 JUNO_FAIL(tResult.tStatus, ptStackRoot->_pfcnFailureHandler, ptStackRoot->_pvFailureUserData,
"Failed to enqueue data");
98 if(ptStackRoot->zLength > 0)
100 ptStackRoot->zLength -= 1;
101 tResult.tOk = ptStackRoot->zLength;
105 JUNO_FAIL(tResult.tStatus, ptStackRoot->_pfcnFailureHandler, ptStackRoot->_pvFailureUserData,
"Failed to enqueue data");
120 tResult.tOk = ptStackRoot->zLength;
static JUNO_RESULT_SIZE_T JunoBuff_StackPeek(JUNO_BUFF_STACK_T *ptStack)
Definition buff_stack_api.h:111
static JUNO_RESULT_SIZE_T JunoBuff_StackPush(JUNO_BUFF_STACK_T *ptStack)
Definition buff_stack_api.h:64
struct JUNO_BUFF_STACK_ROOT_TAG JUNO_BUFF_STACK_ROOT_T
The buffer stack root module.
Definition buff_stack_api.h:39
static JUNO_STATUS_T JunoBuff_StackInit(JUNO_BUFF_STACK_T *ptStack, size_t zCapacity, JUNO_FAILURE_HANDLER_T pfcnFailureHdlr, JUNO_USER_DATA_T *pvFailureUserData)
Initialize a buffer stack.
Definition buff_stack_api.h:51
union JUNO_BUFF_STACK_T JUNO_BUFF_STACK_T
The buffer stack.
Definition buff_stack_api.h:41
static JUNO_RESULT_SIZE_T JunoBuff_StackPop(JUNO_BUFF_STACK_T *ptStack)
Definition buff_stack_api.h:89
#define JUNO_ASSERT_EXISTS(ptr)
Definition macros.h:28
#define JUNO_MODULE_ROOT(API_T,...)
Definition module.h:182
void(* JUNO_FAILURE_HANDLER_T)(JUNO_STATUS_T tStatus, const char *pcCustomMessage, JUNO_USER_DATA_T *pvUserData)
Definition status.h:43
int32_t JUNO_STATUS_T
Definition status.h:23
#define JUNO_FAIL(tStatus, pfcnFailureHandler, pvFailureUserData, pcMessage)
Definition status.h:48
#define JUNO_STATUS_NULLPTR_ERROR
Definition status.h:26
#define JUNO_STATUS_INVALID_SIZE_ERROR
Definition status.h:30
#define JUNO_STATUS_SUCCESS
Definition status.h:24
void JUNO_USER_DATA_T
Definition status.h:42