added g_array_insert_vals() to insert elements at an arbitrary index, and
authorOwen Taylor <otaylor@gtk.org>
Mon, 23 Nov 1998 15:02:44 +0000 (15:02 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Mon, 23 Nov 1998 15:02:44 +0000 (15:02 +0000)
Mon Nov 23 10:03:58 1998  Owen Taylor  <otaylor@gtk.org>

* glib.h garray.[ch]: added g_array_insert_vals() to
insert elements at an arbitrary index, and
g_array_insert_val() macro.

12 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
garray.c
glib.h
glib/garray.c
glib/glib.h

index 6fbd262..f13b2a6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon Nov 23 10:03:58 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * glib.h garray.[ch]: added g_array_insert_vals() to
+       insert elements at an arbitrary index, and
+       g_array_insert_val() macro.
+
 Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
 
        * glib.h:
index 6fbd262..f13b2a6 100644 (file)
@@ -1,3 +1,9 @@
+Mon Nov 23 10:03:58 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * glib.h garray.[ch]: added g_array_insert_vals() to
+       insert elements at an arbitrary index, and
+       g_array_insert_val() macro.
+
 Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
 
        * glib.h:
index 6fbd262..f13b2a6 100644 (file)
@@ -1,3 +1,9 @@
+Mon Nov 23 10:03:58 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * glib.h garray.[ch]: added g_array_insert_vals() to
+       insert elements at an arbitrary index, and
+       g_array_insert_val() macro.
+
 Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
 
        * glib.h:
index 6fbd262..f13b2a6 100644 (file)
@@ -1,3 +1,9 @@
+Mon Nov 23 10:03:58 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * glib.h garray.[ch]: added g_array_insert_vals() to
+       insert elements at an arbitrary index, and
+       g_array_insert_val() macro.
+
 Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
 
        * glib.h:
index 6fbd262..f13b2a6 100644 (file)
@@ -1,3 +1,9 @@
+Mon Nov 23 10:03:58 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * glib.h garray.[ch]: added g_array_insert_vals() to
+       insert elements at an arbitrary index, and
+       g_array_insert_val() macro.
+
 Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
 
        * glib.h:
index 6fbd262..f13b2a6 100644 (file)
@@ -1,3 +1,9 @@
+Mon Nov 23 10:03:58 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * glib.h garray.[ch]: added g_array_insert_vals() to
+       insert elements at an arbitrary index, and
+       g_array_insert_val() macro.
+
 Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
 
        * glib.h:
index 6fbd262..f13b2a6 100644 (file)
@@ -1,3 +1,9 @@
+Mon Nov 23 10:03:58 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * glib.h garray.[ch]: added g_array_insert_vals() to
+       insert elements at an arbitrary index, and
+       g_array_insert_val() macro.
+
 Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
 
        * glib.h:
index 6fbd262..f13b2a6 100644 (file)
@@ -1,3 +1,9 @@
+Mon Nov 23 10:03:58 1998  Owen Taylor  <otaylor@gtk.org>
+
+       * glib.h garray.[ch]: added g_array_insert_vals() to
+       insert elements at an arbitrary index, and
+       g_array_insert_val() macro.
+
 Sun Nov 22 17:07:03 1998  Tim Janik  <timj@gtk.org>
 
        * glib.h:
index fd5e7b9..0247972 100644 (file)
--- a/garray.c
+++ b/garray.c
@@ -113,6 +113,27 @@ g_array_prepend_vals (GArray        *farray,
 }
 
 GArray*
+g_array_insert_vals (GArray        *farray,
+                    guint          index,
+                    gconstpointer  data,
+                    guint          len)
+{
+  GRealArray *array = (GRealArray*) farray;
+
+  g_array_maybe_expand (array, len);
+
+  g_memmove (array->data + array->elt_size * (len + index), 
+            array->data + array->elt_size * index, 
+            array->elt_size * (array->len - index));
+
+  memcpy (array->data + array->elt_size * index, data, len * array->elt_size);
+
+  array->len += len;
+
+  return farray;
+}
+
+GArray*
 g_array_set_size (GArray *farray,
                  guint   length)
 {
diff --git a/glib.h b/glib.h
index 551c2eb..2e4982e 100644 (file)
--- a/glib.h
+++ b/glib.h
@@ -1644,6 +1644,7 @@ void       g_string_sprintfa  (GString     *string,
 
 #define g_array_append_val(a,v) g_array_append_vals(a,&v,1)
 #define g_array_prepend_val(a,v) g_array_prepend_vals(a,&v,1)
+#define g_array_insert_val(a,i,v) g_array_prepend_vals(a,i,&v,1)
 #define g_array_index(a,t,i) (((t*)a->data)[i])
 
 GArray* g_array_new              (gboolean         zero_terminated,
@@ -1657,6 +1658,10 @@ GArray* g_array_append_vals       (GArray           *array,
 GArray* g_array_prepend_vals      (GArray         *array,
                                   gconstpointer    data,
                                   guint            len);
+GArray* g_array_insert_vals       (GArray          *array,
+                                  guint            index,
+                                  gconstpointer    data,
+                                  guint            len);
 GArray* g_array_set_size          (GArray         *array,
                                   guint            length);
 GArray* g_array_remove_index     (GArray          *array,
index fd5e7b9..0247972 100644 (file)
@@ -113,6 +113,27 @@ g_array_prepend_vals (GArray        *farray,
 }
 
 GArray*
+g_array_insert_vals (GArray        *farray,
+                    guint          index,
+                    gconstpointer  data,
+                    guint          len)
+{
+  GRealArray *array = (GRealArray*) farray;
+
+  g_array_maybe_expand (array, len);
+
+  g_memmove (array->data + array->elt_size * (len + index), 
+            array->data + array->elt_size * index, 
+            array->elt_size * (array->len - index));
+
+  memcpy (array->data + array->elt_size * index, data, len * array->elt_size);
+
+  array->len += len;
+
+  return farray;
+}
+
+GArray*
 g_array_set_size (GArray *farray,
                  guint   length)
 {
index 551c2eb..2e4982e 100644 (file)
@@ -1644,6 +1644,7 @@ void       g_string_sprintfa  (GString     *string,
 
 #define g_array_append_val(a,v) g_array_append_vals(a,&v,1)
 #define g_array_prepend_val(a,v) g_array_prepend_vals(a,&v,1)
+#define g_array_insert_val(a,i,v) g_array_prepend_vals(a,i,&v,1)
 #define g_array_index(a,t,i) (((t*)a->data)[i])
 
 GArray* g_array_new              (gboolean         zero_terminated,
@@ -1657,6 +1658,10 @@ GArray* g_array_append_vals       (GArray           *array,
 GArray* g_array_prepend_vals      (GArray         *array,
                                   gconstpointer    data,
                                   guint            len);
+GArray* g_array_insert_vals       (GArray          *array,
+                                  guint            index,
+                                  gconstpointer    data,
+                                  guint            len);
 GArray* g_array_set_size          (GArray         *array,
                                   guint            length);
 GArray* g_array_remove_index     (GArray          *array,