diff options
Diffstat (limited to 'include/bh/queue.h')
| -rwxr-xr-x | include/bh/queue.h | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/include/bh/queue.h b/include/bh/queue.h new file mode 100755 index 0000000..7905c77 --- /dev/null +++ b/include/bh/queue.h @@ -0,0 +1,149 @@ +#ifndef BH_QUEUE_H +#define BH_QUEUE_H + + +#include "common.h" + + +typedef struct bh_queue_s bh_queue_t; + + +/** + * Creates the new queue object. + * + * \return On success, returns the pointer to the new queue object. + * \return On failure, returns a null pointer. + */ +bh_queue_t *bh_queue_new(void); + + +/** + * Frees the \a queue object. + * + * \param queue Pointer to the queue object to be freed + */ +void bh_queue_free(bh_queue_t *queue); + + +/** + * Clears the \a queue object. + * + * \param queue Pointer to the queue object to be cleared + */ +void bh_queue_clear(bh_queue_t *queue); + + +/** + * Reserves the space for \a size elements in the \a queue. + * + * This function can both expand and shrink the available space in \a queue. + * + * \param queue Pointer to the queue object to be resized in terms of capacity + * \param size New capacity of the queue + * + * \note Calling this function will invalidate iterators. + * \note Actual hashmap capacity can be bigger then requested. + * + * \return On success, returns zero value. + * \return On failure, returns error code. + */ +int bh_queue_reserve(bh_queue_t *queue, + size_t size); + + +/** + * Inserts the \a value into the \a queue. + * + * \param queue Pointer to the queue object + * \param value Value to be inserted + * + * \note Calling this function will invalidate iterators. + * + * \return On success, returns zero value. + * \return On failure, returns error code. + */ +int bh_queue_insert(bh_queue_t *queue, + void *value); + + +/** + * Removes front value from the \a queue. + * + * \param queue Pointer to the queue object + * + * \note Calling this function will invalidate iterators. + */ +void bh_queue_remove(bh_queue_t *queue); + + +/** + * Returns front value from the \a queue. + * + * \param queue Pointer to the queue object + * + * \return On success, returns front value from the queue. + * \return On failure, returns null pointer. + */ +int bh_queue_front(bh_queue_t *queue, + void **value); + + +/** + * Checks if the \a queue is empty. + * + * \param queue Pointer to the queue object + * + * \return If queue is empty, returns non-zero value + * \return If queue is not empty, returns zero value + */ +int bh_queue_empty(bh_queue_t *queue); + + +/** + * Returns the size of the \a queue. + * + * \param queue Pointer to the queue object + * + * \return Returns the size of the queue. + */ +size_t bh_queue_size(bh_queue_t *queue); + + +/** + * Returns the capacity of the \a queue. + * + * \param queue Pointer to the queue object + * + * \return Returns the capacity of the queue. + */ +size_t bh_queue_capacity(bh_queue_t *queue); + + +/** + * Returns the iterator to the next element in the \a queue. + * + * \param queue Pointer to the queue object + * \param iter Opaque iterator value + * + * \return If the \a iter doesn't point to the last element of the queue, + * returns next iterator value. + * \return If the \a iter point to the last element of the queue, returns + * null pointer. + * \return If the \a iter is the null pointer, returns iterator to the + * first element of the queue. + */ +void *bh_queue_iter_next(bh_queue_t *queue, + void *iter); + + +/** + * Returns the value, pointed by the queue iterator \a iter. + * + * \param iter Opaque iterator value + * + * \return Returns value, pointed by iterator. + */ +void *bh_queue_iter_value(void *iter); + + +#endif /* BH_QUEUE_H */ |
