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 6fbd2622cebb6abc5fc630a58b69027aeaacc501..f13b2a63258f3abbfc3a2cf07c1796e898406361 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 6fbd2622cebb6abc5fc630a58b69027aeaacc501..f13b2a63258f3abbfc3a2cf07c1796e898406361 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 6fbd2622cebb6abc5fc630a58b69027aeaacc501..f13b2a63258f3abbfc3a2cf07c1796e898406361 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 6fbd2622cebb6abc5fc630a58b69027aeaacc501..f13b2a63258f3abbfc3a2cf07c1796e898406361 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 6fbd2622cebb6abc5fc630a58b69027aeaacc501..f13b2a63258f3abbfc3a2cf07c1796e898406361 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 6fbd2622cebb6abc5fc630a58b69027aeaacc501..f13b2a63258f3abbfc3a2cf07c1796e898406361 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 6fbd2622cebb6abc5fc630a58b69027aeaacc501..f13b2a63258f3abbfc3a2cf07c1796e898406361 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 6fbd2622cebb6abc5fc630a58b69027aeaacc501..f13b2a63258f3abbfc3a2cf07c1796e898406361 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 fd5e7b9e21fa3d6adaee1bd1b182b7b7cf1ab4e8..0247972ecce546b159d0c502f1adea3269353fc0 100644 (file)
--- a/garray.c
+++ b/garray.c
@@ -112,6 +112,27 @@ g_array_prepend_vals (GArray        *farray,
   return 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 551c2eb88b503e43974bd03a273c44772af634bf..2e4982eb9de14f22ed71ea4d4c38bc2050b0a459 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 fd5e7b9e21fa3d6adaee1bd1b182b7b7cf1ab4e8..0247972ecce546b159d0c502f1adea3269353fc0 100644 (file)
@@ -112,6 +112,27 @@ g_array_prepend_vals (GArray        *farray,
   return 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 551c2eb88b503e43974bd03a273c44772af634bf..2e4982eb9de14f22ed71ea4d4c38bc2050b0a459 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,