root / proj / libs / classes / src / queue.c @ 316
History | View | Annotate | Download (864 Bytes)
1 |
#include <lcom/lcf.h> |
---|---|
2 |
|
3 |
#include "queue.h" |
4 |
|
5 |
#include "list.h" |
6 |
#include "errors.h" |
7 |
|
8 |
struct queue{
|
9 |
list_t *l; |
10 |
}; |
11 |
|
12 |
queue_t* (queue_ctor )(void){
|
13 |
queue_t *ret = malloc(sizeof(queue_t));
|
14 |
if(ret == NULL) return NULL; |
15 |
ret->l = list_ctor(); |
16 |
if(ret->l == NULL){ |
17 |
queue_dtor(ret); |
18 |
return NULL; |
19 |
} |
20 |
return ret;
|
21 |
} |
22 |
int (queue_dtor )(queue_t *q){
|
23 |
int r;
|
24 |
if((r = list_dtor(q->l))) return r; |
25 |
free(q); |
26 |
return SUCCESS;
|
27 |
} |
28 |
size_t (queue_size )(const queue_t *q ){ return list_size (q->l); } |
29 |
int (queue_empty)(const queue_t *q ){ return list_empty(q->l); } |
30 |
void (queue_push )( queue_t *q, void *val){ list_push_back(q->l, val); } |
31 |
void* (queue_top )(const queue_t *q ){ return *list_front(q->l); } |
32 |
void (queue_pop )( queue_t *q ){ list_pop_front(q->l); }
|