diff --git a/ChangeLog b/ChangeLog index 6fbd2622c..f13b2a632 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Mon Nov 23 10:03:58 1998 Owen Taylor + + * 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 * glib.h: diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 6fbd2622c..f13b2a632 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,9 @@ +Mon Nov 23 10:03:58 1998 Owen Taylor + + * 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 * glib.h: diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 6fbd2622c..f13b2a632 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +Mon Nov 23 10:03:58 1998 Owen Taylor + + * 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 * glib.h: diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 6fbd2622c..f13b2a632 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,9 @@ +Mon Nov 23 10:03:58 1998 Owen Taylor + + * 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 * glib.h: diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 6fbd2622c..f13b2a632 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,9 @@ +Mon Nov 23 10:03:58 1998 Owen Taylor + + * 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 * glib.h: diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 6fbd2622c..f13b2a632 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,9 @@ +Mon Nov 23 10:03:58 1998 Owen Taylor + + * 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 * glib.h: diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 6fbd2622c..f13b2a632 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +Mon Nov 23 10:03:58 1998 Owen Taylor + + * 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 * glib.h: diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 6fbd2622c..f13b2a632 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +Mon Nov 23 10:03:58 1998 Owen Taylor + + * 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 * glib.h: diff --git a/garray.c b/garray.c index fd5e7b9e2..0247972ec 100644 --- 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 551c2eb88..2e4982eb9 100644 --- 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, diff --git a/glib/garray.c b/glib/garray.c index fd5e7b9e2..0247972ec 100644 --- a/glib/garray.c +++ b/glib/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/glib.h b/glib/glib.h index 551c2eb88..2e4982eb9 100644 --- a/glib/glib.h +++ b/glib/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,