2024-02-08 03:12:37 -07:00
|
|
|
#ifndef ARC_STD_QUEUE_H_
|
|
|
|
|
#define ARC_STD_QUEUE_H_
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief a queue type
|
|
|
|
|
*/
|
|
|
|
|
typedef struct ARC_Queue ARC_Queue;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief creates ARC_Queue type
|
|
|
|
|
*
|
|
|
|
|
* @param queue ARC_Queue to initialize
|
|
|
|
|
*/
|
|
|
|
|
void ARC_Queue_Create(ARC_Queue **queue);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief destroyes ARC_Queue type
|
|
|
|
|
*/
|
|
|
|
|
void ARC_Queue_Destroy(ARC_Queue *queue);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief pushes value to end of queue
|
|
|
|
|
*
|
|
|
|
|
* @param queue ARC_Queue to push to
|
|
|
|
|
* @param data data that is being pushed
|
|
|
|
|
*/
|
|
|
|
|
void ARC_Queue_Push(ARC_Queue *queue, void *data);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief pops the front off of the ARC_Queue
|
|
|
|
|
*
|
|
|
|
|
* @param queue ARC_Queue to remove from
|
|
|
|
|
*
|
|
|
|
|
* @return the poped data from the queue as a void *
|
|
|
|
|
*/
|
|
|
|
|
void *ARC_Queue_Pop(ARC_Queue *queue);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief gets size of queue
|
|
|
|
|
*
|
|
|
|
|
* @param vector ARC_Queue to get size from
|
|
|
|
|
*
|
|
|
|
|
* @return the queues size
|
|
|
|
|
*/
|
|
|
|
|
uint32_t ARC_Queue_Size(ARC_Queue *queue);
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif //ARC_STD_QUEUE_H_
|