new function g_slist_copy() to duplicate a list with all its data
authorTim Janik <timj@gtk.org>
Mon, 23 Nov 1998 01:52:07 +0000 (01:52 +0000)
committerTim Janik <timj@src.gnome.org>
Mon, 23 Nov 1998 01:52:07 +0000 (01:52 +0000)
Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>

        * glib.h:
        * gslist.c: new function g_slist_copy() to duplicate a list with all its
        data pointers.
        * glist.c: new function g_list_copy.

14 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
glib.h
glib/glib.h
glib/glist.c
glib/gslist.c
glist.c
gslist.c

index 9d97aba..6fbd262 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
+
+       * glib.h:
+       * gslist.c: new function g_slist_copy() to duplicate a list with all its
+       data pointers.
+       * glist.c: new function g_list_copy.
+
 Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * INSTALL:
@@ -9,6 +16,7 @@ Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
        * Released GLib 1.1.5
 
 Wed Nov 18 1998 Elliot Lee <sopwith@redhat.com>
+
        * gdataset.c: There was a code path into g_data_set_internal
          through a function (g_datalist_id_set_full). Neither function
          checked for g_dataset_init having been run, but
index 9d97aba..6fbd262 100644 (file)
@@ -1,3 +1,10 @@
+Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
+
+       * glib.h:
+       * gslist.c: new function g_slist_copy() to duplicate a list with all its
+       data pointers.
+       * glist.c: new function g_list_copy.
+
 Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * INSTALL:
@@ -9,6 +16,7 @@ Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
        * Released GLib 1.1.5
 
 Wed Nov 18 1998 Elliot Lee <sopwith@redhat.com>
+
        * gdataset.c: There was a code path into g_data_set_internal
          through a function (g_datalist_id_set_full). Neither function
          checked for g_dataset_init having been run, but
index 9d97aba..6fbd262 100644 (file)
@@ -1,3 +1,10 @@
+Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
+
+       * glib.h:
+       * gslist.c: new function g_slist_copy() to duplicate a list with all its
+       data pointers.
+       * glist.c: new function g_list_copy.
+
 Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * INSTALL:
@@ -9,6 +16,7 @@ Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
        * Released GLib 1.1.5
 
 Wed Nov 18 1998 Elliot Lee <sopwith@redhat.com>
+
        * gdataset.c: There was a code path into g_data_set_internal
          through a function (g_datalist_id_set_full). Neither function
          checked for g_dataset_init having been run, but
index 9d97aba..6fbd262 100644 (file)
@@ -1,3 +1,10 @@
+Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
+
+       * glib.h:
+       * gslist.c: new function g_slist_copy() to duplicate a list with all its
+       data pointers.
+       * glist.c: new function g_list_copy.
+
 Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * INSTALL:
@@ -9,6 +16,7 @@ Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
        * Released GLib 1.1.5
 
 Wed Nov 18 1998 Elliot Lee <sopwith@redhat.com>
+
        * gdataset.c: There was a code path into g_data_set_internal
          through a function (g_datalist_id_set_full). Neither function
          checked for g_dataset_init having been run, but
index 9d97aba..6fbd262 100644 (file)
@@ -1,3 +1,10 @@
+Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
+
+       * glib.h:
+       * gslist.c: new function g_slist_copy() to duplicate a list with all its
+       data pointers.
+       * glist.c: new function g_list_copy.
+
 Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * INSTALL:
@@ -9,6 +16,7 @@ Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
        * Released GLib 1.1.5
 
 Wed Nov 18 1998 Elliot Lee <sopwith@redhat.com>
+
        * gdataset.c: There was a code path into g_data_set_internal
          through a function (g_datalist_id_set_full). Neither function
          checked for g_dataset_init having been run, but
index 9d97aba..6fbd262 100644 (file)
@@ -1,3 +1,10 @@
+Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
+
+       * glib.h:
+       * gslist.c: new function g_slist_copy() to duplicate a list with all its
+       data pointers.
+       * glist.c: new function g_list_copy.
+
 Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * INSTALL:
@@ -9,6 +16,7 @@ Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
        * Released GLib 1.1.5
 
 Wed Nov 18 1998 Elliot Lee <sopwith@redhat.com>
+
        * gdataset.c: There was a code path into g_data_set_internal
          through a function (g_datalist_id_set_full). Neither function
          checked for g_dataset_init having been run, but
index 9d97aba..6fbd262 100644 (file)
@@ -1,3 +1,10 @@
+Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
+
+       * glib.h:
+       * gslist.c: new function g_slist_copy() to duplicate a list with all its
+       data pointers.
+       * glist.c: new function g_list_copy.
+
 Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * INSTALL:
@@ -9,6 +16,7 @@ Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
        * Released GLib 1.1.5
 
 Wed Nov 18 1998 Elliot Lee <sopwith@redhat.com>
+
        * gdataset.c: There was a code path into g_data_set_internal
          through a function (g_datalist_id_set_full). Neither function
          checked for g_dataset_init having been run, but
index 9d97aba..6fbd262 100644 (file)
@@ -1,3 +1,10 @@
+Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
+
+       * glib.h:
+       * gslist.c: new function g_slist_copy() to duplicate a list with all its
+       data pointers.
+       * glist.c: new function g_list_copy.
+
 Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
 
        * INSTALL:
@@ -9,6 +16,7 @@ Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
        * Released GLib 1.1.5
 
 Wed Nov 18 1998 Elliot Lee <sopwith@redhat.com>
+
        * gdataset.c: There was a code path into g_data_set_internal
          through a function (g_datalist_id_set_full). Neither function
          checked for g_dataset_init having been run, but
diff --git a/glib.h b/glib.h
index 1b66572..551c2eb 100644 (file)
--- a/glib.h
+++ b/glib.h
@@ -885,6 +885,7 @@ GList* g_list_remove                (GList          *list,
 GList* g_list_remove_link      (GList          *list,
                                 GList          *llink);
 GList* g_list_reverse          (GList          *list);
+GList* g_list_copy             (GList          *list);
 GList* g_list_nth              (GList          *list,
                                 guint           n);
 GList* g_list_find             (GList          *list,
@@ -932,6 +933,7 @@ GSList* g_slist_remove              (GSList         *list,
 GSList* g_slist_remove_link    (GSList         *list,
                                 GSList         *llink);
 GSList* g_slist_reverse                (GSList         *list);
+GSList*        g_slist_copy            (GSList         *list);
 GSList* g_slist_nth            (GSList         *list,
                                 guint           n);
 GSList* g_slist_find           (GSList         *list,
index 1b66572..551c2eb 100644 (file)
@@ -885,6 +885,7 @@ GList* g_list_remove                (GList          *list,
 GList* g_list_remove_link      (GList          *list,
                                 GList          *llink);
 GList* g_list_reverse          (GList          *list);
+GList* g_list_copy             (GList          *list);
 GList* g_list_nth              (GList          *list,
                                 guint           n);
 GList* g_list_find             (GList          *list,
@@ -932,6 +933,7 @@ GSList* g_slist_remove              (GSList         *list,
 GSList* g_slist_remove_link    (GSList         *list,
                                 GSList         *llink);
 GSList* g_slist_reverse                (GSList         *list);
+GSList*        g_slist_copy            (GSList         *list);
 GSList* g_slist_nth            (GSList         *list,
                                 guint           n);
 GSList* g_slist_find           (GSList         *list,
index eaa77d8..ee9ad69 100644 (file)
@@ -274,6 +274,32 @@ g_list_remove_link (GList *list,
 }
 
 GList*
+g_list_copy (GList *list)
+{
+  GList *new_list = NULL;
+
+  if (list)
+    {
+      GList *last;
+
+      new_list = g_list_alloc ();
+      new_list->data = list->data;
+      last = new_list;
+      list = list->next;
+      while (list)
+       {
+         last->next = g_list_alloc ();
+         last->next->prev = last;
+         last = last->next;
+         last->data = list->data;
+         list = list->next;
+       }
+    }
+
+  return new_list;
+}
+
+GList*
 g_list_reverse (GList *list)
 {
   GList *last;
index e952900..6a76d22 100644 (file)
@@ -256,6 +256,31 @@ g_slist_remove_link (GSList *list,
 }
 
 GSList*
+g_slist_copy (GSList *list)
+{
+  GSList *new_list = NULL;
+
+  if (list)
+    {
+      GSList *last;
+
+      new_list = g_slist_alloc ();
+      new_list->data = list->data;
+      last = new_list;
+      list = list->next;
+      while (list)
+       {
+         last->next = g_slist_alloc ();
+         last = last->next;
+         last->data = list->data;
+         list = list->next;
+       }
+    }
+
+  return new_list;
+}
+
+GSList*
 g_slist_reverse (GSList *list)
 {
   GSList *tmp;
diff --git a/glist.c b/glist.c
index eaa77d8..ee9ad69 100644 (file)
--- a/glist.c
+++ b/glist.c
@@ -274,6 +274,32 @@ g_list_remove_link (GList *list,
 }
 
 GList*
+g_list_copy (GList *list)
+{
+  GList *new_list = NULL;
+
+  if (list)
+    {
+      GList *last;
+
+      new_list = g_list_alloc ();
+      new_list->data = list->data;
+      last = new_list;
+      list = list->next;
+      while (list)
+       {
+         last->next = g_list_alloc ();
+         last->next->prev = last;
+         last = last->next;
+         last->data = list->data;
+         list = list->next;
+       }
+    }
+
+  return new_list;
+}
+
+GList*
 g_list_reverse (GList *list)
 {
   GList *last;
index e952900..6a76d22 100644 (file)
--- a/gslist.c
+++ b/gslist.c
@@ -256,6 +256,31 @@ g_slist_remove_link (GSList *list,
 }
 
 GSList*
+g_slist_copy (GSList *list)
+{
+  GSList *new_list = NULL;
+
+  if (list)
+    {
+      GSList *last;
+
+      new_list = g_slist_alloc ();
+      new_list->data = list->data;
+      last = new_list;
+      list = list->next;
+      while (list)
+       {
+         last->next = g_slist_alloc ();
+         last = last->next;
+         last->data = list->data;
+         list = list->next;
+       }
+    }
+
+  return new_list;
+}
+
+GSList*
 g_slist_reverse (GSList *list)
 {
   GSList *tmp;