1 /* GLIB - Library of useful routines for C programming 2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 * Boston, MA 02111-1307, USA. 18 */ 19 20 /* 21 * Modified by the GLib Team and others 1997-2000. See the AUTHORS 22 * file for a list of people on the GLib Team. See the ChangeLog 23 * files for a list of changes. These files are distributed with 24 * GLib at ftp://ftp.gtk.org/pub/gtk/. 25 */ 26 27 #if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) 28 #error "Only <glib.h> can be included directly." 29 #endif 30 31 #ifndef __G_SLIST_H__ 32 #define __G_SLIST_H__ 33 34 #include <glib/gmem.h> 35 36 G_BEGIN_DECLS 37 38 typedef struct _GSList GSList; 39 40 struct _GSList 41 { 42 gpointer data; 43 GSList *next; 44 }; 45 46 /* Singly linked lists 47 */ 48 GSList* g_slist_alloc (void) G_GNUC_WARN_UNUSED_RESULT; 49 void g_slist_free (GSList *list); 50 void g_slist_free_1 (GSList *list); 51 #define g_slist_free1 g_slist_free_1 52 GSList* g_slist_append (GSList *list, 53 gpointer data) G_GNUC_WARN_UNUSED_RESULT; 54 GSList* g_slist_prepend (GSList *list, 55 gpointer data) G_GNUC_WARN_UNUSED_RESULT; 56 GSList* g_slist_insert (GSList *list, 57 gpointer data, 58 gint position) G_GNUC_WARN_UNUSED_RESULT; 59 GSList* g_slist_insert_sorted (GSList *list, 60 gpointer data, 61 GCompareFunc func) G_GNUC_WARN_UNUSED_RESULT; 62 GSList* g_slist_insert_sorted_with_data (GSList *list, 63 gpointer data, 64 GCompareDataFunc func, 65 gpointer user_data) G_GNUC_WARN_UNUSED_RESULT; 66 GSList* g_slist_insert_before (GSList *slist, 67 GSList *sibling, 68 gpointer data) G_GNUC_WARN_UNUSED_RESULT; 69 GSList* g_slist_concat (GSList *list1, 70 GSList *list2) G_GNUC_WARN_UNUSED_RESULT; 71 GSList* g_slist_remove (GSList *list, 72 gconstpointer data) G_GNUC_WARN_UNUSED_RESULT; 73 GSList* g_slist_remove_all (GSList *list, 74 gconstpointer data) G_GNUC_WARN_UNUSED_RESULT; 75 GSList* g_slist_remove_link (GSList *list, 76 GSList *link_) G_GNUC_WARN_UNUSED_RESULT; 77 GSList* g_slist_delete_link (GSList *list, 78 GSList *link_) G_GNUC_WARN_UNUSED_RESULT; 79 GSList* g_slist_reverse (GSList *list) G_GNUC_WARN_UNUSED_RESULT; 80 GSList* g_slist_copy (GSList *list) G_GNUC_WARN_UNUSED_RESULT; 81 GSList* g_slist_nth (GSList *list, 82 guint n); 83 GSList* g_slist_find (GSList *list, 84 gconstpointer data); 85 GSList* g_slist_find_custom (GSList *list, 86 gconstpointer data, 87 GCompareFunc func); 88 gint g_slist_position (GSList *list, 89 GSList *llink); 90 gint g_slist_index (GSList *list, 91 gconstpointer data); 92 GSList* g_slist_last (GSList *list); 93 guint g_slist_length (GSList *list); 94 void g_slist_foreach (GSList *list, 95 GFunc func, 96 gpointer user_data); 97 GSList* g_slist_sort (GSList *list, 98 GCompareFunc compare_func) G_GNUC_WARN_UNUSED_RESULT; 99 GSList* g_slist_sort_with_data (GSList *list, 100 GCompareDataFunc compare_func, 101 gpointer user_data) G_GNUC_WARN_UNUSED_RESULT; 102 gpointer g_slist_nth_data (GSList *list, 103 guint n); 104 105 #define g_slist_next(slist) ((slist) ? (((GSList *)(slist))->next) : NULL) 106 107 #ifndef G_DISABLE_DEPRECATED 108 void g_slist_push_allocator (gpointer dummy); 109 void g_slist_pop_allocator (void); 110 #endif 111 112 G_END_DECLS 113 114 #endif /* __G_SLIST_H__ */ 115