c - g_hash_table_lookup() not accepting variable as parameter -
consider following code:
gtk_widget_show(g_hash_table_lookup(widgetbuffer,"togglebutton")); gtk_toggle_button_set_active(gtk_toggle_button(g_hash_table_lookup(widgetbuffer,"togglebutton"))),true);
line 1 works fine, line 2 throws error:
gtk-critical **: gtk_toggle_button_set_active: assertion `gtk_is_toggle_button (toggle_button)' failed
why this? if g_hash_table_lookup returning gtkwidget pointer gtk_widget_show handles fine, why can't gtk_toggle_button()
cast it's type properly?
(also, gtk_toggle_button_set_active causes no errors on compile, @ runtime)
edit: clarity, is gtktogglebutton (note dereferencer , how causes error):
gtk_toggle_button_set_active(*gtk_toggle_button(g_hash_table_lookup(widgetbuffer,"togglebutton"))),true); note: expected ‘struct gtktogglebutton *’ argument of type ‘gtktogglebutton’
however
printf("pointer: %p\n",gtk_toggle_button(g_hash_table_lookup(widgetbuffer,(gchar *) xmlgetprop(cur2, (xmlchar *) "name")))); printf("xml data: %s\n",xmlgetprop(cur2, (xmlchar *) "name")); printf("hash table output pointer: %p\n\n",g_hash_table_lookup(widgetbuffer,xmlgetprop(cur2, (xmlchar *) "name")));
thoroughly confused.
typical output:
pointer: (nil) xml data: log hash table output pointer: (nil)
just make sure:
printf("manual hash table output pointer: %p\n", g_hash_table_lookup(widgetbuffer,(gchar *) "log")); printf("manual hash table output pointer: %p\n", g_hash_table_lookup(widgetbuffer,"log")); printf("manual hash table output pointer: %p\n", g_hash_table_lookup(widgetbuffer,"(char *) log"));
all return:
manual hash table output pointer: 0x1e08430
perhaps has removed last reference toggle button between time when added hash table , when call set_active()
on it?
but think it's more you're not getting pointer out think are. trick of dereferencing *gtk_toggle_button(g_hash_table_lookup(...))
doesn't tell pointer stored in hash table; gtk_toggle_button()
casts pointer gtktogglebutton *
, no matter dereference, compiler thinks gtktogglebutton
structure.
Comments
Post a Comment