# メッセージ・ツールキット

ToolTalkメッセージ・ツールキットは、 ToolTalkアプリケーション・プログラミン グ・インタフェース（API）のハイレベルなインタフェースです。同じメッセージ・プロト コルに準拠する他のアプリケーションとの最適な相互運用のための基本的なToolTalkのメッ セージと機能をアプリケーションへ簡単に統合できるよう共通の定義と規約を提供します。

ToolTalkメッセージ・ツールキットのメッセージの大部分は標準ToolTalkメッセージ ・セットに含まれています。メッセージ・ツールキットの関数は別々にコーディングする 必要があるいくつかのタスクを透過的に処理します。たとえば、
`ttdt_file_join`関数はパターンを登録し、指定された 配信範囲にある指定のファイルへのDeleted、Reverted、Moved、およびSaved通知を監視し ます。コールバック・メッセージも呼び出します。

## ToolTalkメッセージ・ツールキットの一般的な説明

相互運用は、別々に開発されたアプリケーションを同時に実行する場合には重要な テーマです。相互運用アプリケーションの開発者は、ツールキットのメッセージを一致させ ています。つまり、プロトコルは小型の十分に定義されたインタフェースを形成します。こ のインタフェースは、アプリケーションの自律性を最大限にします。

ToolTalkメッセージ・ツールキットは、アプリケーションの相互運用において重要で あり、メッセージに対する完全なサポートを提供します。メッセージ・プロトコル仕様は、 メッセージの設定とアプリケーションがメッセージを受信したときの動作を含んでいます。 これらのメッセージは、アプリケーションの機能を利用するために既存のアプリケーション に対して更新できます。共有している情報を送信、受信、および使用するために既存の アプリケーションにこれらのメッセージを簡単に追加することができます。

ToolTalkメッセージ規約に準拠しているツールは、意味が異なる場合同じToolTalk 構文を使用しません。同じ意味の場合は異なるToolTalk構文を使用するのでツール間の通信 に失敗することもありません。プロトコルが監視されている場合、互いに影響を及ぼすこと なく連携するアプリケーションを変更したり置き換えることもできます。

メッセージ・ツールキットのメッセージの大部分は標準ToolTalkメッセージ・セット に含まれています。標準ToolTalkメッセージ・セットの詳細については、 ToolTalk Reference Manualを参照してください。 TTUG.MsgTk.mkr.2に、この章で説明する 関数の一覧を示します。これらの関数は、ToolTalkメッセージ・ツールキットの一部を構成 します。

## ToolTalkメッセージ・ツールキット関数

`関数` | `説明`
`ttdt_close` | ToolTalk通信終端を破棄します。
`ttdt_file_event` | ファイルに関するイベントを通知します
`ttdt_file_join` | ファイルに関するToolTalkイベントを監視できるように登録します。
`ttdt_file_notice` | ファイルに関する標準ToolTalk通知を作成して送信します。
`ttdt_file_quit` | ファイルに関するToolTalkイベントにおける配信対象を登録解除します。
`ttdt_file_request` | ファイルに関する標準ToolTalk要求を作成して送信します。
`ttdt_Get_Modified` | ファイルに変更内容を保留しているToolTalkクライアントがないかどうかを 問い合わせます。
`ttdt_message_accept` | ToolTalk要求の処理を引き受けます。
`ttdt_open` | ToolTalk通信終端を作成します。
`ttdt_Revert` | ファイルの内容を最後に保存した内容に戻すようToolTalkクライアントに 要求します。
`ttdt_Save` | ToolTalkクライアントがファイルを保存するよう要求します。
`ttdt_sender_imprint_on` | ツールに指定のToolTalkツールの動作や特性をエミュレートさせます。
`ttdt_session_join` | ToolTalkセッションに参加し、多くの標準デスクトップ・メッセージの パターンとデフォルトのコールバックを登録します。
`ttdt_session_quit` | セッションに参加した時に登録したパターンとデフォルトのコールバックを すべて登録解除し、ToolTalkセッションを終了します。
`ttdt_subcontract_manage` | 未処理の要求を管理します。
`ttmedia_Deposit` | ドキュメントにチェックポイントを設定するためのDeposit要求を送信 します。
`ttmedia_load` | ドキュメントの表示、編集、作成のためのMedia Exchange要求を作成して 送信します。
`ttmedia_load_reply` | Display要求、Edit要求、Compose要求に返信します。
`ttmedia_ptype_declare` | Media Exchangeメディア・エディタのptypeを宣言します。
`tttk_block_while` | 返信などの待機中にプログラムをブロックします。
`tttk_message_abandon` | メッセージを無視または拒否してから破棄します。
`tttk_message_create` | メッセージ規約に準拠しているメッセージを作成します。
`tttk_message_fail` | メッセージを無視します。
`tttk_message_receive` | 次のToolTalkメッセージを取り出します。
`tttk_message_reject` | メッセージを拒否します。
`tttk_op_string` | オペレーションに対する文字列を返します。
`tttk_string_op` | 文字列に対するオペレーションを返します。
`tttk_Xt_input_handler` | XtクライアントのためのToolTalkイベントを処理します。

## ツールキットの規約

ツールキットのメッセージ規約の大部分は、標準ToolTalkメッセージ・セットの記述 で構成されます。この節では、特定の標準メッセージ・セットには関係ない規約について 説明します。

## メッセージ・ツールキット規約

`フィールド` | `説明`
fileAttrib | メッセージのファイル属性を設定できるかどうか、または設定する必要があ るかどうかを示します。ToolTalkサービスには、各メッセージがファイルを参照し、名前が 付いているファイルを「配信対象」としているクライアントにメッセージを配信 できる機能（「ファイル配信範囲指定機能」と呼ぶ）があります。
opName | オペレーションまたはイベントの名前（「op」ともいう）。重要 なのは、ツールが異なっても意味が同じものに対しては同じopNameを使用することです。 メッセージが標準のものではない場合、そのopNameは一意でなければいけません。たとえば 、opNameに`Company_Product`（ Acme_HoarkTool_Hoark_My_Frammistatなど）という接頭辞を付けます。
requiredArgs | メッセージに必ず含まれていなければならない引き数。
optionalArgs | メッセージに含まれることもある特別引き数。メッセージ内のオプションの 引き数は、指定の順序で必須の引き数の後ろに指定しなければなりません。
vtype argumentName | 特定の引き数についての記述。vtypeは、メッセージ引き数に含まれるデー タの種類を表す文字列で、プログラマが定義します。ToolTalkサービスは、送信メッセージ ・インスタンスと登録されているメッセージ・パターンとを照合する場合にだけvtypeを 使用します。各vtypeは、規約により一般的な単一の既知のデータ型に対応づけなければな りません。

## アプリケーション記述時のメッセージ・ツールキットの使用

ツールキットを使用するには、
ToolTalkメッセージ・ツールキットのヘッダ・ファイルを組み込みます。

    #include <Tt/tttk.h>

## ToolTalkメッセージ・ツールキット

この節では、ToolTalkメッセージ・ツールキットの一部である関数について説明しま す。

###
ttdt_close

    Tt_status     ttdt_close(   const char *     procid,
                                const char *     new_procid,
                                int              sendStopped );

`ttdt_close`関数は、ToolTalk通信終端を破棄します。この関 数は、
ToolTalk関数`tt_close`を呼び出します。

- `procid`の値が`!= 0`の場合、この関数は次を 呼び出します。

    tt_default_procid_set(  procid  )

- `new_procid`の値が`!= 0`の場合、この関数 は次を呼び出します。

    tt_default_procid_set(  new_procid )

- `sendStopped`パラメータが設定されている場合、この関数は
  Stopped通知を送信します。

`ttdt_close`関数は、ToolTalk関数
`tt_default_procid_set`および`tt_close` が返すどのようなエラーも可能性があります。Sending通知が失敗した場合、 エラーは伝達されません。

###
ttdt_file_event

    Tt_status    ttdt_file_event( Tt_message     context,
                                  Tttk_op        event,
                                  Tt_pattern *   patterns,
                                  int            send );

`ttdt_file_event`関数は、ToolTalkサービスを介してファイル に関するイベントを通知します。この関数は、指定されたファイルに関係のあるイベントを 知らせるToolTalkメッセージを作成し、必要に応じて送信します。このファイルは、
`patterns`の作成時に、 `ttdt_file_join`関数に渡されたパス名で示されます。

- TTUG.MsgTk.mkr.3では、 eventパラメータの値に対応する通知内容を示します。

## eventパラメータの通知内容

`通知されるevent` | `通知内容`
`TTDT_MODIFIED` | `ttdt_file_join`関数に渡された配信範囲を登録し、 Get_Modified要求、 Save要求、 Revert要求を処理する配信対象ツールへイベントを通知します。
`TTDT_SAVED, TTDT_REVERTED` | Get_Modified要求、Save要求、Revert要求のハンドラ・パターンを登録解除 します。 `send`パラメータが設定された場合、配信範囲に 応じて Saved通知か Reverted通知を送信します。

- `send`パラメータを設定すると、配信範囲に
  Modified通知を送信します。

- `context`パラメータがゼロ以外の値のとき、このルーチンによっ て作成されるメッセージはスロット名が
  `ENV_`で始まるすべてのコンテキストを継承します。

TTUG.MsgTk.mkr.4では、この関数が返す 可能性のあるエラーの一覧を示します。

## ttdt_file_eventが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_DESKTOP_EINVAL` | イベント通知が無効です。有効なイベント通知は、 `TTDT_MODIFIED`、 `TTD_TSAVED`、 `TTDT_REVERTED`です。
`TT_ERR_POINTER` | `patterns`パラメータがNULLです。
`TT_ERR_OVERFLOW` | ToolTalkサービスが受信したメッセージの数が、正しく処理可能なアクティ ブ・メッセージの最大数(2000)に達しました。
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。

###
ttdt_file_join

    Tt_message  ( *Ttdt_file_cb) (  Tt_message     msg,
                                    Tttk_op        op,
                                    char *         pathname,
                                    void *         clientdata,
                                    int            same_euid_egid,
                                    int            same_procid );

    Tt_pattern * ttdt_file_join(    const char *   pathname,
                                    Tt_scope          the_scope,
                                    int               join,
                                    Ttdt_file_cb       cb,
                                    void *             clientdata );

`ttdt_file_join`関数は、指定のファイルに関するToolTalk イベントを監視できるように登録します。
Deleted、
Modified、
Reverted、
Moved、
Savedの５種類の通知を監視するように配信範囲に登録します。

- コールバック・メッセージ引き数
  `Ttdt_file_cb`は、 TTUG.MsgTk.mkr.5に示すパラメータ を取ります。

## Ttdt_file_cbが取るパラメータ

`パラメータ` | `説明`
`message` | 送信中のメッセージ。
`op` | 要求されているオペレーション。
`pathname` | メッセージに関連付けられたファイルのパス名。このコピーは、 ToolTalk関数`tt_free`で解放できます。
`clientdata` | メッセージに含まれているクライアント・データ
`same_euid_egid` | 送信側を識別するフラグ。この値がtrueの場合は、送信側の信頼性は高いで す。
`same_procid` | 送信側を識別するフラグ。この値がtrueの場合は、送信側のprocidは受信側 と同じです。

- `the_scope`パラメータの値がゼロ（つまり、
  `TT_SCOPE_NONE`）の場合、 ファイルの配信範囲はデフォルト（
  `TT_BOTH`）に設定されます。しかし、たとえば ToolTalkデータベース・サーバ`rpc.ttdbserver`が `pathname`を所有するファイル・サーバにインストールされていない 場合、ファイル配信範囲は
  `TT_FILE_IN_SESSION`に設定されます。

  `ttdt_file_join`は`the_scope`の値およ び`pathname`のコピーとを`Tt_patterns`型の戻り 値に関連付けることで、`ttdt_file_quit`関数がパターンにアクセス することを可能にします。呼び出し側は、`ttdt_file_join`呼び出し が返ると、`pathname`を変更または解放することができます。

- `join`パラメータの値がtrueの場合、この関数は次を呼び出します。

    tt_file_join(   pathname   )

この関数は、NULLで終了する`Tt_pattern`型の配列を返しま す。この配列を破棄するには、
`ttdt_file_quit`関数を使用します。エラーが返される 場合、返された配列は
`tt_ptr_error`で解読できるエラー・ポインタです。 TTUG.MsgTk.mkr.6は、 `ttdt_file_join`関数が返す可能性のあるエラーの一覧です。

## ttdt_file_joinが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが 実行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがイン ストールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_DBAVAIL` | ToolTalkサービスが、このオペレーションに必要なToolTalkデータベースに アクセスできませんでした。
`TT_ERR_DBEXIST` | ToolTalkサービスが、指定されたToolTalkデータベースを予期した場所で見 つけることができませんでした。
`TT_ERR_PATH` | ToolTalkサービスが、指定されたファイル・パス名でディレクトリを読み取 ることができませんでした。
`TT_ERR_NOMEM` | オペレーションを実行するのに十分なメモリがありません。

###
ttdt_file_notice

    Tt_message   ttdt_file_notice(     Tt_message     context,
                                       Tttk_op        op,
                                       Tt_scope       scope,
                                       const char *   pathname,
                                       int            send_and_destroy );

`ttdt_file_notice`関数は、ファイルに関する標準ToolTalk 通知を作成し、必要に応じて送信します。
Created、
Deleted、
Moved、
Reverted、
Saved、
Modifiedの６種類の標準ファイル通知を作成するには、この関数を使用しま す。

`ttdt_file_event`関数は、`ttdt_file_notice` 関数よりもハイレベルなインタフェースです。Moved通知以外のすべての通知を 送信する場合は、この関数を使用するようにしてください。

- `context`パラメータがゼロ以外の値のとき、このルーチンによっ て作成されるメッセージは、スロット名が`ENV_`で始まるすべての コンテキストを継承します。

- この関数は指定のopパラメータと scopeパラメータで通知を作成し、そのファイルの属性を `pathname`パラメータに設定します。

- `send_and_destroy`パラメータを設定すると、この関数はメッ セージを送信してから破棄します。

  `send_and_destroy`パラメータの値がfalseの場合、作成された メッセージが返されます。`send_and_destroy`パラメータの値がtrue の場合、ゼロが返されます。

エラーが発生すると、エラー・ポインタが返されます。`Tt_status` を調べるには、`tt_ptr_error`を使用します。 TTUG.MsgTk.mkr.7では、この関数が返す 可能性のあるエラーについて説明します。

## ttdt_file_noticeが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_PROCID` | 指定されたプロセス識別子が旧式か、無効です。
`TT_ERR_NOMEM` | オペレーションを実行するのに十分なメモリがありません。
`TT_ERR_OVERFLOW` | ToolTalkサービスが受信したメッセージの数が、正しく処理可能なアクティ ブ・メッセージの最大数(2000)に達しました。
`TT_ERR_DBAVAIL` | ToolTalkサービスが、このオペレーションに必要なToolTalkデータベースに アクセスできませんでした。
`TT_ERR_DBEXIST` | ToolTalkサービスが、指定されたToolTalkデータベースを予期した場所で見 つけることができませんでした。
`TT_DESKTOP_EINVAL` | オペレーションが移動され、`send_and_destroy` パラメータの値がtrueです。
`TT_ERR_POINTER` | パス名がNULLか、ToolTalkエラー・ポインタでした。

###
ttdt_file_quit

    Tt_status    ttdt_file_quit( Tt_pattern *  patterns,
                                 int           quit );

`ttdt_file_quit`関数は、ファイルのToolTalkイベントにおけ る配信対象を登録解除します。この関数はパターンを破棄します。 `quit`パラメータが設定されると、この関数は次を呼び出します。

    tt_file_quit( pathname )

patternsの作成時に`ttdt_file_join` 関数に渡したパス名における配信対象を登録解除する場合にこの関数を使用し ます。 TTUG.MsgTk.mkr.9にこの関数が返す可能性 のあるエラーの一覧を示します。

## ttdt_file_quitが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_PROCID` | 指定されたプロセス識別子が旧式か、無効です。
`TT_ERR_DBAVAIL` | ToolTalkサービスが、このオペレーションに必要なToolTalkデータベースに アクセスできませんでした。
`TT_ERR_DBEXIST` | ToolTalkサービスが、指定されたToolTalkデータベースを予期した場所で見 つけることができませんでした。
`TT_ERR_POINTER` | パターンがNULLが、無効です。

###
ttdt_file_request

    Tt_message        ttdt_file_request( Tt_message           context,
                                         Tttk_op              op,
                                         Tt_scope             scope,
                                         const char           pathname,
                                         Ttdt_file_cb         cb,
                                         void                 client_data,
                                         int                  send_and_destroy );

`ttdt_file_request`関数は、標準デスクトップのファイルに対 する配信範囲指定要求（Get_Modified、Save、Revertなど）を作成し、必要に応じて送信し ます。

この関数は、 `ttdt_Get_Modified`関数、
`ttdt_Save`関数、
`ttdt_Revert`
関数よりもローレベルのインタフェースです。要求を作成してから送信し、そ の応答に応じてブロックします。

`ttdt_file_request`関数は、指定の opとscopeで要求を作成し、そのファイル 属性をpathnameに設定します。デスクトップ・メッセ ージ規約に従い、`TT_IN`とvtype `File`のまだ 設定されていないTt_mode型引き数が要求に追加されます。指定のオペレーションが
`TTDT_GET_MODIFIED`の場合は、 `TT_OUT`とvtype `Boolean`のまだ設定されていな いTt_mode型引き数も要求に追加されます。

context以外の値のとき、このルーチンによって 作成される要求は、スロット名が`ENV_`で始まるすべてのコンテキス トをcontextから継承します。

この関数は、作成された要求のメッセージ・コールバックとしてcb をインストールし、クライアント・データが確実にコールバックに渡されるよ うにします。sendがtrueの場合、この関数はハンドルを返す前に要 求を送信します。

この関数は正常終了時に、作成されたTt_messageを返します。エラーが発生すると、 エラー・ポインタが返されます。Tt_statusを調べるには、`tt_ptr_error` を使用します。 TTUG.MsgTk.mkr.8には、この関数が返す 可能性のあるエラーの一覧を示します。

## ttdt_file_requestが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_PROCID` | 指定されたプロセス識別子が旧式か、無効です。
`TT_ERR_NOMEM` | オペレーションを実行するのに十分なメモリがありません。
`TT_ERR_OVERFLOW` | ToolTalkサービスが受信したメッセージの数が、正しく処理可能なアクテ ィブ・メッセージの最大数(2000)に達しました。
`TT_ERR_DBAVAIL` | ToolTalkサービスが、このオペレーションに必要なToolTalkデータベースに アクセスできませんでした。
`TT_ERR_DBEXIST` | ToolTalkサービスが、指定されたToolTalkデータベースを予期した場所で見 つけることができませんでした。
`TT_ERR_POINTER` | パス名がNULLか、無効です。

###
ttdt_Get_Modified

    int          ttdt_Get_Modified(   Tt_message      context,
                                      const char *    pathname,
                                      Tt_scope        the_scope,
                                      XtAppContext    app2run,
                                      int             ms_timeout );

`ttdt_Get_Modified`関数は、ファイルに変更内容を保留してい るToolTalkクライアントがないかどうか問い合わせます。この関数は、
Get_Modified要求を送信して応答を待ちます。

- contextパラメータがゼロ以外の値のとき、この ルーチンによって作成されるメッセージは、スロット名が`ENV_`で 始まるすべてのコンテキストを継承します。

- Get_Modified要求は、固定表示を行うつもりのpathname に変更内容を保留しているToolTalkクライアントがないかどうか問い合わせ ます。

- the_scopeパラメータは、Get_Modified要求が送信される配信 範囲を示します。このパラメータの値がゼロ（つまり
  `TT_SCOPE_NONE`）の場合、ファイルの配信範囲は デフォルト（
  `TT_BOTH`）に設定されます。しかし、 たとえばToolTalkデータベース・サーバ`rpc.ttdbserver`が、 pathnameを所有するファイル・サーバにインストール されていない場合、ファイル配信範囲は
  `TT_FILE_IN_SESSION`に設定されます。

- app2runパラメータとms_timeout パラメータは、
  この関数が送信するGet_Modified要求への応答をブロックするために、 `tttk_block_while`関数に渡されます。

Get_Modified要求が指定のタイムアウト時間内に肯定応答を受信すると、 `ttdt_Get_Modified`関数はゼロ以外を返します。そうでない場合は、 ゼロを返します。この呼び出しはエラーを返しません。

###
ttdt_message_accept

    Tt_pattern *     ttdt_message_accept(     Tt_message         contract,
                                              Ttdt_contract_cb   cb,
                                              void *             clientdata,
                                              Widget             shell,
                                              int                accept,
                                              int                sendStatus );

`ttdt_message_accept`関数は、ToolTalk要求を処理することを 受け入れます。ツールは、要求の処理（つまり、無視したり拒否したりすること）を受け入 れる場合にこの関数を呼び出します。

Ttdt_contract_cb引き数は、 TTUG.MsgTk.mkr.10に示すパラメータを 取ります。

## Ttdt_contract_cb引き数が取るパラメータ

`パラメータ` | `説明`
`Tt_message msg` | 通信状態にある要求。 クライアント・プログラムは、この要求を無視または拒否する、あるいはメッセージに応答 します。
`Tttk_op op` | 着信中の要求のオペレーション
`Widget shell` | `ttdt_message_accept`関数に渡すシェル。
`void *clientdata` | `ttdt_message_accept`関数に渡すクライアント・ データ。
`Tt_message contract` | `ttdt_message_accept`関数に渡すコントラクト。

メッセージmsgを正常に処理すると、コールバックはゼロを 返します。そうでない場合は、`Tt _message`に送られた `tt_error_pointer`を返します。

メッセージmsgを処理しない場合、コールバックはメッセージ を返し、`TT_CALLBACK_CONTINUE`ルーチンを呼び出しスタックに渡し てメッセージを他のコールバックに提供するか、メッセージを `tt_message_receive`呼び出しに返します。

`ttdt_message_accept`関数は、ハンドラを宛先とする要求（ TTUG.MsgTk.mkr.11を参照してください） をデフォルト・セッションで登録します。

## ttdt_message_acceptが登録する要求

`要求` | `How Request Is Handled`
`Get_Geometr y, Set_Geometr y` | shellパラメータがNULLでない場合は、 これらの要求は透過的に処理されます。shellパラメー タがNULLで、cbパラメータがNULLでない場合は、これらの要求はコ ールバック・ルーチンに渡されます。それ以外の場合は、これらの要求はエラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Get_Iconifi ed, Set_Iconifi ed` | shellパラメータがNULLでない場合は、 これらの要求は透過的に処理されます。shellパラメー タがNULLで、cbパラメータがNULLでない場合は、これらの要求はコ ールバック・ルーチンに渡されます。それ以外の場合は、これらの要求はエラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Get_Mapped, Set_Mapped` | shellパラメータがNULLでない場合は、 これらの要求は透過的に処理されます。shellパラメー タがNULLで、cbパラメータがNULLでない場合は、これらの要求はコ ールバック・ルーチンに渡されます。それ以外の場合は、これらの要求はエラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Raise` | shellパラメータがNULLでない場合は、 これらの要求は透過的に処理されます。shellパラメー タがNULLで、cbパラメータがNULLでない場合は、これらの要求はコ ールバック・ルーチンに渡されます。それ以外の場合は、これらの要求はエラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Lower` | shellパラメータがNULLでない場合は、 これらの要求は透過的に処理されます。shellパラメー タがNULLで、cbパラメータがNULLでない場合は、これらの要求はコ ールバック・ルーチンに渡されます。それ以外の場合は、これらの要求はエラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Get_XInfo`, `Set_XInfo` | shellパラメータがNULLでない場合は、 これらの要求は透過的に処理されます。shellパラメー タがNULLで、cbパラメータがNULLでない場合は、これらの要求はコ ールバック・ルーチンに渡されます。それ以外の場合は、これらの要求はエラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Pause` | cbパラメータがNULLでない場合、この要求はコールバ ック・ルーチンに渡されます。それ以外の場合は、この要求はエラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Resume` | cbパラメータがNULLでない場合、この要求はコールバ ック・ルーチンに渡されます。それ以外の場合は、この要求はエラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Quit` | cbパラメータがNULLでない場合、この要求はコールバ ック・ルーチンに渡されます。それ以外の場合は、この要求はエラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Get_Status` | cbパラメータがNULLでない場合、この要求はコールバ ック・ルーチンに渡されます。それ以外の場合は、この要求はエラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。

contract引き数が
`TT_WRN_START_MESSAGE`メッセージ・ステータスの時、 メッセージはツールを起動します。

起動したツールは、そのptypeにすでにディスパッチされているほかのメッセージを 受信するため、コントラクトを受け入れる前に使用したい配信範囲に参加する必要がありま す。そうしないと、ツールは動作中にそのptypeの宣言を解除しなければなりません。ツー ルがどの配信範囲にも参加していないと、ディスパッチされたメッセージによってptypeの 他のインスタンスが起動されます。

acceptがtureの場合、`ttdt_message_accept`関数は次を呼び出します。

    tt_message_accept(   contract   )

sendStatus引き数がtrueの場合、
`ttdt_open`関数に渡されたパラメータ（存在する場合） を使用して、`ttdt_message_accept`関数は要求側にStatus通知を送信 します。

この関数は、NULLで終了する`Tt_pattern`型の配列を返しま す。この配列を破棄する場合は、
`tttk_patterns_destroy`関数を使用します。エラーが 返される場合、返された配列は
`tt_ptr_error`で解読されるエラー・ポインタに なります。 TTUG.MsgTk.mkr.12は、 `ttdt_message_accept`関数が返す可能性のあるエラーの一覧です。

## ttdt_message_acceptが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_POINTER` | 渡されたポインタが、このオペレーションに適した型のオブジェクトを指し ていません。たとえば、文字列が必要なときにポインタは整数を指している場合などです。
`TT_ERR_UNIMP` | デフォルト・セッションのttsessionは、`tt_message_accept` 関数をサポートしていないバージョン（1.0または1.0.1)です。 `注:`contract引き数のメッセージ・ステータスが`TT_WRN_START_MESSAGE`の場合、ツールのptypeに対して送信される メッセージは、contractが拒否、応答、または無視されるまでブロックされます。

###
ttdt_open

    char *        ttdt_open(    int *          ttfd,
                                const char *   toolname,
                                const char *   vendor,
                                const char *   version,
                                int            sendStarted );

`ttdt_open`関数は、ToolTalk通信終端を作成します。この 関数は、
`tt_open`関数と
`tt_fd`関数を呼び出します。 `ttdt_open`関数は、toolname、 vendor、versionと作成された procidとを関連付けます。新しいprocidのデフォルト・コンテキストを
`environ(5)`から初期化します。 sendStarted引き数が設定された場合は、
Started通知を送信します。

`ttdt_open`関数は、
`tt_free`関数で解放できる文字列に、作成されたprocid を返します。

この関数は、`tt_open`関数および`tt_fd` 関数で発生したどのようなエラーも返すことができます。Started通知が失敗した場合、 エラーは伝達されません。

###
ttdt_Revert

    Tt_status    ttdt_Revert( Tt_message       context,
                              const char *    pathname,
                              Tt_scope        the_scope,
                              XtAppContext    app2run,
                              int             ms_timeout );

`ttdt_Revert`関数は、ファイル内容を元に戻すようにToolTalk クライアントに要求します。この関数は、
Revert要求をthe_scopeに送信し、応答を待ちます。 Revert要求は、pathnameに保留中の変更を破棄するように、処理中 であるToolTalkクライアントに求めます。

- contextパラメータがゼロ以外の値のとき、この ルーチンによって作成されるメッセージは、スロット名`ENV_`で始ま るすべてのコンテキストを継承します。

- the_scopeパラメータの値がゼロ（つまり
  `TT_SCOPE_NONE`）の場合、 ファイルの配信範囲はデフォルト（
  `TT_BOTH`）に設定されます。しかし、たとえばToolTalk データベース・サーバrpc.ttdbserverがpathnameを 所有するファイル・サーバにインストールされていない場合、ファイル配信範囲は
  `TT_FILE_IN_SESSION`に設定されます。

- app2runパラメータとms_timeoutパラ メータは、
  この関数が送信するRevert要求への応答をブロックするために、 `tttk_block_while`関数に渡されます。

要求が指定のタイムアウト時間内に肯定応答を受信すると、`ttdt_Revert` 関数は`TT_OK`を返します。そうでない場合は、失敗した 応答に対する `
tt_message_status`の戻り値、または TTUG.MsgTk.mkr.13に示すエラーのいずれ かを返します。

## ttdt_Revertが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_PROCID` | 指定されたプロセス識別子が旧式か、無効です。
`TT_ERR_NOMEM` | オペレーションを実行するのに十分なメモリがありません。
`TT_ERR_OVERFLOW` | ToolTalkサービスが受信したメッセージの数が、正しく処理可能なアクティ ブ・メッセージの最大数(2000)に達しました。
`TT_ERR_DBAVAIL` | ToolTalkサービスが、このオペレーションに必要なToolTalkデータベースに アクセスできませんでした。
`TT_ERR_DBEXIST` | ToolTalkサービスが、指定されたToolTalkデータベースを予期した場所で見 つけることができませんでした。
`TT_DESKTOP_ETIMEOUT` | 指定されたタイムアウト時間内に応答を受信しませんでした。
`TT_DESKTOP_EPROTO` | 要求が無視されました。しかしハンドラは、特定のエラー・ステータスの 代わりに失敗した応答に対するtt_message_statusの戻り値をTT_OKに設定します。
`TT_ERR_POINTER` | パス名がNULLか、ToolTalkエラー・ポインタです。

###
ttdt_Save

    Tt_status    ttdt_Save( Tt_message     context,
                            const char *   pathname,
                            Tt_scope    the_scope,
                            XtAppContext     app2run,
                            int            ms_timeout );

`ttdt_Save`関数は、ファイルを保存するようにToolTalkクライ アントに要求します。この関数は、
Save要求をthe_scopeに送信し、応答を待ちます。Save 要求は、pathnameに保留中の変更を破棄するように、処理中である ToolTalkクライアントに求めます。

- contextパラメータの値がゼロ以外の値のとき、 このルーチンによって作成されるメッセージは、スロット名が`ENV_` で始まるすべてのコンテキストを継承します。

- the_scopeパラメータの値がゼロ（つまり
  `TT_SCOPE_NONE`）の場合、 ファイル配信範囲はデフォルト（
  `TT_BOTH`）に設定されます。しかし、たとえばToolTalk データベース・サーバ`rpc.ttdbserver`が pathnameを所有するファイル・サーバにインストール されていない場合、ファイル配信範囲は
  `TT_FILE_IN_SESSION`に設定されます。

- app2runパラメータとms_timeoutパラ メータは、この関数が送信するSave要求への応答をブロックするために、
  `tttk_block_while`関数に渡されます。

要求が指定のタイムアウト時間内に肯定応答を受信すると、`ttdt_Save` 関数は、`TT_OK`を返します。そうでない場合は、失敗し た応答に対する `
tt_message_status`の戻り値、または TTUG.MsgTk.mkr.14に示すエラーのいずれ かを返します。

## ttdt_Saveが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_PROCID` | 指定されたプロセス識別子が旧式か、無効です。
`TT_ERR_NOMEM` | オペレーションを実行するのに十分なメモリがありません。
`TT_ERR_OVERFLOW` | ToolTalkサービスが受信したメッセージの数が、正しく処理可能なアクティ ブ・メッセージの最大数(2000)に達しました。
`TT_ERR_DBAVAIL` | ToolTalkサービスが、このオペレーションに必要なToolTalkデータベースに アクセスできませんでした。
`TT_ERR_DBEXIST` | ToolTalkサービスが、指定されたToolTalkデータベースを予期した場所で見 つけることができませんでした。
`TT_DESKTOP_ETIMEOUT` | 指定されたタイムアウト時間内に応答を受信できませんでした。
`TT_DESKTOP_EPROTO` | 要求が無視されました。しかし、ハンドラは、特定のエラー・ステータスの 代わりに失敗した応答に対するtt_message_statusの戻り値をTT_OKに設定します。
`TT_ERR_POINTER` | パス名がNULLか、ToolTalkエラー・ポインタです。

###
ttdt_sender_imprint_on

    Tt_status    ttdt_sender_imprint_on(  const char *   handler,
                                          Tt_message     contract,
                                          char **        display,
                                          int *          width,
                                          int *          height,
                                          int *          xoffset,
                                          int *          yoffset,
                                          XtAppContext   app2run,
                                          int            ms_timeout );

`ttdt_sender_imprint_on`関数を呼び出すと、呼び出し側ツー ル(以下、ツールBとします)で別のツール(以下ツールAとします)の動作と特定の特性が採 用されます。ツールBは、ツールAのX11ディスプレイ、ロケール、現在のワーキング・ディ レクトリを採用します。更に、自身を正しい位置に置くためにツールAのX11ジオメトリを 取得します。

displayパラメータがNULLの場合、
環境変数`$DISPLAY`は、ツールAのディスプレイに設定 されます。displayパラメータがNULLでない場合、 ツールAのディスプレイがこのパラメータに返されます。戻り値は、
ToolTalkの`tt_free`関数で解放できる文字列です。

この関数は、
Get_Geometry要求をツールAに送信します。ツールAがジオメトリ・パラメータ に対して値を返さない場合は、次のようになります。

- widthパラメータに対して値が返されない場合、 `-1`を設定します。

- heightパラメータに対して値が返されない場 合、`-1`を設定します。

- xoffsetパラメータに対して値が返されない場合、 `INT_MAX`を設定します。

- yoffsetパラメータに対して値が返されない場合 、`INT_MAX`を設定します。

`ttdt_sender_imprint_on`関数の widthパラメータ、 heightパラメータ、 xoffsetパラメータ、および yoffsetパラメータすべてにNULLを設定すると、
Get_Geometry要求はツールAに送信されません。

app2runパラメータとms_timeoutパラ メータは、この関数が送信するGet_Geometry要求への応答をブロックするために、
`tttk_block_while`関数に渡されます。

TTUG.MsgTk.mkr.15は、この関数が返す 可能性のあるエラーの一覧です。

## ttdt_sender_imprint_onが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_DESKTOP_ETIMEDOUT` | 指定されたタイムアウト時間内に送信された要求の一部が完了しませんでし た。
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_PROCID` | 指定されたプロセス識別子が旧式か、無効です。
`TT_ERR_NOMEM` | オペレーションを実行するのに十分なメモリがありません。
`TT_ERR_OVERFLOW` | ToolTalkサービスが受信したメッセージの数が、正しく処理可能なアクティ ブ・メッセージの最大数(2000)に達しました。

###
ttdt_session_join

    Tt_message   ( *Ttdt_contract_cb)       (  Tt_message      msg,
                                               void *          clientdata
                                               Tt_message       contract );

    Tt_pattern * ttdt_session_join( const char *        sessid,
                                    Ttdt_session_cb     cb,
                                    Widget              shell,
                                    void *              clientdata,
                                    int                 join );

`ttdt_session_join`関数は、「デスクトップの良き市民 」としてToolTalkセッションに参加します。つまり、セッション sessidへの参加時に多くの標準デスクトップ・メッセージ・インタ フェースのパターンとデフォルト・コールバックを登録します。 TTUG.MsgTk.mkr.16は、この関数が現在 登録しているメッセージ・インタフェースの一覧です。

## ttdt_session_joinが登録している標準メッセージ

`要求` | `処理方法`
Get_Environment, Set_Environment | これらのメッセージは透過的に処理されます。
Get_Locale, Set_Locale | これらのメッセージは透過的に処理されます。
Get_Situation, Set_Situation | これらのメッセージは透過的に処理されます。
Signal | このメッセージは透過的に処理されます。
Get_Sysinfo | このメッセージは透過的に処理されます。
Get_Geometry, Set_Geometry | shellパラメータの値がNULLでなく、シ ェルが実体化されたmappedWhenManaged applicationShellWidgetの場合、このメッセージは透過的に処理さ れます。シェルがmappedWhenManaged applicationShellWidgeでない 場合は、エラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
Get_Iconified, Get_Iconified | shellパラメータの値がNULLでなく、シ ェルが実体化されたmappedWhenManaged applicationShellWidgetの場合、このメッセージは透過的に処理さ れます。シェルがmappedWhenManaged applicationShellWidgeでない 場合は、エラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Get_Mapped, Set_Mapped` | shellパラメータの値がNULLでなく、シ ェルが実体化されたmappedWhenManaged applicationShellWidgetの場合、このメッセージは透過的に処理さ れます。シェルがmappedWhenManaged applicationShellWidgeでない 場合は、エラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Raise` | shellパラメータの値がNULLでなく、シ ェルが実体化されたmappedWhenManaged applicationShellWidgetの場合、このメッセージは透過的に処理さ れます。シェルがmappedWhenManaged applicationShellWidgeでない 場合は、エラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Lower` | shellパラメータの値がNULLでなく、シ ェルが実体化されたmappedWhenManaged applicationShellWidgetの場合、このメッセージは透過的に処理さ れます。シェルがmappedWhenManaged applicationShellWidgeでない 場合は、エラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Get_XInfo` | shellパラメータの値がNULLでない場 合、このメッセージは透過的に処理されます。それ以外の場合は、エラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Set_XInfo` | shellパラメータの値がNULLでなく、シ ェルが実体化されたmappedWhenManaged applicationShellWidgetの場合、このメッセージは透過的に処理さ れます。シェルがmappedWhenManaged applicationShellWidgeでない 場合は、エラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Pause` | cbパラメータがNULLでない場合、このメッセージはコ ールバックに渡されます。cbパラメータがNULLの場合は、エラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Resume` | cbパラメータがNULLでない場合、このメッセージはコ ールバックに渡されます。cbパラメータがNULLの場合は、エラー TT_DESKTOP_ENOTSUPとともに異常終了します。
`Quit` | cbパラメータがNULLでない場合、このメッセージはコ ールバックに渡されます。cbパラメータがNULLの場合は、エラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Get_Status` | cbパラメータがNULLでない場合、このメッセージはコ ールバックに渡されます。cbパラメータがNULLの場合は、エラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。
`Do_Command` | cbパラメータがNULLでない場合、このメッセージはコ ールバックに渡されます。cbパラメータがNULLの場合は、エラー `TT_DESKTOP_ENOTSUP`とともに異常終了します。

sessidパラメータがNULLの場合、デフォルト・セッションに 参加します。

joinパラメータが設定されている場合、指定のセッションに 参加します。

`Ttdt_contract_cb`メッセージは、 TTUG.MsgTk.mkr.17に示すパラメータを 取ります。コールバックはメッセージを処理しない場合は、メッセージを返します。メッセ ージを処理する場合は、ゼロあるいは`Tt_message`に送られたエラー ・ポインタを返します。

## Ttdt_session_cbが取るパラメータ

`パラメータ` | `説明`
`Tt_message` `msg` | 通信状態にある要求。 クライアント・プログラムは、この要求を無視または拒否する、あるいはメッセージに応答 します。 `注`:処理後にメッセージmsg を破棄してください。
`void *``clientdata` | `ttdt_session_join`または `ttdt_message_accept`関数のどちらかに渡されるクライアント・デー タ。
`Tt_message` `contract` | `ttdt_message_accept`関数に渡されるコントラクト。 コールバックが`ttdt_session_join`関数によってインストールされる と、contractパラメータの値は必ずゼロになります。

`ttdt_session_join`関数は、NULLで終了する `Tt_pattern`型の配列を返します。この配列は、
`ttdt_session_quit`関数に渡され破棄することができま す。エラーが発生すると、返された配列はエラー・ポインタになります。 `Tt_Status`を調べるには、 `
tt_ptr_error`を使用します。 TTUG.MsgTk.mkr.18は、返される可能性の あるエラーの一覧です。

## ttdt_session_joinが返す可能性のあるエラー

`エラーの値` | `説明`
TT_ERR_NOMP | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
TT_ERR_PROCID | 指定されたプロセス識別子が旧式か、無効です。
TT_ERR_SESSION | 旧式、または無効なToolTalkセッションが指定されました。
TT_ERR_POINTER | 渡されたポインタが、このオペレーションに適した型のオブジェクトを指し ていません。たとえば、文字列が必要なときにポインタは整数を指している場合などです。
TT_ERR_NOMEM | オペレーションを実行するのに十分なメモリがありません。

###
ttdt_session_quit

    Tt_status    ttdt_session_quit( const char *     sessid,
                                    Tt_pattern *     sess_pats,
                                    int              quit );

`ttdt_session_quit`関数は、「デスクトップの良き市民 」としてToolTalkセッションを終了します。つまり、セッションへの参加時に登録し たすべてのパターンとデフォルト・コールバックを登録解除します。

この関数は、sess_patsで指定されたすべてのパターンを破棄 します。quitパラメータが設定されると、セッシ ョンsessidを終了します。sessidパラメータ がNULLの場合は、デフォルト・セッションを終了します。

TTUG.MsgTk.mkr.19は、この関数が返す 可能性のあるエラーの一覧です。

## ttdt_session_quitが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_PROCID` | 指定されたプロセス識別子が旧式か、無効です。
`TT_ERR_SESSION` | 旧式、または無効なToolTalkセッションが指定されました。
`TT_ERR_POINTER` | 渡されたポインタが、このオペレーションに適した型のオブジェクトを指し ていません。たとえば、文字列が必要なときにポインタは整数を指している場合などです。

###
ttdt_subcontract_manage

    Tt_pattern * ttdt_subcontract_manage(  Tt_message         subcontract,
                                           Ttdt_contract_cb   cb,
                                           Widget             shell,
                                           void *             clientdata );

`ttdt_subcontract_manage`関数は、未処理の要求を管理します 。この関数が呼び出されると、要求側ツールは要求を処理しているツールとの間で行われる デスクトップ上の標準的な対話を管理できます。この関数は、 `TT_HANDLER`を宛先とする
Get_Geometry要求と
Get_XInfo要求、 および
Status通知のための登録をデフォルト・セッションで行います。

shellパラメータがNULLの場合、要求または通知 がcbパラメータに渡されます。 shellパラメータがNULでない場合は、要求は透過的に 処理されます。

`ttdt_subcontract_manage`関数は、NULLで終了するTt_pattern 型の配列を返します。この配列は、
`ttdt_session_quit`関数に渡して破棄することができま す。エラーが発生すると、返された配列はエラー・ポインタになります。 `Tt_Status`を調べるには、 `
tt_ptr_error`を使用します。 TTUG.MsgTk.mkr.20は、返される可能性の あるエラーの一覧です。

## ttdt_subcontract_manageが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_ERR_NOMEM` | オペレーションを実行するのに十分なメモリがありません。
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_PROCID` | 指定されたプロセス識別子が旧式か、無効です。
`TT_ERR_POINTER` | subcontractパラメータが有効な `Tt_message`ではありません。
`TT_ERR_EINVAL` | shellパラメータと cbパラメータの両方がNULLです。

###
ttmedia_Deposit

    Tt_status   ttmedia_Deposit(     Tt_message              load_contract,
                                     const char *            buffer_id,
                                     const char *            media_type,
                                     const unsigned char *   new_contents,
                                     int                     new_len,
                                     const char *            pathname,
                                     XtAppContext            app2run,
                                     int                     ms_timeout );

`ttmedia_Deposit`関数はDeposit要求を送信して、Edit、 Compose、OpenなどのMedia Exchange load_contract要求の変換対象であったドキュメント にチェックポイントを設定します。

この関数はDeposit要求を作成して送信し、その要求が成功したか失敗したかを返し ます。

- load_contractは、このエディタがドキュメントを読み込むこ とを要求します。

- buffer_idは、ドキュメントがOpen要求により読み込まれた 場合に、このエディタが作成したバッファのIDです。

- media_typeは、送信された要求の contents引き数のvtypeです。

- new_contentsとnew_lenは、 contentsの引き数の値です。

要求が送信されると、app2runとms_timeout は、応答を待つために、`tttk_block_while`関数に渡され ます。

## ttmedia_Depositが返す可能性のあるエラー

`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_PROCID` | 指定されたプロセス識別子が旧式か、無効です。
`TT_ERR_NOMEM` | オペレーションを実行するのに十分なメモリがありません。
`TT_ERR_OVERFLOW` | ToolTalkサービスが受信したメッセージの数が、正しく処理可能なアクティ ブ・メッセージの最大数(2000)に達しました。
`TT_ERR_DBAVAIL` | ToolTalkサービスが、このオペレーションに必要なToolTalkデータベースに アクセスできませんでした。
`TT_ERR_DBEXIST` | ToolTalkサービスが、指定されたToolTalkデータベースを予期した場所で見 つけることができませんでした。
`TT_DESKTOP_ETIMEOUT` | 指定されたタイムアウト時間内に応答を受信しませんでした。
`TT_ERR_POINTER` | パス名がNULL、または、ToolTalkエラー・ポインタです。

###
ttmedia_load

    Tt_message   (*Ttmedia_load_msg_cb) (  Tt_message         msg,
                                           void *             clientdata,
                                           Tttk_op            op,
                                           unsigned char *    contents,
                                           int                len,
                                           char *             file  );

    Tt_message   ttmedia_load( Tt_message             context,
                               Ttmedia_load_msg_cb    cb,
                               void *                 clientdata,
                               Tttk_op                op,
                               const char *           media_type,
                               const unsigned char *  contents,
                               int                    len,
                               const char *           file,
                               const char *           docname,
                               int                    send );

`ttmedia_load関数`は、ドキュメントの表示、編集、作成を行う Media Exchange要求を作成し、必要に応じて送信します。この関数は、
Display、
Edit、
Composeのいずれかの要求を作成して送信します。

要求のハンドラとの標準的な対話を管理するには、このメッセージで作成した要求の 送信後すぐに
`ttdt_subcontract_manage`関数を使用してください。

context引き数の値がゼロ以外のとき、この ルーチンによって作成されるメッセージは、スロット名が
`ENV_`で始まるすべてのコンテキストを継承します。

clientdata引き数は、応答を受信する場合、またはドキュメ ントの中間バージョンが
Deposit要求によってチェックポイントを設定される場合に cb引き数に渡されます。

op引き数は、
`TTME_DISPLAY`、
`TTME_EDIT`、 `
TTME_COMPOSE`のいずれかでなければなりません。

media_type引き数は、ドキュメントのデータ形式に名前を付 けます。通常、この引き数により、要求を処理するためにどのアプリケーションを選択する か決定します。

contents引き数とlen引き数はドキュ メントを指定します。これらの両方の引き数の値がゼロで、 file引き数がゼロでない場合、ドキュメントは指定の ファイルに格納されていると想定されます。

docname引き数がNULLでないとき、その値はドキュメントの タイトルとして使用されます。

send引き数がtrueのとき、メッセージは返される前に送信さ れます。

TTUG.MsgTk.mkr.21は、
`Ttmedia_load_msg_cb`メッセージが取るパラメータの 一覧です。

## Ttmedia_load_msg_cbがとるパラメータ

`パラメータ` | `説明`
`Tt_message msg` | 要求に対する対応。または読み込み要求の `t t_message_id`を指定する messageID引き数を持ったDeposit要求。このパラメータの値が Deposit要求である場合、クライアント・プログラムは要求に応答するか、無視しなければ なりません。 `注`: メッセージmsgは処理後に破棄してください。
`Tttk_op op` | メッセージのオペレーション（ `TTME_DEPOSIT`あるいは `ttmedia_load`メッセージに渡されたオペレーション） 。
`unsigned char * contents int len char *file` | 到着中のドキュメントの内容。len引き数がゼロのと き、ドキュメントは指定のファイルに格納されています。contents 引き数またはfile引き数がNULLでない場合は、 ToolTalk関数 `tt_free`を使用してそれらを解放してください。
`void *clientdata` | `ttmedia_load`メッセージに渡されたクライアント・ データ。

メッセージが正常に処理されると、コールバックはゼロを返します。処理中にエラー が発生した場合は、コールバックは`Tt_message`に伝えられたエラー ・ポインタを返します。

コールバックがメッセージmsgを処理しない場合、コールバッ クはメッセージを返します。このときツールキットは、`TT_CALLBACK_CONTINUE` ルーチンを呼び出しスタックに渡してメッセージを他のコールバックに 提供するか、メッセージを`tt_message_receive`関数に返します。

終了時に`ttmedia_load`関数は、作成した要求を返します。 エラーが発生した場合、この関数はエラー・ポインタを返します。`Tt_Status` を調べるには、 `
tt_ptr_error`を使用します。 TTUG.MsgTk.mkr.22は、返される可能性の あるエラーの一覧です。

## ttmedia_loadが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_PROCID` | 指定されたプロセス識別子が旧式か、無効です。
`TT_ERR_NOMEM` | オペレーションを実行するのに十分なメモリがありません。
`TT_ERR_OVERFLOW` | ToolTalkサービスが受信したメッセージの数が、正しく処理可能なアクティ ブ・メッセージの最大数(2000)に達しました。

###
ttmedia_load_reply

    Tt_message    ttmedia_load_reply   (   Tt_message             contract,
                                           const unsigned char *  new_contents,
                                           int                    new_len,
                                           int                    reply_and_destroy );

ドキュメントの表示、編集、作成を行うMedia Exchange要求に対して応答するには、 `ttmedia_load_reply`関数を使用します。

new_contents引き数とnew_len引き数 の両方がゼロでない場合、それらの値はcontract引き数の適切な 出力引き数に、ドキュメントの新しい内容を設定するのに使用されます。 reply_and_destroy引き数がtrueの場合、contract 引き数に対して応答が行われ、その後メッセージは破棄されます。

TTUG.MsgTk.mkr.23 は、返される可能性の あるエラーの一覧です。

## ttmedia_load_replyが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_PROCID` | 指定されたプロセス識別子が旧式か、無効です。
`TT_ERR_NUM` |
`TT_ERR_NOTHANDLER` |

###
ttmedia_ptype_declare

    Tt_message   (*Ttmedia_load_pat_cb) (  Tt_message         msg,
                                           void *             clientdata,
                                           Tttk_op            op,
                                           Tt_status          diagnosis,
                                           unsigned char *    contents,
                                           int                len,
                                           char *             file,
                                           char *             docname );

    Tt_status    ttmedia_ptype_declare( const char *            ptype,
                                        int                     base_opnum,
                                        Ttmedia_load_pat_cb     cb,
                                        void *                  clientdata,
                                        int                     declare );

`ttmedia_ptype_declare`関数は、Media Exchangeメディア・ エディタのptypeを宣言します。この関数は、特定のメディア型用のMedia Exchange メッセージ・インタフェースを実装するエディタを初期化します。

- エディタがptypeでサポートされる種類のドキュメントを編集 するように要求される場合、この関数はcb引き数を呼び出します。

- この関数は、ptypeに含まれていると想定される一連のシグニチャに、ツールキット 内部のオペレーション番号(opnum)コールバックをインストールしま す。ツールキット内部のopnumコールバックは、これらのシグニチャのいずれかに一致する 要求を受信すると、clientdataをcb引き数 に渡します。opnumsは、base_opnumからはじまり、ゼロか1000の 倍数でなければなりません。

- declare引き数がtrueのとき、この関数は次を呼び出します。

    tt_ptype_declare(   ptype  )

ptypeが複数の異なるメディア型を実現する場合、 `ttmedia_ptype_declare`関数を２回以上呼び出すことができます。 base_opnumには、各呼び出しで異なる値を指定しなければなりませ ん。

`ttmedia_ptype_declare`関数は何回でも呼び出すことができま すが、declare引き数を「true」に設定できるのは１回だ けです。

TTUG.MsgTk.mkr.24は、
`Ttmedia_load_pat_cb`メッセージが取るパラメータ の一覧です。

## Ttmedia_load_pat_cbメッセージが取るパラメータ

`パラメータ` | `説明`
`Tt_message msg` | 送信された要求。クライアント・プログラムは、この要求を無視または拒否 する、あるいは要求に応答しなければなりません。
`Tttk_op op` | 着信中のオペレーション（ `TTME_COMPOSE`、 `TTME_EDIT`、`TTME_DISPLAY`のいずれか）。
`Tt_status diagnosis` | ツールキットが要求を無視するように勧告するときのエラーコード （たとえば、 `TT_DESKTOP_ENODATA`）。diagnosisが`TT_OK` ではなく、コールバック・ルーチンがメッセージmsgを返す場合、 ツールキットはメッセージmsgを無視し、破棄します。
`unsigned char * contents int len char *file` | 着信中のドキュメントの内容。len引き数がゼロのと き、ドキュメントは指定のファイルに格納されています。contents 引き数またはfile引き数がNULLでない場合は、 ToolTalk関数 tt_freeを使用してそれらの引き数を解放します。
`char * docname` | ドキュメントに名前が付けられている場合は、その名前。
`void * clientdata` | `ttmedia_ptype_declare`メッセージに渡す クライアント・データ。

メッセージが正常に処理されると、コールバックはゼロを返します。処理中にエラー が発生した場合は、コールバックは`Tt_message`に伝えられたエラー ・ポインタを返します。

コールバックがメッセージmsgを処理せず、 diagnosis引き数の値が`TT_OK`でない場合、 コールバックはメッセージを返します。このとき、ツールキットは `TT_CALLBACK_CONTINUE`ルーチンを呼び出しスタックに渡してメッセ ージを他のコールバックに提供するか、メッセージを`tt_message_receive` 呼び出しに返します。

エラーが発生すると、この関数は TTUG.MsgTk.mkr.25にあるエラーのいずれ かを返します。

## ttmedia_ptype_declareが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_PROCID` | 指定されたプロセス識別子が旧式か、無効です。
`TT_ERR_PTYPE` | ToolTalkサービスが、指定されたptypeを検出することができませんでした。
`TT_ERR_POINTER` | 渡されたポインタが、このオペレーションに適した型のオブジェクトを指し ていません。たとえば、文字列が必要なときにポインタは整数を指している場合などです。

###
tttk_block_while

    Tt_status    tttk_block_while( const int *  blocked,
                                   int          ms_timeout );

`tttk_block_while`関数は、ms_timoutで 指定されたタイムアウト時間中、応答を待っているプログラムをブロックします。

###
tttk_message_abandon

    Tt_status   tttk_message_abandon     ( Tt_message     msg );

`tttk_message_abandon`関数は、要求を放棄した後に破棄しま す。

プログラムは、メッセージを理解できずに処分したいときはメッセージを放棄しなけ ればなりません。

エラーが発生すると、この関数は TTUG.MsgTk.mkr.26にあるエラーのうちの いずれかを返します。

## tttk_message_abandonが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインスト ールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_POINTER` | 渡されたポインタが、このオペレーションに適した型のオブジェクトを指し ていません。たとえば、文字列が必要なときにポインタは整数を指している場合などです。
`TT_ERR_NOTHANDLER` |

###
tttk_message_create

    Tt_message   tttk_message_create( Tt_message             context,
                                      Tt_class               the_class,
                                      Tt_scope               the_scope,
                                      const char *           handler,
                                      const char *           op,
                                      Tt_message_callback    callback );

`tttk_message_create`関数は、規約に従ったメッセージを作成 します。この関数を使用すれば、継承されたコンテキストをあるメッセージから別のメッセ ージに伝達するメッセージを簡単に作成できます。

`tttk_message_create`関数はメッセージを作成し、スロット名 が`ENV_`で始まるcontext からすべてのコンテキスト・スロットを新しいメッセージ上にコピーします。作成された メッセージには、the_classパラメータに指定された `Tt_class`値とthe_scopeパラメータに指定さ れた`Tt_scope`値が設定されます。

handlerパラメータがNULLの場合、メッセージには `
TT_PROCEDURE`の`Tt_address`が設定されま す。handlerパラメータがNULLでない場合は、メッセージは `TT_HANDLER`を経由してprocidに送信されます。

op引き数がNULLでない場合、その値にはメッセ ージのop引き数が設定されます。

コールバック引き数がNULLでない場合、その値がメッセージ・コールバックとして メッセージに追加されます。

正常終了時には、`tttk_message_create`関数は作成した `Tt_message`を返します。これは、他の`Tt_message` と同じ方法で変更、送信、破棄することができます。

エラーが発生すると、エラー・ポインタが返されます。`Tt_status` を調べるには、
`tt_ptr_error`を使用します。 TTUG.MsgTk.mkr.27は、返される可能性の あるエラーの一覧です。

## tttk_message_createが返す可能性のあるエラー

`エラーの値` | `説明`
`TT_ERR_NOMP` | ttsessionプロセスを使用できません。ToolTalkサービスは、ttsessionが実 行されていない場合はその再起動を試みます。このエラーは、ToolTalkサービスがインス トールされていないか正しくインストールされていないかのどちらかを示します。
`TT_ERR_PROCID` | 指定されたプロセス識別子が旧式か、無効です。
`TT_ERR_NOMEM` | オペレーションを実行するのに十分なメモリがありません。

###
tttk_message_destroy

    Tt_status   tttk_message_destroy ( Tt_message    msg );

`tttk_message_destroy`関数は、規約に従うすべてのメッセー ジを破棄します。

このメッセージは、
`tt_message_destroy` メッセージの代わりに使用できます。

`tttk_message_destroy`関数は、 `ttdt_message_accept`関数あるいは、 `ttdt_subcontract_manage`関数によってメッセージに格納された すべてのパターンを破棄し、その後メッセージmsgを `tt_message_destroy`関数に渡します。

この関数は、`tt_message_destroy`関数によって返された値を 返します。

###
tttk_message_fail

    Tt_status    tttk_message_fail( Tt_message     msg,
                                    Tt_status      status,
                                    const char *   status_string,
                                    int            destroy );

`tttk_message_fail`関数は、メッセージmsg を無視した後で破棄します。

プログラムは、メッセージを理解できずに処分したいときはメッセージを破棄しなけ ればなりません。

状態が`TT_SENT`であるメッセージは無視できます。メッセージ が、ハンドラが宛先指定されているメッセージ、あるいは `
TT_WRN_START_MESSAGE`のtt_message_statusを持つ場合、その メッセージを無視できます。

この関数は、`TT_DESKTOP_ENOTSUP`を返します。

###
tttk_message_receive

    Tt_status    tttk_message_receive( const char* procid );

`tttk_message_receive`関数は、
`tt_message_receive`関数を呼び出し、次のToolTalk メッセージを取り出します。

`procid`が0でない場合、この関数は次を呼び出し ます。

    tt_default_procid_set( procid )

###
tttk_message_reject

    Tt_status    tttk_message_reject( Tt_message      msg,
                                      Tt_status       status,
                                      const char*     status_string,
                                      int             destroy );

`tttk_message_reject`関数は、メッセージmsg を拒否した後で破棄します。

プログラムは、メッセージを理解できずに処分したいときはメッセージを放棄しなけ ればなりません。

状態が`TT_SENT`であるメッセージは拒否できます。 メッセージが、ハンドラが宛先指定されているメッセージでない 、あるいは `
TT_WRN_START_MESSAGE`以外のtt_message_statusを持つ場合、その メッセージを拒否できます。

この関数は、`TT_DESKTOP_ENOTSUP`を返します。

###
tttk_op_string

    char         *tttk_op_string(    Tttk_op     op);

`tttk_op_string`関数は、正常終了する場合はオペレーション opに対する文字列を返します。そうでない場合、この 関数はゼロを返します。

返された文字列を解除するには、`tt_free`関数を使用して ください。

    Tttk_op   tttk_string_op(     const char *    opstring );

`tttk_string_op`関数は、指定の文字列に対するオペレーショ ンを保持している文字列を返します。エラーが発生すると、この関数は `TTDT_OP_NONE`を返します。

###
tttk_Xt_input_handler

    void         tttk_Xt_input_handler(   XtPointer     procid,
                                          int *         source,
                                          XtInputId *   id );

`tttk_Xt_input_handler`関数は、Xtクライアントのための ToolTalkイベントを処理します。一部のメッセージがコールバックで処理されないと予期 される場合を除き、この関数をXt入力ハンドラとして使用します。

この関数は、procid引き数を
`tttk_message_receive` 関数に渡し、すべての返されたメッセージ（つまり、コールバックで処理されない メッセージ）を`
tttk_message_abandon`関数に渡します。

この関数がエラー
`TT_ERR_NOMP`を返すと、 `tttk_Xt_input_handler`関数は idパラメータを
`XtRemoveInput`関数に渡します。