XBT_LOG_NEW_DEFAULT_SUBCATEGORY(fifo,xbt,"FIFO");
-/*
- * xbt_fifo_new()
+/** \defgroup XBT_fifo A generic workqueue
+ * \brief This section describes the API to generic workqueue. These functions
+ * provide the same kind of functionnality as dynamic arrays but in time O(1).
+ * However these functions use malloc/free a way too much often.
+ */
+
+/** \name Functions
+ * \ingroup XBT_fifo
+ */
+/* @{ */
+
+/** Constructor
+ * \return a new fifo
*/
xbt_fifo_t xbt_fifo_new(void)
{
return fifo;
}
-/*
- * xbt_fifo_free()
+/** Destructor
+ * \param l poor victim
+ *
+ * Free the fifo structure. None of the objects that was in the fifo is however modified.
*/
void xbt_fifo_free(xbt_fifo_t l)
{
return;
}
-/*
- * xbt_fifo_push()
- * at the tail
+/* Push
+ * \param l list
+ * \param t element
+ * \return the bucket that was just added
+ *
+ * Add an object at the tail of the list
*/
xbt_fifo_item_t xbt_fifo_push(xbt_fifo_t l, void *t)
{
return new;
}
-/*
- * xbt_fifo_pop()
- * from the tail
+/** Pop
+ * \param l list
+ * \returns the object stored at the tail of the list.
+ *
+ * Removes and returns the object stored at the tail of the list.
+ * Returns NULL if the list is empty.
*/
void *xbt_fifo_pop(xbt_fifo_t l)
{
return content;
}
-/*
- * xbt_fifo_unshift()
- * at the head
+/**
+ * \param l list
+ * \param t element
+ * \return the bucket that was just added
+ *
+ * Add an object at the head of the list
*/
xbt_fifo_item_t xbt_fifo_unshift(xbt_fifo_t l, void *t)
{
return new;
}
-/*
- * xbt_fifo_shift()
- * from the head
+/** Shift
+ * \param l list
+ * \returns the object stored at the head of the list.
+ *
+ * Removes and returns the object stored at the head of the list.
+ * Returns NULL if the list is empty.
*/
void *xbt_fifo_shift(xbt_fifo_t l)
{
return content;
}
-/*
- * xbt_fifo_push_item()
- * at the tail
+/** Push a bucket
+ * \param l list
+ * \param new bucket
+ *
+ * Hook up this bucket at the tail of the list
*/
void xbt_fifo_push_item(xbt_fifo_t l, xbt_fifo_item_t new)
{
l->tail = new;
}
-/*
- * xbt_fifo_pop_item()
- * from the tail
+/** Pop bucket
+ * \param l
+ * \returns the bucket that was at the tail of the list.
+ *
+ * Returns NULL if the list was empty.
*/
xbt_fifo_item_t xbt_fifo_pop_item(xbt_fifo_t l)
{
return item;
}
-/*
- * xbt_fifo_unshift_item()
- * at the head
+/** Push a bucket
+ * \param l list
+ * \param new bucket
+ *
+ * Hook up this bucket at the head of the list
*/
void xbt_fifo_unshift_item(xbt_fifo_t l, xbt_fifo_item_t new)
{
return;
}
-/*
- * xbt_fifo_shift_item()
- * from the head
+/** Shift bucket
+ * \param l
+ * \returns the bucket that was at the head of the list.
+ *
+ * Returns NULL if the list was empty.
*/
xbt_fifo_item_t xbt_fifo_shift_item(xbt_fifo_t l)
{
return item;
}
-/*
- * xbt_fifo_remove()
- * removes an xbt_fifo_item_t using its content from the xbt_fifo
+/**
+ * \param l
+ * \param t an objet
+ *
+ * removes the first occurence of \a t from \a l.
+ * \warning it will not remove duplicates
*/
void xbt_fifo_remove(xbt_fifo_t l, void *t)
{
return;
}
-/*
- * xbt_fifo_remove_item()
- * removes a given xbt_fifo_item_t from the xbt_fifo
+/**
+ * \param l a list
+ * \param current a bucket
+ *
+ * removes a the bucket \a current from the list \a l
*/
void xbt_fifo_remove_item(xbt_fifo_t l, xbt_fifo_item_t current)
{
(l->count)--;
}
-/*
- * xbt_fifo_is_in()
+/**
+ * \param f a list
+ * \param content an object
+ * \return 1 if \a content is in \a f.
*/
int xbt_fifo_is_in(xbt_fifo_t f, void *content)
{
return 0;
}
-/*
- * xbt_fifo_to_array()
+/**
+ * \param f a list
+ * \return a table with the objects stored in \a f.
*/
void **xbt_fifo_to_array(xbt_fifo_t f)
{
return array;
}
-/*
- * xbt_fifo_Copy()
+/**
+ * \param f a list
+ * \return a copy of \a f.
*/
xbt_fifo_t xbt_fifo_copy(xbt_fifo_t f)
{
return copy;
}
-/*
- * xbt_fifo_newitem()
+/** Constructor
+ * \return a new bucket
*/
xbt_fifo_item_t xbt_fifo_newitem(void)
{
return xbt_new0(struct xbt_fifo_item,1);
}
+/**
+ * \param i a bucket
+ * \param v an object
+ *
+ * stores \a v in \a i.
+ */
void xbt_fifo_set_item_content(xbt_fifo_item_t i , void *v)
{
xbt_fifo_setItemcontent(i,v);
}
+/**
+ * \param i a bucket
+ * \return the object stored \a i.
+ */
void *xbt_fifo_get_item_content(xbt_fifo_item_t i)
{
return xbt_fifo_getItemcontent(i);
}
-/*
- * xbt_fifo_freeitem()
+/** Destructor
+ * \param b poor victim
+ *
+ * Free the bucket but does not modifies the object (if any) that was stored in it.
*/
void xbt_fifo_freeitem(xbt_fifo_item_t b)
{
return;
}
+/**
+ * \param f a list
+ * \return the number of buckets in \a f.
+ */
int xbt_fifo_size(xbt_fifo_t f)
{
return f->count;
}
+/**
+ * \param l a list
+ * \return the head of \a l.
+ */
xbt_fifo_item_t xbt_fifo_getFirstItem(xbt_fifo_t l)
{
return l->head;
}
+/**
+ * \param i a bucket
+ * \return the bucket that comes next
+ */
xbt_fifo_item_t xbt_fifo_getNextItem(xbt_fifo_item_t i)
{
if(i) return i->next;
return NULL;
}
+/**
+ * \param i a bucket
+ * \return the bucket that is just before \a i.
+ */
xbt_fifo_item_t xbt_fifo_getPrevItem(xbt_fifo_item_t i)
{
if(i) return i->prev;
return NULL;
}
+/* @} */