+2006-08-17 Aaron Bockover <abockover@novell.com>
+
+ * src/gptrarray.c: Added g_ptr_array_set_size implementation
+
+ * test/ptrarray.c: Added test for g_ptr_array_set_size
+
2006-08-17 Miguel de Icaza <miguel@novell.com>
* src/glib.h: A handful of extra macros
return data;
}
+void
+g_ptr_array_set_size(GPtrArray *array, gint length)
+{
+ g_return_if_fail(array != NULL);
+
+ if(length > array->len) {
+ g_ptr_array_grow((GPtrArrayPriv *)array, length);
+ memset(array->pdata + array->len, 0, (length - array->len)
+ * sizeof(gpointer));
+ }
+
+ array->len = length;
+}
+
void
g_ptr_array_add(GPtrArray *array, gpointer data)
{
return foreach_iterate_error;
}
+char *ptrarray_set_size()
+{
+ GPtrArray *array = g_ptr_array_new();
+ gint i, grow_length = 50;
+
+ g_ptr_array_add(array, (gpointer)items[0]);
+ g_ptr_array_add(array, (gpointer)items[1]);
+ g_ptr_array_set_size(array, grow_length);
+
+ if(array->len != grow_length) {
+ return g_strdup_printf("Array length should be 50, it is %d",
+ array->len);
+ } else if(array->pdata[0] != items[0]) {
+ return g_strdup_printf("Item 0 was overwritten, should be %s",
+ items[0]);
+ } else if(array->pdata[1] != items[1]) {
+ return g_strdup_printf("Item 1 was overwritten, should be %s",
+ items[1]);
+ }
+
+ for(i = 2; i < array->len; i++) {
+ if(array->pdata[i] != NULL) {
+ return g_strdup_printf("Item %d is not NULL, it is %p",
+ i, array->pdata[i]);
+ }
+ }
+
+ g_ptr_array_free(array, TRUE);
+
+ return NULL;
+}
+
static Test ptrarray_tests [] = {
{"ptrarray_alloc", ptrarray_alloc},
{"ptrarray_for_iterate", ptrarray_for_iterate},
{"ptrarray_foreach_iterate", ptrarray_foreach_iterate},
+ {"ptrarray_set_size", ptrarray_set_size},
{NULL, NULL}
};