libmya 0.1.0
Library to parse Mya language.
Loading...
Searching...
No Matches
tkqueue.c
Go to the documentation of this file.
1#include <stdlib.h>
2
3#include "tkqueue.h"
4
5void
7
8void
9tkqueue_init(tkqueue_t* queue, unsigned int initial_size)
10{
11 queue->length = 0;
12 queue->_current = 0;
13 queue->_size = initial_size;
14 queue->data = malloc(sizeof(token_t*) * initial_size);
15}
16
17void
19{
20 free(queue->data);
21 queue->data = NULL;
22}
23
24void
26{
27 _queue_ensure_size(queue);
28 queue->data[queue->length++] = token;
29}
30
33{
34 if (tkqueue_isempty(queue)) {
35 return NULL;
36 }
37
38 return queue->data[queue->_current++];
39}
40
43{
44 if (tkqueue_isempty(queue)) {
45 return NULL;
46 }
47
48 return queue->data[queue->_current];
49}
50
51int
53{
54 return queue->length == 0 || queue->_current >= queue->length;
55}
56
57void
59{
60 if (queue->length < queue->_size) {
61 return;
62 }
63
65 queue->data = realloc(queue->data, sizeof(token_t*) * queue->_size);
66}
token_t ** data
Pointer to queue data with allocated space to fit _size items.
Definition tkqueue.h:11
int _current
The index for the current item.
Definition tkqueue.h:13
unsigned int length
The current number of items on the queue.
Definition tkqueue.h:10
unsigned int _size
Current number of elements that fits on the queue.
Definition tkqueue.h:12
Struct for a Mya token.
Definition token.h:34
token_t * tkqueue_peek(const tkqueue_t *queue)
Get the current value from the queue without increment the queue position.
Definition tkqueue.c:42
void tkqueue_add(tkqueue_t *queue, token_t *token)
Add a value to the token queue.
Definition tkqueue.c:25
void _queue_ensure_size(tkqueue_t *queue)
Definition tkqueue.c:58
int tkqueue_isempty(const tkqueue_t *queue)
Check if the given queue is empty.
Definition tkqueue.c:52
token_t * tkqueue_get(tkqueue_t *queue)
Get the current value from the queue and increment the position for the next value.
Definition tkqueue.c:32
void tkqueue_init(tkqueue_t *queue, unsigned int initial_size)
Initializes the token queue.
Definition tkqueue.c:9
void tkqueue_close(tkqueue_t *queue)
Close the given queue.
Definition tkqueue.c:18
#define QUEUE_LENGTH_INCREMENT
Definition tkqueue.h:6
struct tkqueue tkqueue_t
Queue of tokens.
struct token token_t
Struct for a Mya token.