]> git.sommitrealweird.co.uk Git - onak.git/blobdiff - ll.h
cscvs to tla changeset 85
[onak.git] / ll.h
diff --git a/ll.h b/ll.h
index 3890ca9c9c5f019b2b1e3375c3dce650f03e7c80..43a5bd364c4032c92e6b319d6118eb9842c3a821 100644 (file)
--- a/ll.h
+++ b/ll.h
@@ -4,6 +4,8 @@
  * Jonathan McDowell <noodles@earth.li>
  *
  * Copyright 2002 Project Purple
  * Jonathan McDowell <noodles@earth.li>
  *
  * Copyright 2002 Project Purple
+ *
+ * $Id: ll.h,v 1.3 2003/06/04 20:57:10 noodles Exp $
  */
 
 #ifndef __LL_H__
  */
 
 #ifndef __LL_H__
@@ -50,13 +52,26 @@ struct ll {
 struct ll *lladd(struct ll *curll, void *object);
 
 /**
 struct ll *lladd(struct ll *curll, void *object);
 
 /**
+ *     lldel - Remove an item from a linked list.
+ *     @curll: The list to remove the item from.
+ *     @object: The object to remove.
+ *     @objectcmp: A pointer to a comparision function for the object type.
  *
  *
+ *     Trawls through the list looking for the object. If it's found then it
+ *     is removed from the list. Only one occurance is searched for. Returns
+ *     a pointer to the head of the new list.
  */
 struct ll *lldel(struct ll *curll, void *object,
        int (*objectcmp) (const void *object1, const void *object2));
 
 /**
  */
 struct ll *lldel(struct ll *curll, void *object,
        int (*objectcmp) (const void *object1, const void *object2));
 
 /**
+ *     llfind - Find an item in a linked list.
+ *     @curll: The list to look in.
+ *     @object: The object to look for.
+ *     @objectcmp: A pointer to a comparision function for the object type.
  *
  *
+ *     Searches through a list for an object. Returns a pointer to the object
+ *     if it's found, otherwise NULL.
  */
 struct ll *llfind(struct ll *curll, void *object,
        int (*objectcmp) (const void *object1, const void *object2));
  */
 struct ll *llfind(struct ll *curll, void *object,
        int (*objectcmp) (const void *object1, const void *object2));
@@ -69,4 +84,16 @@ struct ll *llfind(struct ll *curll, void *object,
  */
 unsigned long llsize(struct ll *curll);
 
  */
 unsigned long llsize(struct ll *curll);
 
+/**
+ *     llfree - Frees a linked list.
+ *     @curll: The list to free.
+ *     @objectfree: A pointer to a free function for the object.
+ *
+ *     Walks through a list and free it. If a function is provided for
+ *     objectfree then it's called for each element to free them, if it's NULL
+ *     just the list is freed.
+ */
+struct ll *llfree(struct ll *curll,
+       void (*objectfree) (void *object));
+
 #endif /* __LL_H__ */
 #endif /* __LL_H__ */