shithub: psxe

ref: cb7d802d87208da493cc31a0ea9fab22f4472637
dir: /psx/dev/cdrom/queue.h/

View raw version
#ifndef PSX_DEV_QUEUE_H
#define PSX_DEV_QUEUE_H

#include "p9.h"

typedef struct {
    uint8_t* buf;
    size_t read_index;
    size_t write_index;
    size_t size;
} queue_t;

queue_t* queue_create(void);
void queue_init(queue_t* queue, size_t size);
void queue_push(queue_t* queue, uint8_t value);
uint8_t queue_pop(queue_t* queue);
uint8_t queue_peek(queue_t* queue);
int queue_is_empty(queue_t* queue);
int queue_is_full(queue_t* queue);
void queue_reset(queue_t* queue);
void queue_clear(queue_t* queue);
int queue_size(queue_t* queue);
int queue_max_size(queue_t* queue);
void queue_destroy(queue_t* queue);

#endif