## Tcl9.0.3/Tk9.0.3 Documentation > Tcl C API > CrtAlias

### 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_IsSafe, Tcl_CreateChild, Tcl_GetChild, Tcl_GetParent, Tcl_GetInterpPath, Tcl_CreateAlias, Tcl_CreateAliasObj, Tcl_GetAliasObj, Tcl_ExposeCommand, Tcl_HideCommand — 多重 Tcl 解釈実行機能と､別名連鎖と､隠蔽命令の管理 manage multiple Tcl interpreters, aliases and hidden commands
  SYNOPSIS
    #include <tcl.h>
    int
    Tcl_IsSafe(interp)
    Tcl_Interp *
    Tcl_CreateChild(interp, name, isSafe)
    Tcl_Interp *
    Tcl_GetChild(interp, name)
    Tcl_Interp *
    Tcl_GetParent(interp)
    int
    Tcl_GetInterpPath(interp, childInterp)
    int
    Tcl_CreateAlias(childInterp, childCmd, targetInterp, targetCmd,
    argc, argv)
    int
    Tcl_CreateAliasObj(childInterp, childCmd, targetInterp, targetCmd,
    objc, objv)
    int
    Tcl_GetAliasObj(interp, childCmd, targetInterpPtr, targetCmdPtr,
    objcPtr, objvPtr)
    int
    Tcl_ExposeCommand(interp, hiddenCmdName, cmdName)
    int
    Tcl_HideCommand(interp, cmdName, hiddenCmdName)
  引数 ARGUMENTS
    Tcl_Interp *interp (入力in)
    const char *name (入力in)
    int isSafe (入力in)
    Tcl_Interp *childInterp (入力in)
    const char *childCmd (入力in)
    Tcl_Interp *targetInterp (入力in)
    const char *targetCmd (入力in)
    Tcl_Size argc (in)
    const char *const *argv (入力in)
    Tcl_Size objc (入力in)
    Tcl_Obj **objv (入力in)
    Tcl_Interp **targetInterpPtr (入力in)
    const char **targetCmdPtr (出力out)
    Tcl_Size &| int *objcPtr (出力out)
    Tcl_Obj ***objvPtr (出力out)
    const char *cmdName (入力in)
    const char *hiddenCmdName (入力in)
  説明 DESCRIPTION
  参照回数管理 REFERENCE COUNT MANAGEMENT
  SEE ALSO
  KEYWORDS

### NAME

Tcl_IsSafe, Tcl_CreateChild, Tcl_GetChild, Tcl_GetParent, Tcl_GetInterpPath, Tcl_CreateAlias, Tcl_CreateAliasObj, Tcl_GetAliasObj, Tcl_ExposeCommand, Tcl_HideCommand — 多重 Tcl 解釈実行機能と､別名連鎖と､隠蔽命令の管理 manage multiple Tcl interpreters, aliases and hidden commands

### SYNOPSIS

#include <tcl.h>
int
Tcl_IsSafe(interp)
Tcl_Interp *
Tcl_CreateChild(interp, name, isSafe)
Tcl_Interp *
Tcl_GetChild(interp, name)
Tcl_Interp *
Tcl_GetParent(interp)
int
Tcl_GetInterpPath(interp, childInterp)
int
Tcl_CreateAlias(childInterp, childCmd, targetInterp, targetCmd,
`` argc, argv)
int
Tcl_CreateAliasObj(childInterp, childCmd, targetInterp, targetCmd,
`` objc, objv)
int
Tcl_GetAliasObj(interp, childCmd, targetInterpPtr, targetCmdPtr,
`` objcPtr, objvPtr)
int
Tcl_ExposeCommand(interp, hiddenCmdName, cmdName)
int
Tcl_HideCommand(interp, cmdName, hiddenCmdName)

### 引数 ARGUMENTS

Tcl_Interp *interp (入力in)
  指定された命令を内部で実行する解釈実行機能｡ Interpreter in which to execute the specified command.

const char *name (入力in)
  創生すべき或は操作すべき子供の解釈実行機能｡ 　 Name of child interpreter to create or manipulate.

int isSafe (入力in)
  非-零の場合､信頼できない符号命令の実行に適する “安全な” 子供(の解釈実行機能)が創生され､それ以外の場合､信頼できる子供が創生される｡ 　 If non-zero, a “safe” child that is suitable for running untrusted code is created, otherwise a trusted child is created.

Tcl_Interp *childInterp (入力in)
  別名連鎖に拘る原資の命令の創生に使用する解釈実行機能(下を参照)｡ 　 Interpreter to use for creating the source command for an alias (see below).

const char *childCmd (入力in)
  別名連鎖に関する原資の命令の名前｡ 　 Name of source command for alias.

Tcl_Interp *targetInterp (入力in)
  別名連鎖に関する目標命令を含んでいる解釈実行機能｡ 　 Interpreter that contains the target command for an alias.

const char *targetCmd (入力in)
  targetInterp 内の別名連鎖に関する目標命令の名前｡ 　 Name of target command for alias in targetInterp.

Tcl_Size argc (in)
  別名連鎖の命令に渡すべき追加引数の個数｡ 　 Count of additional arguments to pass to the alias command.

const char *const *argv (入力in)
  文字列のベクトル､別名連鎖の命令に渡すべき追加引数｡この保管場所は呼出者に所有される｡ 　 Vector of strings, the additional arguments to pass to the alias command. This storage is owned by the caller.

Tcl_Size objc (入力in)
  別名連鎖の命令に渡すべき追加の値の引数の個数｡ 　 Count of additional value arguments to pass to the aliased command.

Tcl_Obj **objv (入力in)
  Tcl_Obj 構造のベクトル､別名連鎖の命令に渡すべき追加の値の引数｡この保管場所は呼出者に所有される｡ 　 Vector of Tcl_Obj structures, the additional value arguments to pass to the aliased command. This storage is owned by the caller.

Tcl_Interp **targetInterpPtr (入力in)
  別名連鎖の為に命令が定義されている解釈実行機能の番地が貯蔵されている位置への指示子｡ 　 Pointer to location to store the address of the interpreter where a target command is defined for an alias.

const char **targetCmdPtr (出力out)
  別名連鎖の為に定義されている命令の名前の番地が貯蔵されている位置への指示子｡ 　 Pointer to location to store the address of the name of the target command for an alias.

Tcl_Size &| int *objcPtr (出力out)
  別名連鎖に渡されるべき追加引数の個数を保存すべき位置への指示子｡位置は呼出側に所有された貯蔵内にある｡もし､ tcl寸法Tcl_Size でない型の変数を指している場合､機械語翻訳警告が正絵師される｡もし､使用者の拡張が -DTCL_8_API を伴って機械語翻訳されていると､ INT_MAX 値を超える引数を伴う別名連鎖には､この函数は TCL_ERROR を返すが､それ以外では､崩壊が期待される｡ Pointer to location to store count of additional value arguments to be passed to the alias. The location is in storage owned by the caller. If it points to a variable which type is not Tcl_Size, a compiler warning will be generated. If your extensions is compiled with -DTCL_8_API, this function will return TCL_ERROR for aliases with more than INT_MAX value arguments, otherwise expect it to crash

Tcl_Obj ***objvPtr (出力out)
  別名連鎖命令に渡されるべき Tcl_Obj のベクトルを保有する位置への指示子｡貯蔵の位置は呼出者に所有され､ Tcl_Obj 構造のベクトルは呼ばれた函数に所有される｡ Pointer to location to store a vector of Tcl_Obj structures, the additional arguments to pass to an alias command. The location is in storage owned by the caller, the vector of Tcl_Obj structures is owned by the called function.

const char *cmdName (入力in)
  隠蔽すべきか創生すべき露呈された命令の名称｡ Name of an exposed command to hide or create.

const char *hiddenCmdName (入力in)
  別名連鎖の為に定義されている命令の名前の番地が貯蔵されている位置への指示子｡ 　 Name under which a hidden command is stored and with which it can be exposed or invoked.

### 説明 DESCRIPTION

これ等の手続き函数は､ C 算譜の内部から多重の解釈実行機能設備を利用することを意図している｡それらは､他の解釈実行機能の中で命令を実行している解釈実行機能内で起動された時に､多重の階層構造と命令を制御できる｡int を返すこれらの手続き函数の返り値は TCL_OK か TCL_ERROR である｡もし TCL_ERROR が返されると､解釈実行機能の結果は不都合伝言文を含む｡ These procedures are intended for access to the multiple interpreter facility from inside C programs. They enable managing multiple interpreters in a hierarchical relationship, and the management of aliases, commands that when invoked in one interpreter execute a command in another interpreter. The return value for those procedures that return an int is either TCL_OK or TCL_ERROR. If TCL_ERROR is returned then the interpreter's result contains an error message.

Tcl_CreateSlave は interp の子供として新しい解釈実行機能を創生する｡それは interp 内に childName と名付けられた子供の命令を創生し､新しい子供を操作する為の interp を許容する｡もし isSafe が零なら､その命令は信頼できる子供を創生し､そこでは､ Tcl 符号命令は全ての Tcl 命令を利用させる｡もし､1 なら､その命令は “安全な” 子供を創生し､そこでは､ Tcl 符号命令は “Safe Tcl” として定義された Tcl 命令揃いのみを利用させる; 詳細は取扱い説明書の Tcl interp 命令を参照されたい｡もし､新しい子供の解釈実行機能の創生に失敗すると NULL が返される｡ Tcl_CreateChild creates a new interpreter as a child of interp. It also creates a child command named name in interp which allows interp to manipulate the new child. If isSafe is zero, the command creates a trusted child in which Tcl code has access to all the Tcl commands. If it is 1, the command creates a “safe” child in which Tcl code has access only to set of Tcl commands defined as “Safe Tcl”; see the manual entry for the Tcl interp command for details. If the creation of the new child interpreter failed, NULL is returned.

Tcl_IsSafe は､もし interp が “安全” (それは指定された TCL_SAFE_INTERPRETER 旗徴を伴って創生された) であれば､1 を返し､それ以外では 0 を返す｡ Tcl_IsSafe returns 1 if interp is “safe” (was created with the TCL_SAFE_INTERPRETER flag specified), 0 otherwise.

Tcl_GetChild はinterp の仔供の解釈実行機能への指示子を返す｡仔供の解釈実行機能は､ name によって識別される｡もしその様な仔供の解釈実行機能が存しない場合､ NULL が返される｡ Tcl_GetChild returns a pointer to a child interpreter of interp. The child interpreter is identified by name. If no such child interpreter exists, NULL is returned.

Tcl_GetParent はinterp の親の解釈実行機能への指示子を返す｡親の解釈実行機能は､ name によって識別される｡もしその様な仔供の解釈実行機能が存しない場合､(その場合頂上水準解釈実行機能である) NULL が返される｡ Tcl_GetParent returns a pointer to the parent interpreter of interp. If interp has no parent (it is a top-level interpreter) then NULL is returned.

Tcl_GetInterpPath は interp の結果を保存する､即ち､interp と childInterp との相対関係である; childInterp は interp の子供でなければならない｡もし相対的経路の計算が成功すると TCL_OK が返され､そうでないとTCL_ERROR が返され､ interp の結果として不都合伝言文が保存される｡ Tcl_GetInterpPath stores in the result of interp the relative path between interp and childInterp; childInterp must be a child of interp. If the computation of the relative path succeeds, TCL_OK is returned, else TCL_ERROR is returned and an error message is stored as the result of interp.

Tcl_CreateAlias は childInterp が起動された時に中に childCmd と名付けられた命令を創生し､ targetInterp の中の命令 targetCmd が起動されることを惹き起こす｡ argv 中に含まれる文字列によって指定される引数は childCmd の呼出に提供されるどの引数にも､常に､前置され､ targetCmd に渡される｡この操作は成功すれば TCL_OK を返し､失敗すれば TCL_ERROR を返す; その場合 childInterp の結果の値の中に不都合伝言文が残される｡ 註意すべきは､ childInterp と targetInterp の間の先祖関係(Tcl_CreateSlave によって創生された)には制限がない事である｡どの二つの解釈実行機能も､それらが如何なる関係であっても制限なく使える｡ Tcl_CreateAlias creates a command named childCmd in childInterp that when invoked, will cause the command targetCmd to be invoked in targetInterp. The arguments specified by the strings contained in argv are always prepended to any arguments supplied in the invocation of childCmd and passed to targetCmd. This operation returns TCL_OK if it succeeds, or TCL_ERROR if it fails; in that case, an error message is left in the value result of childInterp. Note that there are no restrictions on the ancestry relationship (as created by Tcl_CreateChild) between childInterp and targetInterp. Any two interpreters can be used, without any restrictions on how they are related.

Tcl_CreateAliasObj は追加引数として渡す文字列のベクトルの代りに値のベクトルを採る処を除いて Tcl_CreateAlias に似ている｡ Tcl_CreateAliasObj is similar to Tcl_CreateAlias except that it takes a vector of values to pass as additional arguments instead of a vector of strings.

Tcl_GetAliasObj は interp 内の別名連鎖 aliasName に関する Tcl_Obj のベクトルへの指示子の形式に関する情報を返す｡対応するデータが返されない場合､結果のどの欄も NULL になり得る｡もし､結果欄が非-NULL の場合､示される番地は相当するデータの揃いである｡譬えば､もし targetCmdPtr が非-NULL の場合､目的の命令の名前を含む文字列への指示子への揃いである｡ Tcl_GetAliasObj returns information in the form of a pointer to a vector of Tcl_Obj structures about an alias aliasName in interp. Any of the result fields can be NULL, in which case the corresponding datum is not returned. If a result field is non-NULL, the address indicated is set to the corresponding datum. For example, if targetCmdPtr is non-NULL it is set to a pointer to the string containing the name of the target command.

Tcl_ExposeCommand は hiddenCmdName と名付けられた命令を隠蔽命令の揃いから 名前に cmdName を付けて､露呈命令の揃いに移動する｡HiddenCmdName は実在の隠蔽命令でなければならず､そうでないと､操作は TCL_ERROR を返し､ interp の結果として不都合伝言文を残す｡もし操作が成功すると TCL_OK を返す｡この命令の実行の後､どの記述譜評価の仕組みの中での cmdName の使用の試みも再び成功することになる｡ Tcl_ExposeCommand moves the command named hiddenCmdName from the set of hidden commands to the set of exposed commands, putting it under the name cmdName. HiddenCmdName must be the name of an existing hidden command, or the operation will return TCL_ERROR and leave an error message as the result of interp. If an exposed command named cmdName already exists, the operation returns TCL_ERROR and leaves an error message as the result of interp. If the operation succeeds, it returns TCL_OK. After executing this command, attempts to use cmdName in any script evaluation mechanism will again succeed.

Tcl_HideCommand は露呈命令の揃いから cmdName と名付けられた命令を hiddenCmdName という名前で隠蔽命令の揃いに移す｡CmdName は実在する露呈命令の名前でなければならず､そうでないと､操作は TCL_ERROR を返し､ interp の結果として不都合伝言文を残す｡ CmdName は大域名前空間内で捜索できるようになり､それは､縦え現在の名前空間が大域ではなくても､現在の名前空間から相対的ではない｡もし､ hiddenCmdName と謂う隠蔽命令が既に実在すると､操作は TCL_ERROR を返し､且つ､ interp の結果として不都合伝言文を残す｡もし操作が成功すると TCL_OK を返す｡この命令の実行の後､どの記述譜評価の仕組みの中での cmdName の使用の試みも失敗することになる｡ Tcl_HideCommand moves the command named cmdName from the set of exposed commands to the set of hidden commands, under the name hiddenCmdName. CmdName must be the name of an existing exposed command, or the operation will return TCL_ERROR and leave an error message as the result of interp. Currently both cmdName and hiddenCmdName must not contain namespace qualifiers, or the operation will return TCL_ERROR and leave an error message as the result of interp. The CmdName will be looked up in the global namespace, and not relative to the current namespace, even if the current namespace is not the global one. If a hidden command whose name is hiddenCmdName already exists, the operation also returns TCL_ERROR and an error message is left as the result of interp. If the operation succeeds, it returns TCL_OK. After executing this command, attempts to use cmdName in any script evaluation mechanism will fail.

多重解釈実行機能への Tcl 対話機能の記述については､interp(n) を参照されたい｡ For a description of the Tcl interface to multiple interpreters, see interp(n).

### 参照回数管理 REFERENCE COUNT MANAGEMENT

Tcl_CreateAliasObj はその objv 引数内の値の参照回数を増加する｡(参照は所有する別名連鎖と同じ回数の長さを持続する｡) Tcl_CreateAliasObj increments the reference counts of the values in its objv argument. (That reference lasts the same length of time as the owning alias.)

Tcl_GetAliasObj は(その objvPtr 引数経由で)参照への値を保持している指示子を返す｡ Tcl_GetAliasObj returns (via its objvPtr argument) a pointer to values that it holds a reference to.

### SEE ALSO

interp

### KEYWORDS

alias, command, exposed commands, hidden commands, interpreter, invoke, parent, child
Copyright © 1995-1996 Sun Microsystems, Inc.