EN JA
GPERF(1)
GPERF(1) FSF GPERF(1)

名称

gperf -キーの集合から完全なハッシュ関数を生成する

書式

gperf [ OPTION]... [ INPUT-FILE]

解説

GNU 'gperf' は、完全なハッシュ関数を生成します。

長いオプションに引数が必須であると示している場合、等価の短いオプションも引数は必須です。

出力ファイル位置:

--output-file= FILE 指定されたファイルに出力を書き込みます。

出力ファイルが指定されないか、または - であるなら、結果は、標準出力に書き込まれます。

入力ファイルの解釈:

-e, --delimiters= DELIMITER-LIST
デリミタを含む文字列を指定します。デリミタは、キーワードと属性とを切り分けるために使用されます。デフォルトは、","です。
-t, --struct-type
構造体の型宣言を、生成コード中に含めます。 %% より前のすべてのテキストは、型宣言とみなされます。キーワードと追加のフィールドを、ひとまとめに 1 行にして、この後に続けます。
--ignore-case
大文字と小文字の ASCII 文字を同等なものと見なします。ロケール依存の大文字小文字のマッピングは、無視されることに注意してください。

出力コードのための言語:

-L, --language= LANGUAGE-NAME
指定した言語でコードを生成します。現在使用可能な言語は、C++, ANSI-C, C, KR-C です。デフォルトは、C です。

出力コードの詳細:

-K, --slot-name= NAME
キーワード構造体中のキーワード要素の名前を選択します。
-F, --initializer-suffix= INITIALIZERS
キーワード構造体中の追加要素を、これで初期します。
-H, --hash-function-name= NAME
生成されるハッシュ関数の名前を指定します。デフォルトは、'hash' です。
-N, --lookup-function-name= NAME
生成される検索関数の名前を指定します。デフォルトは、'in_word_set' です。
-Z, --class-name= NAME
生成される C++ クラスの名前を指定します。デフォルト名は、'Perfect_Hash' です。
-7, --seven-bit
7 ビット文字を仮定します。
-l, --compare-lengths
文字列比較を試みる前に、キーの長さを比較します。また、検索の間に行われる文字列の比較の数を減らします。
-c, --compare-strncmp
strcmp の代りに strncmp を使用する、比較コードを生成します。
-C, --readonly-tables
生成される検索表を定数、すなわち読み込み専用にします。
-E, --enum
define の代りに enum 型ローカルを使用して、検索関数用の定数値を定義します。
-I, --includes
必要なシステムインクルードファイル <string.h>を、コードの先頭でインクルードします。
-G, --global-table
キーワードの静的な表を、検索関数中に隠す (これがデフォルト動作です) の代りに、静的な大域変数として生成します。
-P, --pic
共有ライブラリに含むために生成されたテーブルを最適化します。これは、生成コードを含んでいる共有ライブラリを使用してプログラムの起動時間を縮小します。
-Q, --string-pool-name= NAME
--pic オプションによって生成された文字列プールの名前を指定します。デフォルト名は、'stringpool' です。
--null-strings
空のキーワードテーブル・エントリのために空の文字列の代わりにヌル (NULL) 文字列を使用します。
-W, --word-array-name= NAME
単語一覧配列の名前を指定します。デフォルト名は、'wordlist' です。
--length-table-name= NAME
長さテーブル配列の名前を指定します。デフォルト名は、'lengthtable' です。
-S, --switch= COUNT
生成される C コードに、配列検索表の代りに、switch 文方式を使用させます。キーファイルによっては、時間と空間の削減になります。 COUNT 引数は、生成される switch 文の数を指定します。値 1 ではすべての要素を含む switch を 1 個生成し、値 2 では表の半分の要素を含む switch を 2 個生成し、等となります。 COUNT が非常に大きい場合、例えば 1000000 の場合、生成される C コードは、二分検索を行います。
-T, --omit-struct-type
型宣言が出力ファイルへ転送されることを防ぎます。型が他のどこかで定義されている場合に、本オプションを使用します。

gperf によって使用されるアルゴリズム:

-k, --key-positions= KEYS
ハッシュ関数が使用するキーの場所を選択します。選択が許される範囲は、1-255 の範囲で、両端を含みます。位置は、コンマで区切り、範囲を指定可能であり、キー位置の順序は任意です。また、メタ文字 '*' は、生成されるハッシュ関数にすべてのキー位置を考慮させ、$ は、"最後の文字"を意味します。例えば、$,1,2,4,6-10 です。
-D, --duplicates
重複する値にハッシュされるキーワードを扱います。非常に冗長なキーワード集合を扱う場合に有用です。
-m, --multiple-iterations= ITERATIONS
-i-j の値の複数の選択を行なって、最良の結果を選びます。これは、ITERATIONS の要素によって実行時間を増加させますが、生成されたテーブルサイズを最小化するよい仕事を行います。
-i, --initial-asso= N
関連付けられた値の配列に初期値を与えます。デフォルト値は、0 です。この値を大きくすると、最終的な表を大きくします。
-j, --jump= JUMP-VALUE
"ジャンプ値"、すなわち文字の関連付けられた値を、衝突時にどれだけ進めるかを指定します。奇数であることが必要であり、デフォルトは、5 です。
-n, --no-strlen
ハッシュ関数の計算にキーワード長を含めません。
-r, --random
関連付けられた値の表の初期化にランダム性を利用します。
-s, --size-multiple= N
生成されるハッシュ表の大きさを変えます。数値引数 N は、関連付けられた値の範囲が、入力キーの数と比較して "何倍大きいまたは小さい"べきことを示します。例えば、数値 3 は、 "関連付けられた値の最大値は、入力キー数の約 3 倍の大きさを許す"ことを意味します。逆に、値 1/3 は、 "関連付けられた値の最大値を、入力キー数の約 1/3 に小さくする"ことを意味します。表が大きくなると、検索失敗時の時間を削減しますが、表のための余計な空間が犠牲となります。デフォルト値は、1 です。

情報の出力:

-h, --help
このメッセージを表示します。
-v, --version
gperf のバージョン番号を表示します。
-d, --debug
デバッグオプションを有効にします (冗長な出力を標準エラーへ生成します)。

作者

Douglas C. Schmidt と Bruno Haible によって書かれました。

バグレポート

<bug-gnu-gperf@gnu.org>にバグを報告してください。

COPYRIGHT

Copyright © 1989-1998, 2000-2004, 2006-2007 Free Software Foundation, Inc.
 
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

関連項目

gperf の完全な文書は、Texinfo マニュアルで管理されています。 infogperf のプログラムがあなたのサイトで適切にインストールされていれば、コマンド
info gperf

で完全なマニュアルにアクセス可能です。

May 2007 GNU gperf 3.0.3