khash

Overview

  • mruby の実装でひろく利用されるハッシュの実装です。 [attractivechaos/klib](https://github.com/attractivechaos/klib) を参考に実装されているようです。
  • ほぼ全てが khash.h でマクロで実装されています
  • CRuby の st_table の代替とみることができるはず?

Details

APIs

KHASH_DECLARE(name, khkey_t, khval_t, kh_is_map)

  • khash を利用した新しいハッシュテーブルの型を宣言します

KHASH_DEFINE(name, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal)

  • khash を利用した新しいハッシュテーブルの型を定義します

kh_get(name, mrb, h, k)

  • khash インスタンスのキーを取得します

kh_put(name, mrb, h, k)

  • khash インスタンスに新しいキーを追加します

kh_val(h, x)

  • khash インスタンスの値を参照します

kh_value(h, x)

  • khash インスタンスの値を参照します
  • kh_val() のエイリアスです