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

### 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_GetIndexFromObj, Tcl_GetIndexFromObjStruct — 検索語彙の表内の文字列を捜す　 lookup string in table of keywords
  SYNOPSIS
    #include <tcl.h>
    int
    Tcl_GetIndexFromObj(interp, objPtr, tablePtr, msg, flags,
    indexPtr)
    int
    Tcl_GetIndexFromObjStruct(interp, objPtr, structTablePtr, offset,
    msg, flags, indexPtr)
  引数 ARGUMENTS
    Tcl_Interp *interp (入力in)
    Tcl_Obj *objPtr (入出力in/out)
    const char *const *tablePtr (入力in)
    const void *structTablePtr (入力in)
    int offset (入力in)
    const char *msg (入力in)
    int flags (入力in)
    int *indexPtr (出力out)
  説明 DESCRIPTION
  SEE ALSO
  KEYWORDS

### NAME

Tcl_GetIndexFromObj, Tcl_GetIndexFromObjStruct — 検索語彙の表内の文字列を捜す　 lookup string in table of keywords

### SYNOPSIS

#include <tcl.h>
int
Tcl_GetIndexFromObj(interp, objPtr, tablePtr, msg, flags,
indexPtr)
int
Tcl_GetIndexFromObjStruct(interp, objPtr, structTablePtr, offset,
`` msg, flags, indexPtr)

### 引数 ARGUMENTS

Tcl_Interp *interp (入力in)
  不都合を報告する為に使用する解釈実行機能; もし NULL なら不都合の時に伝言文は提供されない｡　 Interpreter to use for error reporting; if NULL, then no message is provided on errors.

Tcl_Obj *objPtr (入出力in/out)
  この値の文字列値は tablePtr を捜索する為に使用される｡内部表現は､合致した表項目の索引を保有する為に修正される｡ 　 The string value of this value is used to search through tablePtr. The internal representation is modified to hold the index of the matching table entry.

const char *const *tablePtr (入力in)
  零終端文字列の配列｡この配列の末尾は NULL 文字列指示子により印付けられる｡註意すべきは､tablePtr への参照は objPtr の内部表現で保持されるかもしれない､それで､これは静的に-割当てられた配列の番地を表現することになる｡ 　　　 An array of null-terminated strings. The end of the array is marked by a NULL string pointer. Note that references to the tablePtr may be retained in the internal representation of objPtr, so this should represent the address of a statically-allocated array.

const void *structTablePtr (入力in)
  任意の型の配列､典型的には何かの構造型｡構造の最初の要員は零終端文字列でなければならない｡構造の寸法は偏移によって与えられた｡註意すべきは､structTablePtr への参照は objPtr の内部表現内に保持されるかもしれない､そこで､これは構造の静的-割当てられた配列の番地を参照する｡ 　 An array of arbitrary type, typically some struct type. The first member of the structure must be a null-terminated string. The size of the structure is given by offset. Note that references to the structTablePtr may be retained in the internal representation of objPtr, so this should represent the address of a statically-allocated array of structures.

int offset (入力in)
  次の項目を得る為の structTablePtr に加える偏移｡配列の末尾は NULL 文字列指示子によって印付けられる｡　 The offset to add to structTablePtr to get to the next entry. The end of the array is marked by a NULL string pointer.

const char *msg (入力in)
  捜索されていることを記述する零終端文字列､譬えば指定項目の如く｡この文字列は不都合伝言文内に含まれる｡　 Null-terminated string describing what is being looked up, such as option. This string is included in error messages.

int flags (入力in)
  指定項目の為の追加情報を提供する論理和の組合わせ｡現在定義されているビットは TCL_EXACT のみである｡ 　 OR-ed combination of bits providing additional information for operation. The only bit that is currently defined is TCL_EXACT.

int *indexPtr (出力out)
  objPtr の値に合致する tablePtr 内の文字列の索引はここに返される｡ The index of the string in tablePtr that matches the value of objPtr is returned here.

### 説明 DESCRIPTION

これらの手続函数は､鍵語､切替え名称､選択肢名､同様な Tcl 値の文字値が予備定義された組から選択されなければならない事柄､を捜索する効率的方法を提供する｡ Tcl_GetIndexFromObj は objPtr をそれぞれ tablePtr 内の合致を捜すべき文字列に対して比較する｡ objPtr の文字列値が tablePtr の内の一つと同一であるか､ tablePtr 内の厳密に一つを特定できる短縮形であり､且つ TCL_EXACT 旗印が設定されていないかの場合が合致である; どの場合も合致した見出しの索引が *indexPtr の箇所に保存され TCL_OK が返される｡ 　　　 These procedures provide an efficient way for looking up keywords, switch names, option names, and similar things where the literal value of a Tcl value must be chosen from a predefined set. Tcl_GetIndexFromObj compares objPtr against each of the strings in tablePtr to find a match. A match occurs if objPtr's string value is identical to one of the strings in tablePtr, or if it is a non-empty unique abbreviation for exactly one of the strings in tablePtr and the TCL_EXACT flag was not specified; in either case the index of the matching entry is stored at *indexPtr and TCL_OK is returned.

もし合致する見出しが存在しない場合､ TCL_ERROR が返され､ interp が NULL でない場合､不都合伝言文が interp の結果に保存される｡何が調査されたかを指し示す為に msg は不都合伝言文の中に含まれる｡譬えば､もし msg が option であると､伝言文はこの様な形式になる “不適切な指示項目 "firt": は first か second か thirdの筈” ｡ If there is no matching entry, TCL_ERROR is returned and an error message is left in interp's result if interp is not NULL. Msg is included in the error message to indicate what was being looked up. For example, if msg is option the error message will have a form like “bad option "firt": must be first, second, or third”.

Tcl_GetIndexFromObj は成功裡に完了すると､表の番地と見出しに合致する索引とを保有する為に objPtr の内部表現を修正する｡もし同じ objPtr と tablePtr 引数を伴って再度 Tcl_GetIndexFromObjが起動されると(譬えば､ Tcl 命令の再起動の間に)､捜索操作の再実行をさせることなく合致する索引をすぐさま返す｡註意: Tcl_GetIndexFromObj は tablePtr 内の見出しは静的であると仮定している: それらは起動中は変化するはずはない｡もし objPtr の値が空文字列の場合､ Tcl_GetIndexFromObj はそれを非合致値として扱い､ TCL_ERROR を返す｡ If Tcl_GetIndexFromObj completes successfully it modifies the internal representation of objPtr to hold the address of the table and the index of the matching entry. If Tcl_GetIndexFromObj is invoked again with the same objPtr and tablePtr arguments (e.g. during a reinvocation of a Tcl command), it returns the matching index immediately without having to redo the lookup operation. Note: Tcl_GetIndexFromObj assumes that the entries in tablePtr are static: they must not change between invocations. If the value of objPtr is the empty string, Tcl_GetIndexFromObj will treat it as a non-matching value and return TCL_ERROR.

Tcl_GetIndexFromObjStruct は丁度 Tcl_GetIndexFromObj の様に働く､違いは､ tablePtr を文字列ポインターの配列として扱うのではなく､その間に offset バイトを有する継続した文字列内の最初の文字列へのポインターとして取扱うことである(即ち､ tablePtr の位置にある第１の文字配列を指すポインターがあり､ tablePtr+offset バイトの位置にある第二の文字配列を指すポインターがあり､等)｡これはその文字列鍵が幾つかの配列要素のそれぞれの同じ位置にある Tk_ConfigurationSpec の様なものの処理には特に便利である｡ Tcl_GetIndexFromObjStruct works just like Tcl_GetIndexFromObj, except that instead of treating tablePtr as an array of string pointers, it treats it as a pointer to the first string in a series of strings that have offset bytes between them (i.e. that there is a pointer to the first array of characters at tablePtr, a pointer to the second array of characters at tablePtr+offset bytes, etc.) This is particularly useful when processing things like Tk_ConfigurationSpec, whose string keys are in the same place in each of several array elements.

### SEE ALSO

prefix, Tcl_WrongNumArgs

### KEYWORDS

index, option, value, table lookup
Copyright © 1997 Sun Microsystems, Inc.