/**
* Create a fresh MetaData token.
- *
+ *
* @return empty meta-data container
*/
struct GNUNET_CONTAINER_MetaData *
/**
* Duplicate a MetaData token.
- *
+ *
* @param md what to duplicate
* @return duplicate meta-data container
*/
* used in the main libextractor library and yielding
* meta data).
* @param type libextractor-type describing the meta data
- * @param format basic format information about data
+ * @param format basic format information about data
* @param data_mime_type mime-type of data (not of the original file);
* can be NULL (if mime-type is not known)
* @param data actual meta-data found
/**
* Removes a node from the heap.
- *
+ *
* @param node node to remove
* @return element data stored at the node, NULL if heap is empty
*/
/**
- * Handle to a singly linked list
+ * Handle to a singly linked list
*/
struct GNUNET_CONTAINER_SList;
/**
- * Handle to a singly linked list iterator
+ * Handle to a singly linked list iterator
*/
-struct GNUNET_CONTAINER_SList_Iterator;
+struct GNUNET_CONTAINER_SList_Iterator
+{
+ /**
+ * Linked list that we are iterating over.
+ */
+ struct GNUNET_CONTAINER_SList *list;
+
+ /**
+ * Last element accessed.
+ */
+ struct GNUNET_CONTAINER_SList_Elem *last;
+
+ /**
+ * Current list element.
+ */
+ struct GNUNET_CONTAINER_SList_Elem *elem;
+};
+
/**
* Return the beginning of a list
*
* @param l list
- * @return iterator pointing to the beginning, free using "GNUNET_free"
+ * @return iterator pointing to the beginning (by value! Either allocate the
+ * structure on the stack, or use GNUNET_malloc() yourself! All other
+ * functions do take pointer to this struct though)
*/
-struct GNUNET_CONTAINER_SList_Iterator *
+struct GNUNET_CONTAINER_SList_Iterator
GNUNET_CONTAINER_slist_begin (struct GNUNET_CONTAINER_SList *l);