GHashTable



Hi,

I've some questions about GHashTable. I used a GHashTable in the past to
store some char* key and value pairs without problems. Now I like to
store GladeXML* as value and a char* as key. This is what I tried:

static GHashTable *glade_hash;

void register_glade_parent (GladeXML *glade_xml, 
                            const char *parent_name)
{
  static gboolean init = FALSE;

  if (!init)
  {
    glade_hash = g_hash_table_new_full (g_direct_hash, g_direct_equal,
                                        g_free, g_free);
    init = TRUE;
  }

  g_hash_table_replace (glade_hash,
                        strdup (parent_name),
                        glade_xml);

}

GtkWidget *lookup_glade_widget (const char *parent_name, 
                                const char *widget_name)
{
  GladeXML *glade_xml;
  GtkWidget *found_widget;
  gpointer lookup;

  lookup = g_hash_table_lookup (glade_hash,
                                parent_name);

  glade_xml = (GladeXML *) lookup;

  found_widget = glade_xml_get_widget (glade_xml, widget_name);

  return found_widget;
}

I expect to get a widget with lookup_glade_widget() after register his
GladeXML* with register_glade_parent(). But I get everytime NULL for 

lookup = g_hash_table_lookup (glade_hash, parent_name);

Why isn't the object found in the GHashTable?

regards
Andreas



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]