st_cleanup_safe() のイテレータブロック。
必要なサイズ size から、最適なハッシュエントリの サイズを返す。
int用の比較関数。
int用のハッシュ関数。 n に対するハッシュ値を計算する。
テーブルの全要素に対しハッシュ値を計算しなおして テーブルを再構成する。エントリに対して要素の数が 増えすぎ、テーブルが狭くなってきたときに発生する。
st_insert() と似ているが、同じハッシュ値を持つエントリーに対する 「同値検査」を省略する。key がまだ登録されていないことがはっきり している場合には、少し高速に登録できる。
never と同じ値を持つエントリーを削除する。
Hash#dup の実体。 old_table と同じ内容の st_table を新たに作成して返す。
値を書きこむ。返り値は削除したかどうか。
st_delete() と似ているが、その場ですぐに削除するのではなく never を 書きこんでおく。st_cleanup_safe() で本当に削除できる。 Ruby では never には Qundef を使う。
Hash#each,delete_if などの実体。ハッシュ内の全てのキーと値、arg を 引数にして、func を実行する。func の返り値 enum st_retval は ST_CONTINUE ST_STOP ST_DELETE のどれか。どれも見ためどおりの働きをする。
table を解放する。キー、値は解放されない。
キーが int 型であるハッシュテーブルを作成する。
キーが int 型であるハッシュテーブルを作成する。 st_init_table() に int 用の操作関数を渡しているだけ。
キーが char* 型であるハッシュテーブルを作成する。
キーが char* 型であるハッシュテーブルを作成する。 st_init_table() に文字列用の操作関数を渡しているだけ。
st_table を作成する。_with_size はサイズを指定して生成する。 struct st_hash_type はハッシュ値を得る関数と、同値判定を行う 関数を持つ。
ハッシュに key と value の組を追加する。 古いライブラリなので void* のかわりに char* を使っている。
key に対応する値をみつけて value にポインタを書きこむ。 返り値は見つかったかどうかの真偽値。
任意の型ポインタにvoid*でなくchar*を使っているのは 古いライブラリだからだ。ANSI C以前はvoid*の意味に char*を使っていた。
ハッシュの衝突に関する統計を /tmp/col に出力する。 #ifdef HASH_LOG のときだけ定義される、開発者用関数。
文字列用のハッシュ関数。 string に対するハッシュ値を計算する。