-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathqueue.h
More file actions
50 lines (40 loc) · 1.61 KB
/
queue.h
File metadata and controls
50 lines (40 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#pragma once
/* ************************************************************************** */
/* ____ _ _____ ____ _ _ _ _____ _ _ ____ ____ */
/* / ___| / \ | ___| _ \ / \ | \ | | |_ _| || | | _ \/ ___| */
/* \___ \ / _ \ | |_ | |_) | / _ \ | \| | | | | || |_| | | \___ \ */
/* ___) / ___ \| _| | _ < / ___ \| |\ | | | |__ _| |_| |___) | */
/* |____/_/ \_|_| |_| \_/_/ \_|_| \_| |_| |_| |____/|____/ */
/* */
/**
* @copyright 2023, SAFRAN T4DS, ALL RIGHTS RESERVED
* @file queue.h
* @author Antoine GAGNIERE
* @brief Realtime FIFO buffer
*/
/* ************************************************************************** */
#include "o2s/deque.h"
/** A queue is First In First Out */
typedef deque_t queue_t;
#define Queue Deque
#define QueueAllocate DequeAllocate
void queue_free(queue_t* self);
/** @name Modifiers */
///@{
bool queue_push(queue_t* self, const void* element);
bool queue_push_n(queue_t* self, const void* elements, size_t count);
bool queue_pop(queue_t* self, void* destination);
bool queue_pop_n(queue_t* self, void* destination, size_t count);
bool queue_pop_into_array(queue_t* self, struct array* destination, size_t count);
///@}
/** @name Element access */
///@{
void* queue_first(const queue_t* self);
void* queue_get(const queue_t* self, size_t index);
///@}
/** @name Capacity */
///@{
size_t queue_room(const queue_t* self);
size_t queue_count(const queue_t* self);
size_t queue_capacity(const queue_t* self);
///@}