X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Fadt%2Fpqueue.h;h=35e585ad1bc93d9821111ce6ca0fdde710d426b2;hb=8b9cffd15955b08311c41c37cd06acd7db3bd7f4;hp=dff60a357e8d0b2d205ba115e2d072a8310fe945;hpb=435253f3a8766fec2ac2adf559bb10cfcb5d36f4;p=libfirm diff --git a/include/libfirm/adt/pqueue.h b/include/libfirm/adt/pqueue.h index dff60a357..35e585ad1 100644 --- a/include/libfirm/adt/pqueue.h +++ b/include/libfirm/adt/pqueue.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -21,54 +21,68 @@ * @file * @date 18.04.2007 * @author Christian Wuerdig - * @brief Implementation of a priority queue. This is the ported version of the - * original Java implementation by Matthias Braun. - * @version $Id$ + * @brief Implementation of a priority queue. This is the ported version of + the original Java implementation by Matthias Braun. */ #ifndef FIRM_ADT_PQUEUE_H #define FIRM_ADT_PQUEUE_H -typedef struct _pqueue_t pqueue; +#include "../begin.h" + +/** + * @ingroup adt + * @defgroup pqueue Priority Queue + * A priority queue. + * Implementation based on a heap datastructure + * @{ + */ + +/** priority queue */ +typedef struct pqueue_t pqueue_t; /** * Creates a new priority queue. * @return A priority queue of initial length 0. */ -pqueue *new_pqueue(void); +FIRM_API pqueue_t *new_pqueue(void); /** * Frees all memory allocated by the priority queue. * @param q The priority queue to destroy. */ -void del_pqueue(pqueue *q); +FIRM_API void del_pqueue(pqueue_t *q); /** * Inserts a new element into a priority queue. - * @param q The priority queue the element should be inserted to. - * @param data The actual data which should be stored in the queue. - * @param key The priority for the data. + * @param q The priority queue the element should be inserted to. + * @param data The actual data which should be stored in the queue. + * @param priority The priority for the data. */ -void pqueue_put(pqueue *q, void *data, int key); +FIRM_API void pqueue_put(pqueue_t *q, void *data, int priority); /** * Returns and removes the first element, ie. that one with the highest priority, from the queue. * @param q The priority queue. * @return The first element of the queue. Asserts if queue is empty. */ -void *pqueue_get(pqueue *q); +FIRM_API void *pqueue_pop_front(pqueue_t *q); /** * Get the length of the priority queue. * @param q The priority queue. * @return The length of the queue. */ -int pqueue_length(pqueue *q); +FIRM_API size_t pqueue_length(const pqueue_t *q); /** * Returns true if queue is empty. * @param q The priority queue. * @return 1 if the queue is empty, 0 otherwise. */ -int pqueue_empty(pqueue *q); +FIRM_API int pqueue_empty(const pqueue_t *q); + +/** @} */ + +#include "../end.h" #endif