]> Pileus Git - ~andy/gtk/commitdiff
check for func in g_[s]list_insert_sorted and g_[s]list_find_custom
authorTim Janik <timj@src.gnome.org>
Mon, 8 Jun 1998 04:09:21 +0000 (04:09 +0000)
committerTim Janik <timj@src.gnome.org>
Mon, 8 Jun 1998 04:09:21 +0000 (04:09 +0000)
glib/glib.h
glib/glist.c
glib/gslist.c

index 8fe9536beb719996e9e3094761a72f1473201d6a..693a0cccf7493b4a7b5e2481f7a3935756ae14f1 100644 (file)
@@ -523,93 +523,91 @@ typedef enum
 
 /* Doubly linked lists
  */
-GList* g_list_alloc      (void);
-void   g_list_free       (GList     *list);
-void   g_list_free_1     (GList     *list);
-GList* g_list_append     (GList     *list,
-                          gpointer   data);
-GList* g_list_prepend    (GList     *list,
-                          gpointer   data);
-GList* g_list_insert     (GList     *list,
-                          gpointer   data,
-                          gint       position);
-GList* g_list_insert_sorted
-                         (GList     *list,
-                          gpointer   data,
-                          GCompareFunc func);                      
-GList* g_list_concat     (GList     *list1, 
-                          GList     *list2);
-GList* g_list_remove     (GList     *list,
-                          gpointer   data);
-GList* g_list_remove_link (GList     *list,
-                          GList     *link);
-GList* g_list_reverse    (GList     *list);
-GList* g_list_nth        (GList     *list,
-                          guint      n);
-GList* g_list_find       (GList     *list,
-                          gpointer   data);
-GList *g_list_find_custom (GList *list,
-                          gpointer data,
-                          GCompareFunc func);
-gint   g_list_position    (GList     *list,
-                          GList     *link);
-gint   g_list_index      (GList     *list,
-                          gpointer   data);
-GList* g_list_last       (GList     *list);
-GList* g_list_first      (GList     *list);
-guint  g_list_length     (GList     *list);
-void   g_list_foreach    (GList     *list,
-                          GFunc      func,
-                          gpointer   user_data);
-gpointer g_list_nth_data  (GList     *list,
-                          guint      n);
-
-#define g_list_previous(list) ((list) ? (((GList *)list)->prev) : NULL)
-#define g_list_next(list) ((list) ? (((GList *)list)->next) : NULL)
+GList* g_list_alloc            (void);
+void   g_list_free             (GList          *list);
+void   g_list_free_1           (GList          *list);
+GList* g_list_append           (GList          *list,
+                                gpointer        data);
+GList* g_list_prepend          (GList          *list,
+                                gpointer        data);
+GList* g_list_insert           (GList          *list,
+                                gpointer        data,
+                                gint            position);
+GList* g_list_insert_sorted    (GList          *list,
+                                gpointer        data,
+                                GCompareFunc    func);                     
+GList* g_list_concat           (GList          *list1, 
+                                GList          *list2);
+GList* g_list_remove           (GList          *list,
+                                gpointer        data);
+GList* g_list_remove_link      (GList          *list,
+                                GList          *link);
+GList* g_list_reverse          (GList          *list);
+GList* g_list_nth              (GList          *list,
+                                guint           n);
+GList* g_list_find             (GList          *list,
+                                gpointer        data);
+GList* g_list_find_custom      (GList          *list,
+                                gpointer        data,
+                                GCompareFunc    func);
+gint   g_list_position         (GList          *list,
+                                GList          *link);
+gint   g_list_index            (GList          *list,
+                                gpointer        data);
+GList* g_list_last             (GList          *list);
+GList* g_list_first            (GList          *list);
+guint  g_list_length           (GList          *list);
+void   g_list_foreach          (GList          *list,
+                                GFunc           func,
+                                gpointer        user_data);
+gpointer g_list_nth_data       (GList          *list,
+                                guint           n);
+
+#define g_list_previous(list)  ((list) ? (((GList *)(list))->prev) : NULL)
+#define g_list_next(list)      ((list) ? (((GList *)(list))->next) : NULL)
 
 /* Singly linked lists
  */
-GSList* g_slist_alloc      (void);
-void   g_slist_free        (GSList   *list);
-void   g_slist_free_1      (GSList   *list);
-GSList* g_slist_append     (GSList   *list,
-                            gpointer  data);
-GSList* g_slist_prepend            (GSList   *list,
-                            gpointer  data);
-GSList* g_slist_insert     (GSList   *list,
-                            gpointer  data,
-                            gint      position);
-GSList* g_slist_insert_sorted
-                           (GSList   *list,
-                            gpointer  data,
-                            GCompareFunc func);                            
-GSList* g_slist_concat     (GSList   *list1, 
-                            GSList   *list2);
-GSList* g_slist_remove     (GSList   *list,
-                            gpointer  data);
-GSList* g_slist_remove_link (GSList   *list,
-                            GSList   *link);
-GSList* g_slist_reverse            (GSList   *list);
-GSList* g_slist_nth        (GSList   *list,
-                            guint     n);
-GSList* g_slist_find       (GSList   *list,
-                            gpointer  data);
-GSList *g_slist_find_custom (GSList *list,
-                            gpointer data,
-                            GCompareFunc func);
-gint    g_slist_position    (GSList   *list,
-                            GSList   *link);
-gint   g_slist_index       (GSList   *list,
-                            gpointer  data);
-GSList* g_slist_last       (GSList   *list);
-guint  g_slist_length      (GSList   *list);
-void   g_slist_foreach     (GSList   *list,
-                            GFunc     func,
-                            gpointer  user_data);
-gpointer g_slist_nth_data   (GSList   *list,
-                            guint     n);
-
-#define g_slist_next(list) ((list) ? (((GSList *)list)->next) : NULL)
+GSList* g_slist_alloc          (void);
+void   g_slist_free            (GSList         *list);
+void   g_slist_free_1          (GSList         *list);
+GSList* g_slist_append         (GSList         *list,
+                                gpointer        data);
+GSList* g_slist_prepend                (GSList         *list,
+                                gpointer        data);
+GSList* g_slist_insert         (GSList         *list,
+                                gpointer        data,
+                                gint            position);
+GSList* g_slist_insert_sorted  (GSList         *list,
+                                gpointer        data,
+                                GCompareFunc    func);                     
+GSList* g_slist_concat         (GSList         *list1, 
+                                GSList         *list2);
+GSList* g_slist_remove         (GSList         *list,
+                                gpointer        data);
+GSList* g_slist_remove_link    (GSList         *list,
+                                GSList         *link);
+GSList* g_slist_reverse                (GSList         *list);
+GSList* g_slist_nth            (GSList         *list,
+                                guint           n);
+GSList* g_slist_find           (GSList         *list,
+                                gpointer        data);
+GSList* g_slist_find_custom    (GSList         *list,
+                                gpointer        data,
+                                GCompareFunc    func);
+gint    g_slist_position       (GSList         *list,
+                                GSList         *link);
+gint   g_slist_index           (GSList         *list,
+                                gpointer        data);
+GSList* g_slist_last           (GSList         *list);
+guint  g_slist_length          (GSList         *list);
+void   g_slist_foreach         (GSList         *list,
+                                GFunc           func,
+                                gpointer        user_data);
+gpointer g_slist_nth_data      (GSList         *list,
+                                guint           n);
+
+#define g_slist_next(slist)    ((slist) ? (((GSList *)(slist))->next) : NULL)
 
 /* List Allocators
  */
index 3f84528aa7d18f3363b66a296a2068cd7204659b..dc211580a66d51682cc02b19e618873f7da57759 100644 (file)
@@ -324,18 +324,21 @@ g_list_find (GList    *list,
   return list;
 }
 
-GList *
-g_list_find_custom(GList *list, gpointer data, GCompareFunc func)
+GList*
+g_list_find_custom (GList       *list,
+                   gpointer     data,
+                   GCompareFunc func)
 {
-  if(!func) return g_list_find(list, data);
+  g_return_val_if_fail (func != NULL, list);
 
   while (list)
     {
-      if ( !((*func)(list->data, data)) ) break;
+      if (! func (list->data, data))
+       return list;
       list = list->next;
     }
 
-  return list;
+  return NULL;
 }
 
 
@@ -428,13 +431,15 @@ g_list_foreach (GList      *list,
 
 
 GList*
-g_list_insert_sorted (GList    *list,
-                      gpointer  data,
+g_list_insert_sorted (GList        *list,
+                      gpointer      data,
                       GCompareFunc  func)
 {
   GList *tmp_list = list;
   GList *new_list;
   gint cmp;
+
+  g_return_val_if_fail (func != NULL, list);
   
   if (!list) 
     {
index cdfc64cb33f8be0ba3cff7e0ddec71f4bb391de0..3a201b41bd8b02fc228c4fa3b2e72c6310a3d5de 100644 (file)
@@ -313,18 +313,21 @@ g_slist_find (GSList   *list,
   return list;
 }
 
-GSList *
-g_slist_find_custom(GSList *list, gpointer data, GCompareFunc func)
+GSList*
+g_slist_find_custom (GSList      *list,
+                    gpointer     data,
+                    GCompareFunc func)
 {
-  if(!func) return g_slist_find(list, data);
+  g_return_val_if_fail (func != NULL, list);
 
   while (list)
     {
-      if ( !((*func)(list->data, data)) ) break;
+      if (! func (list->data, data))
+       return list;
       list = list->next;
     }
 
-  return list;
+  return NULL;
 }
 
 gint
@@ -403,8 +406,8 @@ g_slist_foreach (GSList   *list,
 }
 
 GSList*
-g_slist_insert_sorted (GSList    *list,
-                       gpointer  data,
+g_slist_insert_sorted (GSList       *list,
+                       gpointer      data,
                        GCompareFunc  func)
 {
   GSList *tmp_list = list;
@@ -412,6 +415,8 @@ g_slist_insert_sorted (GSList    *list,
   GSList *new_list;
   gint cmp;
  
+  g_return_val_if_fail (func != NULL, list);
+
   if (!list)
     {
       new_list = g_slist_alloc();