[bindings perl] change ghashtable interface to not use GHashTableIter
This commit is contained in:
parent
fbf7ad0537
commit
f4c6c96836
|
@ -78,6 +78,15 @@ set_hash_of_objects(GHashTable **hash, HV *hv)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
__ht_foreach_get_hos(gpointer key, gpointer value, gpointer user_data)
|
||||
{
|
||||
HV *hv = user_data;
|
||||
|
||||
(void)hv_store(hv, key, strlen(key), newSVpv(value, 0), 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* get_hash_of_strings:
|
||||
* @hash: a #GHashTable of strings
|
||||
|
@ -85,18 +94,21 @@ set_hash_of_objects(GHashTable **hash, HV *hv)
|
|||
HV*
|
||||
get_hash_of_strings(GHashTable *hash)
|
||||
{
|
||||
GHashTableIter iter;
|
||||
gpointer key, value;
|
||||
HV *hv;
|
||||
|
||||
hv = newHV();
|
||||
g_hash_table_iter_init(&iter, hash);
|
||||
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
||||
(void)hv_store(hv, key, strlen(key), newSVpv(value, 0), 0);
|
||||
}
|
||||
g_hash_table_foreach(hash, __ht_foreach_get_hos, hv);
|
||||
return hv;
|
||||
}
|
||||
|
||||
static void
|
||||
__ht_foreach_get_hoo(gpointer key, gpointer value, gpointer user_data)
|
||||
{
|
||||
HV *hv = user_data;
|
||||
|
||||
(void)hv_store(hv, key, strlen(key), gperl_new_object(value, FALSE), 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* get_hash_of_objects:
|
||||
* @hash: a #GHashTable of objects
|
||||
|
@ -104,14 +116,9 @@ get_hash_of_strings(GHashTable *hash)
|
|||
HV*
|
||||
get_hash_of_objects(GHashTable *hash)
|
||||
{
|
||||
GHashTableIter iter;
|
||||
gpointer key, value;
|
||||
HV *hv;
|
||||
|
||||
hv = newHV();
|
||||
g_hash_table_iter_init(&iter, hash);
|
||||
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
||||
(void)hv_store(hv, key, strlen(key), gperl_new_object(value, FALSE), 0);
|
||||
}
|
||||
g_hash_table_foreach(hash, __ht_foreach_get_hos, hv);
|
||||
return hv;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue