Tcl_GetIndexFromObj(3tcl)
______________________________________________________________________________
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) Interpreter to use for error
reporting; if NULL, then no message
is provided on errors.
Tcl_Obj *objPtr (in/out) The string value of this object is
used to search through tablePtr.
The internal representation is mod-
ified to hold the index of the
matching table entry.
CONST char **tablePtr (in) An array of null-terminated
strings. The end of the array is
marked by a NULL string pointer.
CONST VOID *structTablePtr(in) An array of arbitrary type, typi-
cally some struct type. The first
member of the structure must be a
null-terminated string. The size
of the structure is given by off-
set. |
int off- |
set (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.
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) OR-ed combination of bits providing
additional information for opera-
tion. The only bit that is cur-
rently defined is TCL_EXACT.
int *indexPtr (out) The index of the string in tablePtr
that matches the value of objPtr is
returned here.
_________________________________________________________________
DESCRIPTION
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. ObjPtr is compared
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.
If there is no matching entry, TCL_ERROR is returned and an error mes-
sage is left in interp's result if interp isn't NULL. Msg is included
in the error message to indicate what was being looked up. For exam-
ple, if msg is option the error message will have a form like bad
option "firt": must be first, second, or third.
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 invo-
cations. If the value of objPtr is the empty string, Tcl_GetIndexFro-
mObj will treat it as a non-matching value and return TCL_ERROR. |
Tcl_GetIndexFromObjStruct works just like Tcl_GetIndexFromObj, except |
that instead of treating tablePtr as an array of string pointers, it |
treats it as the first in a series of string ptrs that are spaced apart |
by offset bytes. 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
Tcl_WrongNumArgs
KEYWORDS
index, object, table lookup
Tcl 8.1 Tcl_GetIndexFromObj(3)
Man(1) output converted with
man2html