RE: [gtk-list] Re: glib datalists question
- From: "Verwerft, Marc" <MVerwerft nedcar nl>
- To: "'gtk-list redhat com'" <gtk-list redhat com>
- Subject: RE: [gtk-list] Re: glib datalists question
- Date: Wed, 10 Nov 1999 09:44:15 +0100
On Tue, 9 Nov, Havoc Pennington wrote:
>On Tue, 9 Nov 1999, Marc Verwerft wrote:
>> I have a question about glib datalists :
>> Why does 'g_datalist_id_set_data_full' not accept items when
the
>> datavalue is NULL or zero ?
>>
>> I thought datalists had the same function as name/value pairs in
CORBA.
>> Am I wrong ? Am I trying to 'abuse' datalists or is there another
>> explanation ?
>>
>
>It looks to me like it will take a NULL value for the data as long
as your
>destroy notify function is NULL. The reason is that "NULL value"
and
>"unset" are equivalent (to set something to NULL, datalist just
deletes it
>from the list; if you set something to NULL, it's the same as
removing
>it). So you can't have a destroy func for something that's not in
the
>datalist.
>
>Havoc
No, it will never take a NULL value, not even when the destroy
notify function is NULL.
I've made a small, but otherwise useless ;-}, program that shows the
behaviour.
Is there another way to save a set of name/value pairs with NULL
values using glib ?
----------Cut Here--------------
/* * Testing of datalists */
#include <stdio.h>
#include <stdlib.h>
#include <glib.h>
struct _prop_st {
char *id;
gpointer val;
};
typedef struct _prop_st prop_st;
prop_st props[] = { {"first", (gpointer) 1},
{"second", (gpointer) 0},
{"third", (gpointer) 2},
{"fourth", (gpointer) 1000 },
{"fifth", (gpointer) 2000 },
{NULL, NULL}};
void print_vals(GQuark id, gpointer data, gpointer user_Data)
{
printf("%s : %d\n", g_quark_to_string(id), (int) data);
}
int main(int argc, char *argv[])
{
GData *dl;
int i, j;
g_datalist_init(&dl);
for (i=0; props[i].id != NULL; i++) {
quarks[i] = g_quark_from_string(props[i].id);
g_datalist_id_set_data_full(&dl, quarks[i], props[i].val, NULL);
}
printf("---- 'foreach' iteration ----\n");
g_datalist_foreach(&dl, print_vals, NULL);
exit(0);
}
----------Cut Here--------------
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]