GetIndex.3
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1997 Sun Microsystems, Inc.
  3. '"
  4. '" See the file "license.terms" for information on usage and redistribution
  5. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  6. '" 
  7. '" RCS: @(#) $Id: GetIndex.3,v 1.10.2.2 2006/04/06 18:57:24 dgp Exp $
  8. '" 
  9. .so man.macros
  10. .TH Tcl_GetIndexFromObj 3 8.1 Tcl "Tcl Library Procedures"
  11. .BS
  12. .SH NAME
  13. Tcl_GetIndexFromObj, Tcl_GetIndexFromObjStruct - lookup string in table of keywords
  14. .SH SYNOPSIS
  15. .nf
  16. fB#include <tcl.h>fR
  17. .sp
  18. int
  19. fBTcl_GetIndexFromObjfR(fIinterp, objPtr, tablePtr, msg, flags,
  20. indexPtrfR)
  21. .VS
  22. .sp
  23. int
  24. fBTcl_GetIndexFromObjStructfR(fIinterp, objPtr, structTablePtr, offset,
  25. msg, flags, indexPtrfR)
  26. .VE
  27. .SH ARGUMENTS
  28. .AS "CONST char" **tablePtr
  29. .AP Tcl_Interp *interp in
  30. Interpreter to use for error reporting; if NULL, then no message is
  31. provided on errors.
  32. .AP Tcl_Obj *objPtr in/out
  33. The string value of this object is used to search through fItablePtrfR.
  34. The internal representation is modified to hold the index of the matching
  35. table entry.
  36. .AP "CONST char" **tablePtr in
  37. An array of null-terminated strings.  The end of the array is marked
  38. by a NULL string pointer.
  39. .AP "CONST VOID" *structTablePtr in
  40. An array of arbitrary type, typically some fBstructfP type.
  41. The first member of the structure must be a null-terminated string.
  42. The size of the structure is given by fIoffsetfP.
  43. .VS
  44. .AP int offset in
  45. The offset to add to structTablePtr to get to the next entry.
  46. The end of the array is marked by a NULL string pointer.
  47. .VE
  48. .AP "CONST char" *msg in
  49. Null-terminated string describing what is being looked up, such as
  50. fBoptionfR.  This string is included in error messages.
  51. .AP int flags in
  52. OR-ed combination of bits providing additional information for
  53. operation.  The only bit that is currently defined is fBTCL_EXACTfR.
  54. .AP int *indexPtr out
  55. The index of the string in fItablePtrfR that matches the value of
  56. fIobjPtrfR is returned here.
  57. .BE
  58. .SH DESCRIPTION
  59. .PP
  60. This procedure provides an efficient way for looking up keywords,
  61. switch names, option names, and similar things where the value of
  62. an object must be one of a predefined set of values.
  63. fIObjPtrfR is compared against each of
  64. the strings in fItablePtrfR to find a match.  A match occurs if
  65. fIobjPtrfR's string value is identical to one of the strings in
  66. fItablePtrfR, or if it is a non-empty unique abbreviation
  67. for exactly one of the strings in fItablePtrfR and the
  68. fBTCL_EXACTfR flag was not specified; in either case
  69. the index of the matching entry is stored at fI*indexPtrfR
  70. and TCL_OK is returned.
  71. .PP
  72. If there is no matching entry,
  73. TCL_ERROR is returned and an error message is left in fIinterpfR's
  74. result if fIinterpfR isn't NULL.  fIMsgfR is included in the
  75. error message to indicate what was being looked up.  For example,
  76. if fImsgfR is fBoptionfR the error message will have a form like
  77. fBbad option "firt": must be first, second, or thirdfR.
  78. .PP
  79. If fBTcl_GetIndexFromObjfR completes successfully it modifies the
  80. internal representation of fIobjPtrfR to hold the address of
  81. the table and the index of the matching entry.  If fBTcl_GetIndexFromObjfR
  82. is invoked again with the same fIobjPtrfR and fItablePtrfR
  83. arguments (e.g. during a reinvocation of a Tcl command), it returns
  84. the matching index immediately without having to redo the lookup
  85. operation.  Note: fBTcl_GetIndexFromObjfR assumes that the entries
  86. in fItablePtrfR are static: they must not change between
  87. invocations.  If the value of fIobjPtrfR is the empty string,
  88. fBTcl_GetIndexFromObjfR will treat it as a non-matching value
  89. and return TCL_ERROR.
  90. .VS
  91. .PP
  92. fBTcl_GetIndexFromObjStructfR works just like
  93. fBTcl_GetIndexFromObjfR, except that instead of treating
  94. fItablePtrfR as an array of string pointers, it treats it as the
  95. first in a series of string ptrs that are spaced apart by fIoffsetfR
  96. bytes. This is particularly useful when processing things like
  97. fBTk_ConfigurationSpecfR, whose string keys are in the same place in
  98. each of several array elements.
  99. .VE
  100. .SH "SEE ALSO"
  101. Tcl_WrongNumArgs
  102. .SH KEYWORDS
  103. index, object, table lookup