GetIndex.3
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
- '"
- '" Copyright (c) 1997 Sun Microsystems, Inc.
- '"
- '" See the file "license.terms" for information on usage and redistribution
- '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- '"
- '" RCS: @(#) $Id: GetIndex.3,v 1.10.2.2 2006/04/06 18:57:24 dgp Exp $
- '"
- .so man.macros
- .TH Tcl_GetIndexFromObj 3 8.1 Tcl "Tcl Library Procedures"
- .BS
- .SH NAME
- Tcl_GetIndexFromObj, Tcl_GetIndexFromObjStruct - lookup string in table of keywords
- .SH SYNOPSIS
- .nf
- fB#include <tcl.h>fR
- .sp
- int
- fBTcl_GetIndexFromObjfR(fIinterp, objPtr, tablePtr, msg, flags,
- indexPtrfR)
- .VS
- .sp
- int
- fBTcl_GetIndexFromObjStructfR(fIinterp, objPtr, structTablePtr, offset,
- msg, flags, indexPtrfR)
- .VE
- .SH ARGUMENTS
- .AS "CONST char" **tablePtr
- .AP Tcl_Interp *interp in
- Interpreter to use for error reporting; if NULL, then no message is
- provided on errors.
- .AP Tcl_Obj *objPtr in/out
- The string value of this object is used to search through fItablePtrfR.
- The internal representation is modified to hold the index of the matching
- table entry.
- .AP "CONST char" **tablePtr in
- An array of null-terminated strings. The end of the array is marked
- by a NULL string pointer.
- .AP "CONST VOID" *structTablePtr in
- An array of arbitrary type, typically some fBstructfP type.
- The first member of the structure must be a null-terminated string.
- The size of the structure is given by fIoffsetfP.
- .VS
- .AP int offset in
- The offset to add to structTablePtr to get to the next entry.
- The end of the array is marked by a NULL string pointer.
- .VE
- .AP "CONST char" *msg in
- Null-terminated string describing what is being looked up, such as
- fBoptionfR. This string is included in error messages.
- .AP int flags in
- OR-ed combination of bits providing additional information for
- operation. The only bit that is currently defined is fBTCL_EXACTfR.
- .AP int *indexPtr out
- The index of the string in fItablePtrfR that matches the value of
- fIobjPtrfR is returned here.
- .BE
- .SH DESCRIPTION
- .PP
- This procedure provides an efficient way for looking up keywords,
- switch names, option names, and similar things where the value of
- an object must be one of a predefined set of values.
- fIObjPtrfR is compared against each of
- the strings in fItablePtrfR to find a match. A match occurs if
- fIobjPtrfR's string value is identical to one of the strings in
- fItablePtrfR, or if it is a non-empty unique abbreviation
- for exactly one of the strings in fItablePtrfR and the
- fBTCL_EXACTfR flag was not specified; in either case
- the index of the matching entry is stored at fI*indexPtrfR
- and TCL_OK is returned.
- .PP
- If there is no matching entry,
- TCL_ERROR is returned and an error message is left in fIinterpfR's
- result if fIinterpfR isn't NULL. fIMsgfR is included in the
- error message to indicate what was being looked up. For example,
- if fImsgfR is fBoptionfR the error message will have a form like
- fBbad option "firt": must be first, second, or thirdfR.
- .PP
- If fBTcl_GetIndexFromObjfR completes successfully it modifies the
- internal representation of fIobjPtrfR to hold the address of
- the table and the index of the matching entry. If fBTcl_GetIndexFromObjfR
- is invoked again with the same fIobjPtrfR and fItablePtrfR
- arguments (e.g. during a reinvocation of a Tcl command), it returns
- the matching index immediately without having to redo the lookup
- operation. Note: fBTcl_GetIndexFromObjfR assumes that the entries
- in fItablePtrfR are static: they must not change between
- invocations. If the value of fIobjPtrfR is the empty string,
- fBTcl_GetIndexFromObjfR will treat it as a non-matching value
- and return TCL_ERROR.
- .VS
- .PP
- fBTcl_GetIndexFromObjStructfR works just like
- fBTcl_GetIndexFromObjfR, except that instead of treating
- fItablePtrfR as an array of string pointers, it treats it as the
- first in a series of string ptrs that are spaced apart by fIoffsetfR
- bytes. This is particularly useful when processing things like
- fBTk_ConfigurationSpecfR, whose string keys are in the same place in
- each of several array elements.
- .VE
- .SH "SEE ALSO"
- Tcl_WrongNumArgs
- .SH KEYWORDS
- index, object, table lookup