114
114
GIBaseInfo *base_info;
115
115
GjsForeignInfo *retval = NULL;
116
116
GHashTable *hash_table;
118
119
base_info = g_type_info_get_interface(type_info);
120
char *key = g_strdup_printf("%s.%s", g_base_info_get_namespace(base_info),
121
g_base_info_get_name(base_info));
122
hash_table = get_foreign_structs();
123
retval = (GjsForeignInfo*)g_hash_table_lookup(hash_table, key);
125
if (gjs_foreign_load_foreign_module(context, g_base_info_get_namespace(base_info))) {
126
retval = (GjsForeignInfo*)g_hash_table_lookup(hash_table, key);
120
g_assert (base_info != NULL);
122
key = g_strdup_printf("%s.%s", g_base_info_get_namespace(base_info),
123
g_base_info_get_name(base_info));
124
hash_table = get_foreign_structs();
125
retval = (GjsForeignInfo*)g_hash_table_lookup(hash_table, key);
127
if (gjs_foreign_load_foreign_module(context, g_base_info_get_namespace(base_info))) {
128
retval = (GjsForeignInfo*)g_hash_table_lookup(hash_table, key);
129
g_base_info_unref(base_info);
133
gjs_throw(context, "Unable to find module implementing foreign type %s.%s",
134
g_base_info_get_namespace(base_info),
135
g_base_info_get_name(base_info));
138
g_base_info_unref(base_info);