Предоставьте свои собственные функции равенства и хеш-функции для g_hash_table_new
вместо g_str_equal
и g_str_hash
.
Вероятно, самый простой способ написать хеш - это взять копию источника для g_str_hash
, но при чтении каждого символа перед продолжением переведите его в нижний регистр. Но есть любое количество алгоритмов хеширования строк, которые вы можете использовать, просто адаптируйте один, чтобы две строки, отличающиеся только регистром, приводили к одному и тому же значению хеш-функции.
Пока вам нужно беспокоиться только о строках ASCII, вы можете почти (но не совсем) использовать g_ascii_strcasecmp
для функции равенства. Вам необходимо настроить возвращаемое значение. Если вы хотите поддерживать больший набор символов, используйте для этого набора сравнение без учета регистра.