MAKESTRS(1)

名前
makestrs - 文字列テーブルの C 言語ソースとヘッダを作成する

書式
makestrs [-f source] [-abioptions ...]

説明
makestrs コマンドは文字列テーブルの C 言語ソースとヘッダを作成する。 -f source オプションが指定されなければ、 makestrs は標準入力から入力を行う。 C のソースファイルは常に標準出力に書き出される。 makestrs は、ソースファイルで指定されている C のヘッダファイルを出力する。 以下のオプションを指定することができる: -sparcabi, -intelabi, -functionabi, -arrayperabi, -defaultabi

-sparcabi は、SPARC Compliance Definition に準拠している SPARC プラットフォーム で使われる(SVR4/Solaris 等)。

-intelabi は、System V Application Binary Interface に準拠している Intel プラッ トフォームで使われる(SVR4 等)。

-earlyR6abi は、ベンダが X11R6公式パッチ11 (またはそれ以前のもの)と X11R6公式パッ チ 12(またはそれ以降のもの)の間でバイナリ互換性を保ちたいと考える場合に、 -intelabi に付け加えて使われる。

-functionabi オプションを指定すると、文字列テーブルに関数 ABI が生成される。性能が 大幅に悪化するので、この機構は使わない方が良い。

-arrayperabi を用いると、文字列ごとに別々の配列が生成される。makestrs にコンパイル オプション -DARRAYPERSTR が付けられていた場合には、これがデフォルトの 動作である(こうなっていることはない)。

-defaultabi を使うと、makestrs が -DARRAYPERSTR オプション付きでコンパイルされてい ても、強制的に「通常の」文字列が生成される。makestrs が -DARRAYPERSTR オプション付きでコンパイルされることはまず無いので、ABI オプションが指 定されていないときは、これがデフォルトの動作である。

書式
文字列リストファイルの記法を以下に示す([] で括られた要素は省略できる):
    #prefix <text>
    #feature <text>
    #externref <text>
    #externdef [<text>]
    [#ctempl <text>]

    #file <filename>
    #table <tablename>
    [#htempl]
    <text>
    <text>
    [#table <tablename>
    <text>
    <text>
     ...
    #table <tablename>
     ...]
    [#file <filename>
     ...]

ワード内には1つ以上の #file ディレクティブを持つことができる。#file の それぞれは 1つ以上の #table ディレクティブを持つことができる。

#prefix ディレクティブは、makestr がそれぞれの定義の前に追加する文字列 を決定する。

#feature ディレクティブは、makestr が機能テストマクロ(例えば、 X[TM]STRINGDEFINES)のために使う文字列を決定する。

#externref ディレクティブは、makestr が外部宣言のために使う文字列を指 定する。これは通常 "extern" になるが、Motif においては "externalref" となる。

#externdef ディレクティブは、makestr が宣言のために使う文字列を指定す る。これは通常空文字列になるが(この場合には、"#externdef " のように末 尾に空白が必要な点に注意すること)、Motif においては "externaldef(_xmstrings)"となる。

#ctmpl ディレクティブは、生成される C 言語のソースのテンプレートとして 使われるファイルの名前を決定する。

#file <filename> ディレクティブのそれぞれは、コマンド行オプション で指定された適切な定義を含む名前によって、対応するヘッダとなる。 全てのヘッダファイルでの定義に対する宣言を含む、1つの C 言語のソースが 標準出力に出力される。

#htmpl ディレクティブは生成される C 言語のヘッダのテンプレートとして使 われるファイルの名前を決定する。

#table <tablename> ディレクティブのそれぞれは、ABI に従って処理される。 ほとんどのプラットフォームにおいては、全てのテーブルは繋げられて、その ファイルに対する最初のテーブルの名前を持つ1つのテーブルになる。 Intel ABI に準拠するため、指定された名前を使って別々のテーブルが生成さ れる。

#ctmpl と #htmpl ディレクティブによって指定されたテンプレートファイル は、テンプレートファイルから適切なファイルへと行ごとにコピーすることに よって処理される。文字列 <<<STRING_TABLE_GOES_HERE>>> を含む行は出力ファイルにはコピーされない。その後に、適切なデータが出力 ファイルにコピーされ、そしてテンプレートファイルの残りの部分が出力ファ イルにコピーされる。

バグ
makestrs は文法エラーに対してあまり寛容ではない。# ディレクティブの後 に空白を必要とすることがあるし、これが混乱の元になることもある。警告メッ セージは出力されない。

関連項目
SPARC Compliance Definition 2.2., SPARC International Inc., 535 Middlefield Road, Suite 210, Menlo Park, CA 94025

System V Application Binary Interface, Third Edition, ISBN 0-13-100439-5 UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs, NJ 07632

System V Application Binary Interface, Third Edition, Intel386 Architecture Processor Supplement ISBN 0-13-104670-5 UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs, NJ 07632

System V Application Binary Interface, Third Edition, SPARC Architecture Processor Supplement ISBN 0-13-104696-9 UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs, NJ 07632