| 
									
										
										
										
											1999-01-03 06:44:45 +00:00
										 |  |  | /* GLIB - Library of useful routines for C programming
 | 
					
						
							|  |  |  |  * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This library is free software; you can redistribute it and/or | 
					
						
							| 
									
										
										
										
											2000-07-26 11:02:02 +00:00
										 |  |  |  * modify it under the terms of the GNU Lesser General Public | 
					
						
							| 
									
										
										
										
											1999-01-03 06:44:45 +00:00
										 |  |  |  * License as published by the Free Software Foundation; either | 
					
						
							|  |  |  |  * version 2 of the License, or (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This library is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
					
						
							| 
									
										
										
										
											2000-07-26 11:02:02 +00:00
										 |  |  |  * Lesser General Public License for more details. | 
					
						
							| 
									
										
										
										
											1999-01-03 06:44:45 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2000-07-26 11:02:02 +00:00
										 |  |  |  * You should have received a copy of the GNU Lesser General Public | 
					
						
							| 
									
										
										
										
											1999-01-03 06:44:45 +00:00
										 |  |  |  * License along with this library; if not, write to the | 
					
						
							|  |  |  |  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 
					
						
							|  |  |  |  * Boston, MA 02111-1307, USA. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											1999-02-24 06:14:27 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2000-07-26 11:02:02 +00:00
										 |  |  |  * Modified by the GLib Team and others 1997-2000.  See the AUTHORS | 
					
						
							| 
									
										
										
										
											1999-02-24 06:14:27 +00:00
										 |  |  |  * file for a list of people on the GLib Team.  See the ChangeLog | 
					
						
							|  |  |  |  * files for a list of changes.  These files are distributed with | 
					
						
							|  |  |  |  * GLib at ftp://ftp.gtk.org/pub/gtk/. 
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-19 20:07:41 +00:00
										 |  |  | #undef G_DISABLE_ASSERT
 | 
					
						
							| 
									
										
										
										
											1999-01-03 06:44:45 +00:00
										 |  |  | #undef G_LOG_DOMAIN
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <stdio.h>
 | 
					
						
							|  |  |  | #include <string.h>
 | 
					
						
							|  |  |  | #include "glib.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-12-26 01:04:12 +00:00
										 |  |  | static void  | 
					
						
							|  |  |  | sum_up (gpointer data,  | 
					
						
							|  |  |  | 	gpointer user_data) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   gint *sum = (gint *)user_data; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   *sum += GPOINTER_TO_INT (data); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-01-03 06:44:45 +00:00
										 |  |  | int | 
					
						
							|  |  |  | main (int   argc, | 
					
						
							|  |  |  |       char *argv[]) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   gint i; | 
					
						
							|  |  |  |   GArray *garray; | 
					
						
							|  |  |  |   GPtrArray *gparray; | 
					
						
							|  |  |  |   GByteArray *gbarray; | 
					
						
							| 
									
										
										
										
											2003-12-26 01:04:12 +00:00
										 |  |  |   gint sum = 0; | 
					
						
							| 
									
										
										
										
											1999-01-03 06:44:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   /* array tests */ | 
					
						
							|  |  |  |   garray = g_array_new (FALSE, FALSE, sizeof (gint)); | 
					
						
							|  |  |  |   for (i = 0; i < 10000; i++) | 
					
						
							|  |  |  |     g_array_append_val (garray, i); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   for (i = 0; i < 10000; i++) | 
					
						
							|  |  |  |     g_assert (g_array_index (garray, gint, i) == i); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   g_array_free (garray, TRUE); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   garray = g_array_new (FALSE, FALSE, sizeof (gint)); | 
					
						
							|  |  |  |   for (i = 0; i < 100; i++) | 
					
						
							|  |  |  |     g_array_prepend_val (garray, i); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   for (i = 0; i < 100; i++) | 
					
						
							|  |  |  |     g_assert (g_array_index (garray, gint, i) == (100 - i - 1)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   g_array_free (garray, TRUE); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* pointer arrays */ | 
					
						
							|  |  |  |   gparray = g_ptr_array_new (); | 
					
						
							|  |  |  |   for (i = 0; i < 10000; i++) | 
					
						
							|  |  |  |     g_ptr_array_add (gparray, GINT_TO_POINTER (i)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   for (i = 0; i < 10000; i++) | 
					
						
							|  |  |  |     if (g_ptr_array_index (gparray, i) != GINT_TO_POINTER (i)) | 
					
						
							| 
									
										
										
										
											2005-03-14 06:01:51 +00:00
										 |  |  |       g_print ("array fails: %p ( %p )\n", | 
					
						
							|  |  |  | 	       g_ptr_array_index (gparray, i), | 
					
						
							|  |  |  | 	       GINT_TO_POINTER (i)); | 
					
						
							| 
									
										
										
										
											2003-12-26 01:04:12 +00:00
										 |  |  |    | 
					
						
							|  |  |  |   g_ptr_array_foreach (gparray, sum_up, &sum); | 
					
						
							|  |  |  |   g_assert (sum == 49995000); | 
					
						
							| 
									
										
										
										
											1999-01-03 06:44:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   g_ptr_array_free (gparray, TRUE); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* byte arrays */ | 
					
						
							|  |  |  |   gbarray = g_byte_array_new (); | 
					
						
							|  |  |  |   for (i = 0; i < 10000; i++) | 
					
						
							|  |  |  |     g_byte_array_append (gbarray, (guint8*) "abcd", 4); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   for (i = 0; i < 10000; i++) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       g_assert (gbarray->data[4*i] == 'a'); | 
					
						
							|  |  |  |       g_assert (gbarray->data[4*i+1] == 'b'); | 
					
						
							|  |  |  |       g_assert (gbarray->data[4*i+2] == 'c'); | 
					
						
							|  |  |  |       g_assert (gbarray->data[4*i+3] == 'd'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   g_byte_array_free (gbarray, TRUE); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 |