Tcl_GetIndexFromObj(3)Tcl

Tcl_GetIndexFromObj(3)Tcl

Tcl_GetHashValue Home Page Subroutines Index Tcl_GetInt


_________________________________________________________________

NAME
       Tcl_GetIndexFromObj - lookup string in table of keywords

SYNOPSIS
       #include <<tcl.h>>

       int
       Tcl_GetIndexFromObj(interp, objPtr, tablePtr, 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  inter-
                                           nal  representation is
                                           modified to  hold  the
                                           index  of the matching
                                           table entry.

       char         **tablePtr   (in)      An array of  null-ter-
                                           minated  strings.  The
                                           end of  the  array  is
                                           marked   by   a   NULL
                                           string pointer.

       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  addi-
                                           tional information for
                                           operation.   The  only
                                           bit  that is currently
                                           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 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  message  is  left  in interp's result if interp
       isn't NULL.  Msg is included in the error message to indi-
       cate  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.

       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.

SEE ALSO
       Tcl_WrongNumArgs

KEYWORDS
       index, object, table lookup

Tcl_GetHashValue Home Page Subroutines Index Tcl_GetInt