Attachment "patch" to
ticket [520304ffff]
added by
jenglish
2002-02-22 04:44:30.
Index: doc/GetIndex.3
===================================================================
RCS file: /cvsroot/tcl/tcl/doc/GetIndex.3,v
retrieving revision 1.9
diff -c -r1.9 GetIndex.3
*** doc/GetIndex.3 15 Feb 2002 14:28:47 -0000 1.9
--- doc/GetIndex.3 21 Feb 2002 21:30:23 -0000
***************
*** 21,27 ****
.VS
.sp
int
! \fBTcl_GetIndexFromObjStruct\fR(\fIinterp, objPtr, tablePtr, offset,
msg, flags, indexPtr\fR)
.VE
.SH ARGUMENTS
--- 21,27 ----
.VS
.sp
int
! \fBTcl_GetIndexFromObjStruct\fR(\fIinterp, objPtr, structTablePtr, offset,
msg, flags, indexPtr\fR)
.VE
.SH ARGUMENTS
***************
*** 36,45 ****
.AP "CONST char" **tablePtr in
An array of null-terminated ASCII strings. The end of the array is marked
by a NULL string pointer.
.VS
.AP int offset in
! The offset to add to tablePtr to get to the next string in the
! list. 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
--- 36,49 ----
.AP "CONST char" **tablePtr in
An array of null-terminated ASCII 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 \fBstruct\fP type.
+ The first member of the structure must be a null-terminated ASCII string.
+ The size of the structure is given by \fIoffset\fP.
.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
Index: generic/tcl.decls
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tcl.decls,v
retrieving revision 1.84
diff -c -r1.84 tcl.decls
*** generic/tcl.decls 20 Feb 2002 18:46:29 -0000 1.84
--- generic/tcl.decls 21 Feb 2002 21:30:23 -0000
***************
*** 1086,1092 ****
}
declare 304 generic {
int Tcl_GetIndexFromObjStruct(Tcl_Interp *interp, Tcl_Obj *objPtr,
! CONST84 char **tablePtr, int offset, CONST char *msg, int flags,
int *indexPtr)
}
declare 305 generic {
--- 1086,1092 ----
}
declare 304 generic {
int Tcl_GetIndexFromObjStruct(Tcl_Interp *interp, Tcl_Obj *objPtr,
! CONST VOID *tablePtr, int offset, CONST char *msg, int flags,
int *indexPtr)
}
declare 305 generic {
Index: generic/tclDecls.h
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclDecls.h,v
retrieving revision 1.84
diff -c -r1.84 tclDecls.h
*** generic/tclDecls.h 20 Feb 2002 18:46:29 -0000 1.84
--- generic/tclDecls.h 21 Feb 2002 21:30:25 -0000
***************
*** 987,993 ****
/* 304 */
EXTERN int Tcl_GetIndexFromObjStruct _ANSI_ARGS_((
Tcl_Interp * interp, Tcl_Obj * objPtr,
! CONST84 char ** tablePtr, int offset,
CONST char * msg, int flags, int * indexPtr));
/* 305 */
EXTERN VOID * Tcl_GetThreadData _ANSI_ARGS_((
--- 987,993 ----
/* 304 */
EXTERN int Tcl_GetIndexFromObjStruct _ANSI_ARGS_((
Tcl_Interp * interp, Tcl_Obj * objPtr,
! CONST VOID * tablePtr, int offset,
CONST char * msg, int flags, int * indexPtr));
/* 305 */
EXTERN VOID * Tcl_GetThreadData _ANSI_ARGS_((
***************
*** 1916,1922 ****
Tcl_Encoding (*tcl_GetEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 301 */
CONST char * (*tcl_GetEncodingName) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 302 */
void (*tcl_GetEncodingNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 303 */
! int (*tcl_GetIndexFromObjStruct) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST84 char ** tablePtr, int offset, CONST char * msg, int flags, int * indexPtr)); /* 304 */
VOID * (*tcl_GetThreadData) _ANSI_ARGS_((Tcl_ThreadDataKey * keyPtr, int size)); /* 305 */
Tcl_Obj * (*tcl_GetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, char * part1, char * part2, int flags)); /* 306 */
ClientData (*tcl_InitNotifier) _ANSI_ARGS_((void)); /* 307 */
--- 1916,1922 ----
Tcl_Encoding (*tcl_GetEncoding) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * name)); /* 301 */
CONST char * (*tcl_GetEncodingName) _ANSI_ARGS_((Tcl_Encoding encoding)); /* 302 */
void (*tcl_GetEncodingNames) _ANSI_ARGS_((Tcl_Interp * interp)); /* 303 */
! int (*tcl_GetIndexFromObjStruct) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * objPtr, CONST VOID * tablePtr, int offset, CONST char * msg, int flags, int * indexPtr)); /* 304 */
VOID * (*tcl_GetThreadData) _ANSI_ARGS_((Tcl_ThreadDataKey * keyPtr, int size)); /* 305 */
Tcl_Obj * (*tcl_GetVar2Ex) _ANSI_ARGS_((Tcl_Interp * interp, char * part1, char * part2, int flags)); /* 306 */
ClientData (*tcl_InitNotifier) _ANSI_ARGS_((void)); /* 307 */
Index: generic/tclIndexObj.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclIndexObj.c,v
retrieving revision 1.15
diff -c -r1.15 tclIndexObj.c
*** generic/tclIndexObj.c 16 Feb 2002 00:37:54 -0000 1.15
--- generic/tclIndexObj.c 21 Feb 2002 21:30:25 -0000
***************
*** 161,167 ****
indexPtr)
Tcl_Interp *interp; /* Used for error reporting if not NULL. */
Tcl_Obj *objPtr; /* Object containing the string to lookup. */
! CONST char **tablePtr; /* The first string in the table. The second
* string will be at this address plus the
* offset, the third plus the offset again,
* etc. The last entry must be NULL
--- 161,167 ----
indexPtr)
Tcl_Interp *interp; /* Used for error reporting if not NULL. */
Tcl_Obj *objPtr; /* Object containing the string to lookup. */
! CONST VOID *tablePtr; /* The first string in the table. The second
* string will be at this address plus the
* offset, the third plus the offset again,
* etc. The last entry must be NULL
***************
*** 274,280 ****
resultPtr = Tcl_GetObjResult(interp);
Tcl_AppendStringsToObj(resultPtr,
(numAbbrev > 1) ? "ambiguous " : "bad ", msg, " \"",
! key, "\": must be ", *tablePtr, (char *) NULL);
for (entryPtr = NEXT_ENTRY(tablePtr, offset), count = 0;
*entryPtr != NULL;
entryPtr = NEXT_ENTRY(entryPtr, offset), count++) {
--- 274,280 ----
resultPtr = Tcl_GetObjResult(interp);
Tcl_AppendStringsToObj(resultPtr,
(numAbbrev > 1) ? "ambiguous " : "bad ", msg, " \"",
! key, "\": must be ", STRING_AT(tablePtr,offset,0), (char*)NULL);
for (entryPtr = NEXT_ENTRY(tablePtr, offset), count = 0;
*entryPtr != NULL;
entryPtr = NEXT_ENTRY(entryPtr, offset), count++) {