netatalk: queue.h Source File

netatalk 4.5.1
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
queue.h
Go to the documentation of this file.
1/*
2 Copyright (c) 2010 Frank Lahm
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17*/
18
19#ifndef ATALK_QUEUE_H
20#define ATALK_QUEUE_H
21
22#ifdef HAVE_CONFIG_H
23#include "config.h"
24#endif /* HAVE_CONFIG_H */
25
26 typedef struct qnode {
27 struct qnode *prev;
28 struct qnode *next;
29 void *data;
30} qnode_t;
31
32 typedef qnode_t q_t;
33
34extern q_t *queue_init(void);
35extern void queue_destroy(q_t *q, void (*callback)(void *));
36#define queue_free(q) queue_destroy((q), free)
37extern qnode_t *enqueue(q_t *q, void *data);
38extern qnode_t *prequeue(q_t *q, void *data);
39extern qnode_t *queue_move_to_tail(q_t *q, qnode_t *node);
40extern qnode_t *queue_move_to_tail_of(q_t *from_q, q_t *to_q, qnode_t *node);
41extern void *dequeue(q_t *q);
42
43#endif /* ATALK_QUEUE_H */
config.h
node
struct node_t * node
data
#define data
Definition hash.c:38
q_t
qnode_t q_t
Definition queue.h:32
queue_destroy
void queue_destroy(q_t *q, void(*callback)(void *))
Definition queue.c:181
dequeue
void * dequeue(q_t *q)
Definition queue.c:163
enqueue
qnode_t * enqueue(q_t *q, void *data)
Definition queue.c:57
queue_move_to_tail
qnode_t * queue_move_to_tail(q_t *q, qnode_t *node)
Move existing node to tail (MRU) without reallocation.
Definition queue.c:123
queue_move_to_tail_of
qnode_t * queue_move_to_tail_of(q_t *from_q, q_t *to_q, qnode_t *node)
Move node from one queue to another without memory reallocation.
Definition queue.c:86
queue_init
q_t * queue_init(void)
Definition queue.c:44
qnode_t
struct qnode qnode_t
prequeue
qnode_t * prequeue(q_t *q, void *data)
Definition queue.c:146
qnode
Definition queue.h:26
qnode::data
void * data
Definition queue.h:29
qnode::next
struct qnode * next
Definition queue.h:28
qnode::prev
struct qnode * prev
Definition queue.h:27