Tristan Van Berkom
Sat, 27 Feb 2010 19:07:05 -0800
On Sat, Feb 27, 2010 at 9:50 PM, Brian Lavender <br...@brie.com> wrote: > I guess the list stripped the attachments. The code is included in this > message. >
Hi,
First of all it would be helpful if you told us what is the problem with
your code, off the bat I could tell you that the way you pass a pointer
to an array of pointers is foreign to me, I think I would have just used
"GArray ***arrays_p;" for that argument.
But on the other hand, you could just save yourself that headache and
use a GPtrArray of GArrays (you could even get carried away and whip
up an api that updates the values of ptrarray->pdata[i] = garray->data
and have a real indexable array in C...).
Cheers,
-Tristan
> brian
>
> On Sat, Feb 27, 2010 at 06:47:30PM -0800, Brian Lavender wrote:
>> I was experimenting with creating an array of arrays. Maybe I shouldn't
>> be using GArray but something different such as pointer arrays and
>> allocating memory for each element?
>>
>> I wrote two sample programs. The first one, just loads one array. The
>> second, loads an array of arrays. I don't know if I have a problem with
>> operator precedence or if the GArrays point to just one array.
>>
>> The two programs are the following.
>>
>> simplearray.c - loads just one array
>> simplearray2.c - loads an array of arrays
>>
>> Any input is appreciated.
>
> === simplearray.c ===
>
> #include <glib.h>
>
> #define NUM_ARYS 5
>
> void load_array( GArray **garray)
> {
> gint i, storevalue;
> *garray = g_array_new (FALSE, FALSE, sizeof (gint));
> for (i = 0; i < 10; i++) {
> storevalue = (i + 103) % 45;
> g_array_append_val (*garray, storevalue);
> }
> }
>
> int main() {
> GArray *garray[NUM_ARYS];
> gint i, storevalue;
> /* We create a new array to store gint values.
> We don't want it zero-terminated or cleared to 0's. */
> load_array(&garray[0]);
>
> for (i = 0; i < 10; i++)
> g_print ("index %d value %d\n",
> i, g_array_index (garray[0], gint, i));
> g_array_free (garray[0], TRUE);
> }
>
> === simplearray2.c ===
>
>
> #include <glib.h>
>
> #define NUM_ARYS 5
>
> void load_array( GArray *(*garray)[NUM_ARYS] )
> {
> gint i,j, storevalue;
> for (j=0; j < NUM_ARYS; j++) {
> (*garray)[j] = g_array_new (FALSE, FALSE, sizeof (gint));
> g_printf("Load Array %d\n", j);
> for (i = 0; i < 10; i++) {
> storevalue = (i + 103) % ( (j +1) * 2 );
> g_array_append_val ( (*garray)[j], storevalue );
> g_print ("load idx %d value %d\n",
> i, storevalue );
> }
> }
> }
>
> int main() {
> GArray *garray[NUM_ARYS];
> gint i,j, storevalue;
> /* We create a new array to store gint values.
> We don't want it zero-terminated or cleared to 0's. */
> load_array(&garray);
>
> for (j=0; j < NUM_ARYS; j++) {
> g_printf("Array %d\n", j);
> for (i = 0; i < 10; i++)
> g_print ("index %d value %d\n",
> i, g_array_index (garray[1], gint, i));
> }
>
> for (j=0; j < NUM_ARYS; j++)
> g_array_free (garray[j], TRUE);
>
> }
>
> --
> Brian Lavender
> http://www.brie.com/brian/
>
> "About 3 million computers get sold every year in China, but people don't
> pay for the software. Someday they will, though. As long as they are going
> to steal it, we want them to steal ours. They'll get sort of addicted, and
> then we'll somehow figure out how to collect sometime in the next decade."
>
> -- Bill Gates (Microsoft) 1998
> _______________________________________________
> gtk-app-devel-list mailing list
> gtk-app-devel-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
>
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list