#ifndef DLLIST_H
#define DLLIST_H
-
-/** Tipo de dato booleano. */
-typedef enum {
- FALSE, /**< Falso. */
- TRUE /**< Verdadero. */
-} bool;
+#include "bool.h"
/** Nodo de la lista doblemente enlazada. */
typedef struct DLNodeStruct DLNode;
* \return Primer elemento de la DLList.
* \see DLList_empty(), DLList_pop()
* \pre La DLList debe estar \ref DLList_new "creada" correctamente y no
- * debe estar \ref DLList_empty "vacía.
+ * debe estar \ref DLList_empty "vacía".
* \post El puntero interno de la DLList apunta primer elemento.
*/
void* DLList_shift(DLList* list);
* \return Último elemento de la DLList.
* \see DLList_empty(), DLList_shift()
* \pre La DLList debe estar \ref DLList_new "creada" correctamente y no
- * debe estar \ref DLList_empty "vacía.
+ * debe estar \ref DLList_empty "vacía".
* \post El puntero interno de la DLList apunta último elemento.
*/
void* DLList_pop(DLList* list);
+/**
+ * Elimina el elemento actual de la DLList.
+ * Elimina el elemento actual de la DLList devolviendo su contenido.
+ *
+ * \param list DLList de la cual sacar el elemento.
+ *
+ * \return Elemento actual de la DLList o NULL si no hay más elementos.
+ * \see DLList_empty(), DLList_current(), DLList_have_more()
+ * \pre La DLList debe estar \ref DLList_new "creada" correctamente y
+ * debe \ref DLList_have_more "tener un elemento actual" (por lo que
+ * también debe estar no \ref DLList_empty "vacía").
+ * \post El puntero interno de la DLList apunta al próximo elemento.
+ */
+void* DLList_remove_current(DLList* list);
+
#endif /* DLLIST_H */