#include <glib-2.0/glib.h>
#define btoa(x) ((x) ? "TRUE" : "FALSE")
int main(int argc, char** argv) {
GHashTable* hash = g_hash_table_new((GHashFunc)g_string_hash,
(GEqualFunc)g_string_equal);
g_hash_table_insert(hash, g_string_new("Key1"), g_string_new("val1"));
g_hash_table_insert(hash, g_string_new("Key2"), g_string_new("val2"));
g_hash_table_insert(hash, g_string_new("Key3"), g_string_new("val3"));
g_hash_table_insert(hash, g_string_new("Key4"), g_string_new("val4"));
g_hash_table_insert(hash, g_string_new("Key5"), g_string_new("val5"));
/* キーのリスト */
GList* keys = g_hash_table_get_keys(hash);
/* 値のリスト */
GList* values = g_hash_table_get_values(hash);
/* 位置の対応関係はあるか? */
for (gsize i = 0; i < g_list_length(keys); i++) {
g_print("%s\n", btoa(g_string_equal((GString*)g_hash_table_lookup(hash, g_list_nth_data(keys, i)), (GString*)g_list_nth_data(values, i))));
}
g_list_free(keys);
g_list_free(values);
g_hash_table_destroy(hash);
return EXIT_SUCCESS;
}
I2luY2x1ZGUgPGdsaWItMi4wL2dsaWIuaD4KCiNkZWZpbmUgYnRvYSh4KSAoKHgpID8gIlRSVUUiIDogIkZBTFNFIikKCmludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewogIEdIYXNoVGFibGUqIGhhc2ggPSBnX2hhc2hfdGFibGVfbmV3KChHSGFzaEZ1bmMpZ19zdHJpbmdfaGFzaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR0VxdWFsRnVuYylnX3N0cmluZ19lcXVhbCk7CiAgZ19oYXNoX3RhYmxlX2luc2VydChoYXNoLCBnX3N0cmluZ19uZXcoIktleTEiKSwgZ19zdHJpbmdfbmV3KCJ2YWwxIikpOwogIGdfaGFzaF90YWJsZV9pbnNlcnQoaGFzaCwgZ19zdHJpbmdfbmV3KCJLZXkyIiksIGdfc3RyaW5nX25ldygidmFsMiIpKTsKICBnX2hhc2hfdGFibGVfaW5zZXJ0KGhhc2gsIGdfc3RyaW5nX25ldygiS2V5MyIpLCBnX3N0cmluZ19uZXcoInZhbDMiKSk7CiAgZ19oYXNoX3RhYmxlX2luc2VydChoYXNoLCBnX3N0cmluZ19uZXcoIktleTQiKSwgZ19zdHJpbmdfbmV3KCJ2YWw0IikpOwogIGdfaGFzaF90YWJsZV9pbnNlcnQoaGFzaCwgZ19zdHJpbmdfbmV3KCJLZXk1IiksIGdfc3RyaW5nX25ldygidmFsNSIpKTsKICAvKiDjgq3jg7zjga7jg6rjgrnjg4ggKi8KICBHTGlzdCoga2V5cyA9IGdfaGFzaF90YWJsZV9nZXRfa2V5cyhoYXNoKTsKICAvKiDlgKTjga7jg6rjgrnjg4ggKi8KICBHTGlzdCogdmFsdWVzID0gZ19oYXNoX3RhYmxlX2dldF92YWx1ZXMoaGFzaCk7CiAgLyog5L2N572u44Gu5a++5b+c6Zai5L+C44Gv44GC44KL44GLPyAqLwogIGZvciAoZ3NpemUgaSA9IDA7IGkgPCBnX2xpc3RfbGVuZ3RoKGtleXMpOyBpKyspIHsKICAgIGdfcHJpbnQoIiVzXG4iLCBidG9hKGdfc3RyaW5nX2VxdWFsKChHU3RyaW5nKilnX2hhc2hfdGFibGVfbG9va3VwKGhhc2gsIGdfbGlzdF9udGhfZGF0YShrZXlzLCBpKSksIChHU3RyaW5nKilnX2xpc3RfbnRoX2RhdGEodmFsdWVzLCBpKSkpKTsKICB9CiAgZ19saXN0X2ZyZWUoa2V5cyk7CiAgZ19saXN0X2ZyZWUodmFsdWVzKTsKICBnX2hhc2hfdGFibGVfZGVzdHJveShoYXNoKTsKICByZXR1cm4gRVhJVF9TVUNDRVNTOwp9Cg==