## Tcl8.6.17/Tk8.6.17 Documentation > Tcl C API > SaveResult

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    Tcl_SaveInterpState, Tcl_RestoreInterpState, Tcl_DiscardInterpState, Tcl_SaveResult, Tcl_RestoreResult, Tcl_DiscardResult — 解釈実行機能の状態の保管と再保存　save and restore an interpreter's state
  SYNOPSIS
    #include <tcl.h>
    Tcl_InterpState
    Tcl_SaveInterpState(interp, status)
    int
    Tcl_RestoreInterpState(interp, state)
    Tcl_DiscardInterpState(state)
    Tcl_SaveResult(interp, savedPtr)
    Tcl_RestoreResult(interp, savedPtr)
    Tcl_DiscardResult(savedPtr)
  引数 ARGUMENTS
    Tcl_Interp *interp (入力in)
    int status (入力in)
    Tcl_InterpState state (入力in)
    Tcl_SavedResult *savedPtr (入力in)
  説明 DESCRIPTION
  KEYWORDS

### NAME

Tcl_SaveInterpState, Tcl_RestoreInterpState, Tcl_DiscardInterpState, Tcl_SaveResult, Tcl_RestoreResult, Tcl_DiscardResult — 解釈実行機能の状態の保管と再保存　save and restore an interpreter's state

### SYNOPSIS

#include <tcl.h>
Tcl_InterpState
Tcl_SaveInterpState(interp, status)
int
Tcl_RestoreInterpState(interp, state)
Tcl_DiscardInterpState(state)
Tcl_SaveResult(interp, savedPtr)
Tcl_RestoreResult(interp, savedPtr)
Tcl_DiscardResult(savedPtr)

### 引数 ARGUMENTS

Tcl_Interp *interp (入力in)
  状態が保存されるべき解釈実行機能｡　　 Interpreter for which state should be saved.

int status (入力in)
  解釈実行機能の状態の部分として保存すべき符号値を返す｡　 Return code value to save as part of interpreter state.

Tcl_InterpState state (入力in)
  記録されるか棄却される状態字句を保存する｡　 　 Saved state token to be restored or discarded.

Tcl_SavedResult *savedPtr (入力in)
  保存され取戻されるべき解釈実行機能の結果の場所への指示子｡　 Pointer to location where interpreter result should be saved or restored.

### 説明 DESCRIPTION

これ等の算譜は C 手続函数に解釈実行機能の現在の状態の状態出力を取ることを許容し､それにより Tcl_Eval や解釈実行機能の状態を修正する他の機能譜を呼出した後に取戻すことを可能にする｡協調して働くことを意味する２組の三つ組みがある｡ 　　　 These routines allows a C procedure to take a snapshot of the current state of an interpreter so that it can be restored after a call to Tcl_Eval or some other routine that modifies the interpreter state. There are two triplets of routines meant to work together.

最初の三つ組みは Tcl_SaveInterpState により不透明な字句解析結果を返された解釈実行機能の状態出力を保存する｡その字句解析結果は解釈実行機能の状態が保存されているか否かにより､ Tcl_RestoreInterpState か Tcl_DiscardInterpState の内の一つに渡し返した値をとる｡後の二つの譜の内の１つが呼ばれる迄､ Tcl は記憶域の管理に註意を払う｡ The first triplet stores the snapshot of interpreter state in an opaque token returned by Tcl_SaveInterpState. That token value may then be passed back to one of Tcl_RestoreInterpState or Tcl_DiscardInterpState, depending on whether the interp state is to be restored. So long as one of the latter two routines is called, Tcl will take care of memory management.

第２の三つ組みは呼出し側に割付けられた記憶域に､解釈実行機能結果の状態出力(その完全な状態ではない)のみ保存する｡これ等の業務譜は Tcl_SavedResult へのポインターを渡す､それは解釈実行機能の結果を再取出しするに充分な情報を保存するために使われる｡Tcl_SavedResult は呼出し手続き函数の棚上に割当てられることができる｡これ等の業務譜は解釈実行機能のどのような不都合情報の状態も保管しない(譬えば､不都合を処理している時の -errorcode や -errorinfo 返り選択肢)｡ 　　　　 The second triplet stores the snapshot of only the interpreter result (not its complete state) in memory allocated by the caller. These routines are passed a pointer to Tcl_SavedResult that is used to store enough information to restore the interpreter result. Tcl_SavedResult can be allocated on the stack of the calling procedure. These routines do not save the state of any error information in the interpreter (e.g. the -errorcode or -errorinfo return options, when an error is in progress).

Tcl_SaveInterpState と Tcl_RestoreInterpState と Tcl_DiscardInterpState は､他の業務譜によりもたらされる機能を凌駕しているので､どの新しい命令譜もこの強力な業務譜のみを使用するべきである｡古く､劣った業務譜 Tcl_SaveResult と Tcl_RestoreResult と Tcl_DiscardResult は既にそれを使用した既存の算譜の為にのみ存在する｡ 　　　 Because the routines Tcl_SaveInterpState, Tcl_RestoreInterpState, and Tcl_DiscardInterpState perform a superset of the functions provided by the other routines, any new code should only make use of the more powerful routines. The older, weaker routines Tcl_SaveResult, Tcl_RestoreResult, and Tcl_DiscardResult continue to exist only for the sake of existing programs that may already be using them.

Tcl_SaveInterpState は全部の記述譜評価の結果を作り上げる解釈実行機能の状態の部分の状態出力をとる｡これは解釈実行機能の結果と､( status 引数として渡された)戻り番号と､不都合が進行している時の -errorinfo や -errorcode を含むどのような戻り時の指定項目も含んでいる｡この状態出力は型 Tcl_InterpState の不透明な字句解釈として返される｡ Tcl_SaveInterpState への呼出しはそれ自身では解釈実行機能の状態を変更しない｡ Tcl_SaveResult とは異なり､解釈実行機能を刷新はしない｡ Tcl_SaveInterpState takes a snapshot of those portions of interpreter state that make up the full result of script evaluation. This include the interpreter result, the return code (passed in as the status argument, and any return options, including -errorinfo and -errorcode when an error is in progress. This snapshot is returned as an opaque token of type Tcl_InterpState. The call to Tcl_SaveInterpState does not itself change the state of the interpreter. Unlike Tcl_SaveResult, it does not reset the interpreter.

Tcl_RestoreInterpState は以前に Tcl_SaveInterpState によって返された Tcl_InterpState 字句結果を受入れ､解釈実行機能の状態を再度取戻し状態出力内に保持された状態に再保存する｡ Tcl_RestoreInterpState の返す値は元々状態出力の字句結果が生成された時に Tcl_SaveInterpState に渡された状態の値である｡ Tcl_RestoreInterpState accepts a Tcl_InterpState token previously returned by Tcl_SaveInterpState and restores the state of the interp to the state held in that snapshot. The return value of Tcl_RestoreInterpState is the status value originally passed to Tcl_SaveInterpState when the snapshot token was created.

Tcl_DiscardInterpState は以前､状態出力が解釈実行機能に再保存されなかった時に Tcl_SaveInterpState によって返された Tcl_InterpState 字句解析結果を解放する｡ Tcl_DiscardInterpState is called to release a Tcl_InterpState token previously returned by Tcl_SaveInterpState when that snapshot is not to be restored to an interp.

Tcl_SaveInterpState に返された Tcl_InterpState 字句解析結果は最終的には記憶域漏洩を避ける為に Tcl_RestoreInterpState or Tcl_DiscardInterpState のどちらかに渡されなければならない｡一度 Tcl_InterpState 字句解析結果がそのどちらかに渡されたら､字句解析結果は適切ではなく､それ以降使用すべきではない｡ 　　 The Tcl_InterpState token returned by Tcl_SaveInterpState must eventually be passed to either Tcl_RestoreInterpState or Tcl_DiscardInterpState to avoid a memory leak. Once the Tcl_InterpState token is passed to one of them, the token is no longer valid and should not be used anymore.

Tcl_SaveResult は文字列と interp の対象結果を statePtr によって指定される位置に移動する｡ Tcl_SaveResult は interp の為に結果を刷新し結果を通常の初期化された空状態にする｡ Tcl_SaveResult moves the string and value results of interp into the location specified by statePtr. Tcl_SaveResult clears the result for interp and leaves the result in its normal empty initialized state.

Tcl_RestoreResult は文字列と statePtr からの対象を interp に移動する｡既に解釈実行機能にあるどの結果も不都合も浄化される｡ statePtr は初期化されずに残され､他の Tcl_SaveResult 呼出し迄使用することはできない｡ Tcl_RestoreResult moves the string and value results from statePtr back into interp. Any result or error that was already in the interpreter will be cleared. The statePtr is left in an uninitialized state and cannot be used until another call to Tcl_SaveResult.

Tcl_DiscardResult は statePtr に保存されている解釈実行機能の状態を解放する｡状態構造は初期化されずに残され､他の Tcl_SaveResult 呼出し迄使用することはできない｡ Tcl_DiscardResult releases the saved interpreter state stored at statePtr. The state structure is left in an uninitialized state and cannot be used until another call to Tcl_SaveResult.

一度 Tcl_SaveResult が解釈実行機能の結果を保存する為に呼出されると､ Tcl_RestoreResult や Tcl_DiscardResult が保存された状態に結合された記憶域の刷新の為に呼ばれなくてはならない｡ 　　 Once Tcl_SaveResult is called to save the interpreter result, either Tcl_RestoreResult or Tcl_DiscardResult must be called to properly clean up the memory associated with the saved state.

### KEYWORDS

result, state, interp
Copyright © 1997 Sun Microsystems, Inc.