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

### 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_CreateObjCommand, Tcl_CreateObjCommand2, Tcl_DeleteCommand, Tcl_DeleteCommandFromToken, Tcl_GetCommandInfo, Tcl_GetCommandInfoFromToken, Tcl_SetCommandInfo, Tcl_SetCommandInfoFromToken, Tcl_GetCommandName, Tcl_GetCommandFullName, Tcl_GetCommandFromObj — C 言語の新しい命令の実装 implement new commands in C
  SYNOPSIS
    #include <tcl.h>
    Tcl_Command
    Tcl_CreateObjCommand(interp, cmdName, proc, clientData, deleteProc)
    Tcl_Command
    Tcl_CreateObjCommand2(interp, cmdName, proc2, clientData, deleteProc)
    int
    Tcl_DeleteCommand(interp, cmdName)
    int
    Tcl_DeleteCommandFromToken(interp, token)
    int
    Tcl_GetCommandInfo(interp, cmdName, infoPtr)
    int
    Tcl_SetCommandInfo(interp, cmdName, infoPtr)
    int
    Tcl_GetCommandInfoFromToken(token, infoPtr)
    int
    Tcl_SetCommandInfoFromToken(token, infoPtr)
    const char *
    Tcl_GetCommandName(interp, token)
    Tcl_GetCommandFullName(interp, token, objPtr)
    Tcl_Command
    Tcl_GetCommandFromObj(interp, objPtr)
  引数 ARGUMENTS
    Tcl_Interp *interp (in)
    const char *cmdName (入力in)
    Tcl_ObjCmdProc *proc (入力in)
    Tcl_ObjCmdProc2 *proc2 (入力in)
    void *clientData (入力in)
    Tcl_CmdDeleteProc *deleteProc (入力in)
    Tcl_Command token (入力in)
    Tcl_CmdInfo *infoPtr (入出力in/out)
    Tcl_Obj *objPtr (入力in)
    const char *typeName (入力in)
  説明 DESCRIPTION
  参照回数管理 REFERENCE COUNT MANAGEMENT
  SEE ALSO
  KEYWORDS

### NAME

Tcl_CreateObjCommand, Tcl_CreateObjCommand2, Tcl_DeleteCommand, Tcl_DeleteCommandFromToken, Tcl_GetCommandInfo, Tcl_GetCommandInfoFromToken, Tcl_SetCommandInfo, Tcl_SetCommandInfoFromToken, Tcl_GetCommandName, Tcl_GetCommandFullName, Tcl_GetCommandFromObj — C 言語の新しい命令の実装 implement new commands in C

### SYNOPSIS

#include <tcl.h>
Tcl_Command
Tcl_CreateObjCommand(interp, cmdName, proc, clientData, deleteProc)
Tcl_Command
Tcl_CreateObjCommand2(interp, cmdName, proc2, clientData, deleteProc)
int
Tcl_DeleteCommand(interp, cmdName)
int
Tcl_DeleteCommandFromToken(interp, token)
int
Tcl_GetCommandInfo(interp, cmdName, infoPtr)
int
Tcl_SetCommandInfo(interp, cmdName, infoPtr)
int
Tcl_GetCommandInfoFromToken(token, infoPtr)
int
Tcl_SetCommandInfoFromToken(token, infoPtr)
const char *
Tcl_GetCommandName(interp, token)
Tcl_GetCommandFullName(interp, token, objPtr)
Tcl_Command
Tcl_GetCommandFromObj(interp, objPtr)

### 引数 ARGUMENTS

Tcl_Interp *interp (in)
  新しい命令が定義されるか命令を含んでいる解釈実行機能｡ 　 Interpreter in which to create a new command or that contains a command.

const char *cmdName (入力in)
  命令の名前｡ 　 Name of command.

Tcl_ObjCmdProc *proc (入力in)
  新しい命令の実装: proc は､何時であれ cmdName が命令として起動された時に呼ばれる｡ 　　 Implementation of the new command: proc will be called whenever cmdName is invoked as a command.

Tcl_ObjCmdProc2 *proc2 (入力in)
  新しい命令の実装: proc2 は､何時であれ cmdName が命令として起動された時に呼ばれる｡ 　 Implementation of the new command: proc2 will be called whenever cmdName is invoked as a command.

void *clientData (入力in)
  proc と deleteProc に渡される任意の１語値｡ Arbitrary one-word value to pass to proc and deleteProc.

Tcl_CmdDeleteProc *deleteProc (入力in)
  cmdName が解釈実行機能から削除される前に呼ぶべき手続函数; 命令固有の一掃を許容する｡もし NULL なら命令が削除される前に手続函数は呼ばれない｡ 　　　 Procedure to call before cmdName is deleted from the interpreter; allows for command-specific cleanup. If NULL, then no procedure is called before the command is deleted.

Tcl_Command token (入力in)
  以前の Tcl_CreateObjCommand の呼出しによって返された命令に関する解析語句｡その命令は削除されていてはならない｡　　 Token for command, returned by previous call to Tcl_CreateObjCommand. The command must not have been deleted.

Tcl_CmdInfo *infoPtr (入出力in/out)
  Tcl 命令に関する種々の情報を含む構造へのポインター｡ 　　　 Pointer to structure containing various information about a Tcl command.

Tcl_Obj *objPtr (入力in)
  Tcl命令の名前を含む値｡　　 Value containing the name of a Tcl command.

const char *typeName (入力in)
  特定の proc と関連する命令実装の型の名前を指す､又は､関連を断つときは､NULL｡ Indicates the name of the type of command implementation associated with a particular proc, or NULL to break the association.

### 説明 DESCRIPTION

Tcl_CreateObjCommand は interp 内に新しい命令を定義し､次に､何時であれ name が Tcl 命令として起動された時は(譬えば､ Tcl_EvalObjEx の呼出しを経由して)､ Tcl 解釈実行機能がその命令を処理する為に proc を呼ぶ様に､新命令を手続函数 proc に結合する｡ Tcl_CreateObjCommand defines a new command in interp and associates it with procedure proc such that whenever name is invoked as a Tcl command (e.g., via a call to Tcl_EvalObjEx) the Tcl interpreter will call proc to process the command.

Tcl_CreateObjCommand は既に解釈実行機能と結合されたどの様な既存の name 命令も削除する(但し､既存の命令が削除されない様な例外に就いては下を参照されたい)｡引続く Tcl_GetCommandName への呼出し内の命令に参照する為に使われ得る字句解析結果を返す｡もし name が何かの名前空間修飾子の :: を含んでいる場合命令は指定された名前空間に加えれられる; そうでない場合､命令は大域名前空間に加えれられる｡もし Tcl_CreateObjCommand が削除される処理中の解釈実行機能の為に呼ばれた場合､それは新しい命令をつくらず NULL を返す｡ proc は Tcl_ObjCmdProc 型に合致する引数と結果を有するべきである: Tcl_CreateObjCommand deletes any existing command name already associated with the interpreter (however see below for an exception where the existing command is not deleted). It returns a token that may be used to refer to the command in subsequent calls to Tcl_GetCommandName. If name contains any :: namespace qualifiers, then the command is added to the specified namespace; otherwise the command is added to the global namespace. If Tcl_CreateObjCommand is called for an interpreter that is in the process of being deleted, then it does not create a new command and it returns NULL. proc should have arguments and result that match the type Tcl_ObjCmdProc:

    typedef int Tcl_ObjCmdProc(
            void *clientData,
            Tcl_Interp *interp,
            int objc,
            Tcl_Obj *const objv[]);

proc が起動された時､ clientData と interp 媒介変数は Tcl_CreateObjCommand に与えられた clientData と interp arguments 引数の複写になる｡典型的には､ clientData は命令手続函数が起動された時に何をすべきかを記述した応用譜固有のデータ構造を指す｡ objc と objv は命令への引数を記述し､ objc は値引数の個数を与え(命令の名前を含む)､ objv は引数の値を与える｡ objv 配列は objc 値を含むことになり､引数値を指す｡文字列基準命令手続函数内で使われる argv[argv] とは異なり､ objv[objc] は NULL を含む様にはならない｡ 　　　 When proc is invoked, the clientData and interp parameters will be copies of the clientData and interp arguments given to Tcl_CreateObjCommand. Typically, clientData points to an application-specific data structure that describes what to do when the command procedure is invoked. Objc and objv describe the arguments to the command, objc giving the number of argument values (including the command name) and objv giving the values of the arguments. The objv array will contain objc values, pointing to the argument values. Unlike argv[argv] used in a string-based command procedure, objv[objc] will not contain NULL.

更に､ proc が起動される時､それは配列のどの要素への新しいポインター値の代入による objv 配列の内容も修正してはならない(譬えば､ objv[2] = NULL)､理由は､これは記憶の喪失を引起し実行用棚が崩壊するから｡ objv の宣言内の const はANSI-準拠言語翻訳譜に何か不都合な代入の試みの様な報告をすることをさせる｡しかし､何か個別の値引数の内部表現を修正することは受入れる｡譬えば､使用者が objv[2] 上に対象の整数表現を得る為に objv[2] 上の Tcl_GetIntFromObj を呼ぶかもしれない; その呼出しは､あの objv[2] が指している値の型を変更するかもしれないが､ objv[2] が指す位置は変更しない｡ 　　　 Additionally, when proc is invoked, it must not modify the contents of the objv array by assigning new pointer values to any element of the array (for example, objv[2] = NULL) because this will cause memory to be lost and the runtime stack to be corrupted. The const in the declaration of objv will cause ANSI-compliant compilers to report any such attempted assignment as an error. However, it is acceptable to modify the internal representation of any individual value argument. For instance, the user may call Tcl_GetIntFromObj on objv[2] to obtain the integer representation of that value; that call may change the type of the value that objv[2] points at, but will not change where objv[2] points.

proc は TCL_OK か TCL_ERROR か TCL_RETURN か TCL_BREAK か TCL_CONTINUE のどれかの整数符号を返さねばならない｡これ等の､符号命令が意味することの詳細､及び､拡張の私的使用に関する拡張値の使用､は return の､取扱い説明書を参照されたい｡通常の大半の命令は､ TCL_OK 戻り､か TCL_ERROR 戻りになる｡ proc must return an integer code that is either TCL_OK, TCL_ERROR, TCL_RETURN, TCL_BREAK, or TCL_CONTINUE. See the return man page for details on what these codes mean and the use of extended values for an extension's private use. Most normal commands will only return TCL_OK or TCL_ERROR.

更に､もし proc が非空結果を返す必要があると､解釈実行機能の結果を設定する為に Tcl_SetObjResult を呼ぶかもしれない｡ TCL_OK 返り符号の場合､之が命令の結果を与え､ TCL_ERROR の場合､之が不都合伝言文を与える｡命令手続函数の起動の前に､ Tcl_EvalObjEx は空文字列を表現する値を指す解釈実行機能の結果を設定する､故､単純な命令が何もすることなく空結果を返すかもしれない｡ 　　　 In addition, if proc needs to return a non-empty result, it can call Tcl_SetObjResult to set the interpreter's result. In the case of a TCL_OK return code this gives the result of the command, and in the case of TCL_ERROR this gives an error message. Before invoking a command procedure, Tcl_EvalObjEx sets interpreter's result to point to a value representing an empty string, so simple commands can return an empty result by doing nothing at all.

objv 配列の内容は Tcl に属し､ proc がひとたび返ると生残ることは保障されない: proc はそれらを修正すべきではない｡ objv 配列から何かを返すことを望む場合は Tcl_SetObjResult を呼ぶべきである｡ The contents of the objv array belong to Tcl and are not guaranteed to persist once proc returns: proc should not modify them. Call Tcl_SetObjResult if you want to return something from the objv array.

通常､ Tcl_CreateObjCommand は既に解釈実行機能と結合したどのような既存の命令 name も削除する｡但し､もし既存の命令が以前の Tcl_CreateCommand の呼出しによって作成されている場合､ Tcl_CreateObjCommand は命令を削除しないが､代りに解釈実行機能の為に将来 Tcl_ObjCmdProc proc を呼ぶことを手配する｡命令に結合した古い文字列基準の Tcl_CmdProc は残され､その番地はそれに続く Tcl_GetCommandInfo の呼出しによって得られる｡これは旧版との互換性を保つ為に行われる｡　　　　　　　 Ordinarily, Tcl_CreateObjCommand deletes any existing command name already associated with the interpreter. However, if the existing command was created by a previous call to Tcl_CreateCommand, Tcl_CreateObjCommand does not delete the command but instead arranges for the Tcl interpreter to call the Tcl_ObjCmdProc proc in the future. The old string-based Tcl_CmdProc associated with the command is retained and its address can be obtained by subsequent Tcl_GetCommandInfo calls. This is done for backwards compatibility.

DeleteProc は name が削除された時に起動される｡これは､ Tcl_DeleteCommand か Tcl_DeleteCommandFromToken か Tcl_DeleteInterp の呼出しか､その他からの Tcl_CreateObjCommand の呼出による name の置換えによって生じ得る｡ DeleteProc は命令が削除される前に呼ばれ､応用譜に命令に結合したどの様な結合も解除する機会を与える｡ DeleteProc will be invoked when (if) name is deleted. This can occur through a call to Tcl_DeleteCommand, Tcl_DeleteCommandFromToken, or Tcl_DeleteInterp, or by replacing name in another call to Tcl_CreateObjCommand. DeleteProc is invoked before the command is deleted, and gives the application an opportunity to release any structures associated with the command. DeleteProc should have arguments and result that match the type Tcl_CmdDeleteProc:

    typedef void Tcl_CmdDeleteProc(
            void *clientData);

clientData 引数は Tcl_CreateObjCommand に渡された clientData 引数と同じになる｡　　　　 The clientData argument will be the same as the clientData argument passed to Tcl_CreateObjCommand.

Tcl_CreateObjCommand2 は､そのproc2引数がTcl_ObjCmdProc2型である事を除いてTcl_CreateObjCommandと同じである｡ Tcl_CreateObjCommand2 does the same as Tcl_CreateObjCommand, except its proc2 argument is of type Tcl_ObjCmdProc2.

    typedef int Tcl_ObjCmdProc2(
            void *clientData,
            Tcl_Interp *interp,
            Tcl_Size objc,
            Tcl_Obj *const objv[]);

Tcl_DeleteCommand は命令解釈実行機能からの命令を削除する｡一度呼出が完了した後は､ interp 内での cmdName の起動は不具合に帰す｡もし､ cmdName が interp 内で命令として束縛されていない場合は Tcl_DeleteCommand は何もせず -1 を返す; そうでない場合は 0 を返す｡ cmdName 上には制限がない: それは組込み命令､亦は応用譜固有の命令､亦は Tcl 手続函数を参照しているかもしれない｡もし name が何か名前空間修飾子の :: を含む場合命令は指定された名前空間から削除される｡ Tcl_DeleteCommand deletes a command from a command interpreter. Once the call completes, attempts to invoke cmdName in interp will result in errors. If cmdName is not bound as a command in interp then Tcl_DeleteCommand does nothing and returns -1; otherwise it returns 0. There are no restrictions on cmdName: it may refer to a built-in command, an application-specific command, or a Tcl procedure. If name contains any :: namespace qualifiers, the command is deleted from the specified namespace.

Tcl_CreateObjCommand から返された字句を与えられ､ Tcl_DeleteCommandFromToken は命令解釈実行機能から命令を削除する｡それはその命令が改名されていても命令を削除する｡一度呼出しが完了した後は､ interp 内でのその命令の起動は不具合に帰す｡もし token に相当する命令が既に interp から削除されていた場合､ Tcl_DeleteCommand は何もせず -1 を返す; そうでない場合は 0 を返す｡ 　　　 Given a token returned by Tcl_CreateObjCommand, Tcl_DeleteCommandFromToken deletes the command from a command interpreter. It will delete a command even if that command has been renamed. Once the call completes, attempts to invoke the command in interp will result in errors. If the command corresponding to token has already been deleted from interp then Tcl_DeleteCommand does nothing and returns -1; otherwise it returns 0.

Tcl_GetCommandInfo はその cmdName 引数が interp 内に命令として実在するのかを見るために検査する｡ cmdName は特定の名前空間内の命令を識別する為に名前空間修飾子の :: を含むかもしれない｡もしその命令が見付らない場合､ 0 を返す｡そうでない場合､それは infoPtr によって指される Tcl_CmdInfo 構造内に､命令に関する情報を置き､ 1 を返す｡ Tcl_CmdInfo 構造は次の欄を有する: Tcl_GetCommandInfo checks to see whether its cmdName argument exists as a command in interp. cmdName may include :: namespace qualifiers to identify a command in a particular namespace. If the command is not found, then it returns 0. Otherwise it places information about the command in the Tcl_CmdInfo structure pointed to by infoPtr and returns 1. A Tcl_CmdInfo structure has the following fields:

    typedef struct {
        int isNativeObjectProc;
        Tcl_ObjCmdProc *objProc;
        void *objClientData;
        Tcl_CmdProc *proc;
        void *clientData;
        Tcl_CmdDeleteProc *deleteProc;
        void *deleteData;
        Tcl_Namespace *namespacePtr;
        Tcl_ObjCmdProc2 *objProc2;
        void *objClientData2;
    } Tcl_CmdInfo;

もし命令を登録する為に､Tcl_CreateObjCommand2が呼出されると､isNativeObjectProc欄は値2を有す;もし命令を登録する為に､Tcl_CreateObjCommandが呼出されると､それは､値1を有する､Tcl_CreateCommandのみが呼出されると､値は0である｡ objProc2,か objProc か proc か､ どれを呼ぶのが､より速いかを定める事を､算譜に許容する: もし､isNativeObjectProcが値2を有する時は､通常objProc2/objProcが､より速い､もし isNativeObjectProc が値 1 を有する場合､通常は objProc がより速い｡ objProc と objClientData 欄は Tcl_CreateObjCommand に対する proc と clientData 引数と同じ意味を有する; それらは命令を実装する為に Tcl 解釈実行機能が呼出す値基準の命令手続函数に関する情報を保有する｡ proc と clientData 欄は命令を実装する文字列基準の命令手続函数に関する情報を保有する｡もし Tcl_CreateCommand がこの命令の為に呼ばれる場合は､之はそれに渡される手続函数である; そうでない場合､これは､Tcl_CreateObjCommand によって登録されたものと互換性のある手続函数であり､その文字列引数を Tcl 値に変換した後に単に呼出す命令の値基準の手続函数である｡その deleteData 欄は deleteProc に渡す為の ClientData 値である; それは通常 clientData と同じであるが､ Tcl_SetCommandInfo 手続函数を使って独自に設定できる｡ namespacePtr 欄は命令を含む Tcl_Namespace へのポインターを保有する｡ The isNativeObjectProc field has the value 2 if Tcl_CreateObjCommand2 was called to register the command; it has the value 1 if Tcl_CreateObjCommand was called to register the command; it is 0 if only Tcl_CreateCommand was called. It allows a program to determine whether it is faster to call objProc2, objProc or proc: objProc2/objProc is normally faster if isNativeObjectProc has the value 2; objProc/objProc is normally faster if isNativeObjectProc has the value 1. The fields objProc and objClientData have the same meaning as the proc and clientData arguments to Tcl_CreateObjCommand; they hold information about the value-based command procedure that the Tcl interpreter calls to implement the command. The fields proc and clientData hold information about the string-based command procedure that implements the command. If Tcl_CreateCommand was called for this command, this is the procedure passed to it; otherwise, this is a compatibility procedure registered by Tcl_CreateObjCommand that simply calls the command's value-based procedure after converting its string arguments to Tcl values. The field deleteData is the clientData value to pass to deleteProc; it is normally the same as clientData but may be set independently using the Tcl_SetCommandInfo procedure. The field namespacePtr holds a pointer to the Tcl_Namespace that contains the command.

Tcl_GetCommandInfoFromToken は Tcl_GetCommandInfo と殆ど同一であるが違いは､名前の場所に Tcl_CreateObjCommand から返った命令の字句結果を使うことである｡もし token 媒介変数が NULL の場合､それは 0 を返す;そうでない場合､ 1 を返し､ infoPtr によって指定された構造内に入れる｡ Tcl_GetCommandInfoFromToken is identical to Tcl_GetCommandInfo except that it uses a command token returned from Tcl_CreateObjCommand in place of the command name. If the token parameter is NULL, it returns 0; otherwise, it returns 1 and fills in the structure designated by infoPtr.

Tcl_SetCommandInfo は手続函数と命令に結合した clientData 値の修正に使用される｡その cmdName 引数は interp.内の命令の名前である｡ cmdName は特定の名前空間内の命令を識別する名前空間修飾子の :: を含んでいるかも知ない｡もしこの命令が実在しない場合､ Tcl_SetCommandInfo は 0.を返す｡そうでない場合､それは *infoPtr から情報を命令の為の Tcl の 内部構造に複写し 1 を返す｡ Tcl_SetCommandInfo is used to modify the procedures and clientData values associated with a command. Its cmdName argument is the name of a command in interp. cmdName may include :: namespace qualifiers to identify a command in a particular namespace. If this command does not exist then Tcl_SetCommandInfo returns 0. Otherwise, it copies the information from *infoPtr to Tcl's internal structure for the command and returns 1.

Tcl_SetCommandInfoFromToken は殆ど Tcl_SetCommandInfo と同一で､違いは､それが命令の名前の代りに Tcl_CreateObjCommand から返された命令字句結果をとることである｡もし token 媒介変数が NULL の場合､0 を返す｡そうでない場合､それは *infoPtr から情報を命令の為の Tcl の内部構造に複写し 1 を返す｡ Tcl_SetCommandInfoFromToken is identical to Tcl_SetCommandInfo except that it takes a command token as returned by Tcl_CreateObjCommand instead of the command name. If the token parameter is NULL, it returns 0. Otherwise, it copies the information from *infoPtr to Tcl's internal structure for the command and returns 1.

註意すべきは Tcl_SetCommandInfo と Tcl_SetCommandInfoFromToken の両方は命令削除手続の為の clientData がその命令手続函数のための clientData と異なることを許容する｡ 　　　 註意すべきは Tcl_SetCommandInfo も Tcl_SetCommandInfoFromToken のどちらも命令の名前空間を変更する事はない｡それを行う為の rename 命令を呼ぶ為には Tcl_Eval を使われたい｡ 　　 Note that Tcl_SetCommandInfo and Tcl_SetCommandInfoFromToken both allow the clientData for a command's deletion procedure to be given a different value than the clientData for its command procedure. Note also that neither Tcl_SetCommandInfo nor Tcl_SetCommandInfoFromToken will change a command's namespace. Use Tcl_Eval to call the rename command to do that.

Tcl_GetCommandName は改名された命令の追跡の仕組みを提供する｡ Tcl_GetCommandName は､命令が作成された時に Tcl_CreateObjCommand によって返された字句解析を与えられて､命令の文字列名前を返す｡もし命令が作成されてから改名されていた場合､ Tcl_GetCommandName は現在の名前を返す｡この名前はそのような名前修飾子 :: も含んではならない｡ token に相当する命令は削除されていてはならない｡ Tcl_GetCommandName から返えされた文字列は Tcl によって所有された動的記憶域内にあり､命令が削除もされず改名もされない間だけその値が残る事が保障されるだけである; 呼出し側は長期に亙って保持する必要がある場合は複写することになる｡ Tcl_GetCommandName provides a mechanism for tracking commands that have been renamed. Given a token returned by Tcl_CreateObjCommand when the command was created, Tcl_GetCommandName returns the string name of the command. If the command has been renamed since it was created, then Tcl_GetCommandName returns the current name. This name does not include any :: namespace qualifiers. The command corresponding to token must not have been deleted. The string returned by Tcl_GetCommandName is in dynamic memory owned by Tcl and is only guaranteed to retain its value as long as the command is not deleted or renamed; callers should copy the string if they need to keep it for a long time.

Tcl_GetCommandFullName は命令字句結果から完全に保障された名前を生成する｡その名前は全ての名前空間修飾子を含み､ objPtr により指定される対象が追記される｡ Tcl_GetCommandFullName produces the fully qualified name of a command from a command token. The name, including all namespace prefixes, is appended to the value specified by objPtr.

Tcl_GetCommandFromObj は Tcl_Obj 内の名前によって指定された命令の為の字句結果を返す｡その命令の名前は現在の名前空間に関して決定される｡命令が発見されたい場合は NULL が返る｡ Tcl_GetCommandFromObj returns a token for the command specified by the name in a Tcl_Obj. The command name is resolved relative to the current namespace. Returns NULL if the command is not found.

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

Tcl_CreateObjCommand に渡す proc が呼ばれる時､その objv 引数内の値は､Tcl 評価用棚から参照されることが保障されている､少なく共 1の､参照回数を有することになる｡これ等のどの様な値に就いても､最初に､ Tcl_IncrRefCount を呼出さない限り､ Tcl_DecrRefCount を呼ばない方が好い｡亦､ proc が呼出される時､解釈実行機能の結果は､参照回数1を伴う空文字列であることが保障されている｡ When the proc passed to Tcl_CreateObjCommand is called, the values in its objv argument will have a reference count of at least 1, with that guaranteed reference being from the Tcl evaluation stack. You should not call Tcl_DecrRefCount on any of those values unless you call Tcl_IncrRefCount on them first. Also, when the proc is called, the interpreter result is guaranteed to be an empty string value with a reference count of 1.

Tcl_GetCommandFullName はその objPtr 引数の参照回数を修正しない､但し､対象が共有されないことを要求する｡ Tcl_GetCommandFullName does not modify the reference count of its objPtr argument, but does require that the object be unshared.

Tcl_GetCommandFromObj はその objPtr 引数の参照回数を修正しない､読み出すだけである｡ Tcl_GetCommandFromObj does not modify the reference count of its objPtr argument; it only reads.

### SEE ALSO

Tcl_CreateCommand, Tcl_ResetResult, Tcl_SetObjResult

### KEYWORDS

bind, command, create, delete, namespace, value
Copyright © 1996-1997 Sun Microsystems, Inc.