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., 675 Mass Ave, Cambridge, MA 02139, 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 26typedef struct qnode { 27 struct qnode *prev; 28 struct qnode *next; 29 void *data; 30} qnode_t; 31 32typedef 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 void *dequeue(q_t *q); 40 41#endif /* ATALK_QUEUE_H */ 42