GPERF(1)

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

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

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

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

  入力ファイルの解釈

-e, --delimiters=DELIMITER-LIST
    デリミタを含む文字列を指定します。 デリミタは、キーワードと属性とを切り分けるために使用されます。 デフォルトは ",\n" です。

-t, --struct-type
    構造体の型宣言を、生成コード中に含めます。 %% より前のすべてのテキストは、型宣言とみなされます。 キーワードと追加のフィールドを、ひとまとめに 1 行にして、 この後に続けます。

  出力コード用言語

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

  出力コードの詳細

-K, --slot-name=NAME
    キーワード構造体中のキーワード要素の名前を選択します。

-F, --initializer-suffix=INITIALIZERS
    キーワード構造体中の追加要素を、これで初期します。

-H, --hash-fn-name=NAME
    生成されるハッシュ関数の名前を指定します。 デフォルトは `hash' です。

-N, --lookup-fn-name=NAME
    生成される検索関数の名前を指定します。 デフォルトは `in_word_set' です。

-Z, --class-name=NAME
    生成される C++ クラスの名前を指定します。 デフォルト名は `Perfect_Hash' です。

-7, --seven-bit
    7 ビット文字を仮定します。

-c, --compare-strncmp
    strcmp の代りに strncmp を使用する、比較コードを生成します。

-C, --readonly-tables
    生成される検索表を定数、すなわち読み取り専用にします。

-E, --enum
    define の代りに enum 型ローカルを使用して、 検索関数用の定数値を定義します。

-I, --includes
    必要なシステムインクルードファイル <string.h> を、 コードの先頭でインクルードします。

-G, --global
    キーワードの静的な表を、 検索関数中に隠す (これがデフォルト動作です) の代りに、 静的な大域変数として生成します。

-W, --word-array-name=NAME
    単語一覧配列の名前を指定します。 デフォルト名は `wordlist' です。

-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-126 の範囲で、両端を含みます。 位置はコンマで区切り、範囲を指定可能であり、キー位置の順序は任意です。 また、メタ文字 '*' は、生成されるハッシュ関数にすべての キー位置を考慮させ、$ は ``最後の文字'' を意味します。 例は $,1,2,4,6-10 です。

-l, --compare-strlen
    文字列比較の前に、キーの長さを比較します。 これにより、検索中の文字列比較回数を削減します。

-D, --duplicates
    重複する値にハッシュされるキーワードを扱います。 非常に冗長なキーワード集合を扱う場合に有用です。

-f, --fast=ITERATIONS
    gen-perf.hash 関数を ``高速'' に生成します。 gperf の実行時間を削減しますが、 生成される表の大きさの最小化を犠牲にします。 数値引数は、衝突解決時の繰り返し数を表現します。 `0' は、``キーワード数だけ繰り返す'' ことを意味します。

-i, --initial-asso=N
    関連付けられた値の配列に初期値を与えます。 デフォルト値は 0 です。 この値を大きくすると、最終的な表を大きくします。

-j, --jump=JUMP-VALUE
    ``ジャンプ値''、 すなわち文字の関連付けられた値を、衝突時にどれだけ進めるかを指定します。 奇数であることが必要であり、デフォルトは 5 です。

-n, --no-strlen
    ハッシュ関数の計算にキーワード長を含めません。

-o, --occurrence-sort
    キー集合中での出現頻度で、入力キーを並び換えます。 検索時間を劇的に削減するはずです。

-r, --random
    関連付けられた値の表の初期化にランダム性を利用します。

-s, --size-multiple=N
    生成されるハッシュ表の大きさを変えます。 数値引数 N は、関連付けられた値の範囲が、 入力キーの数と比較して ``何倍大きいまたは小さい'' べきことを示します。 例えば、数値 3 は、 ``関連付けられた値の最大値は、入力キー数の約 3 倍の大きさを許す'' ことを意味します。 逆に、値 -3 は、 ``関連付けられた値の最大値を、入力キー数の約 1/3 に小さくする'' ことを意味します。 表が大きくなると、検索失敗時の時間を削減しますが、 表のための余計な空間が犠牲となります。 デフォルト値は 1 です。

  情報としての出力

-h, --help
    このメッセージを表示します。

-v, --version
    gperf のバージョン番号を表示します。

-d, --debug
    デバッグオプションを有効にします (冗長な出力を標準エラーへ生成します)。

バグレポート
バグは <bug-gnu-utils@gnu.org> へ報告してください。

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

    info gperf

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