summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorfvogel <fvogelnew1@free.fr>2020-09-13 20:46:12 (GMT)
committerfvogel <fvogelnew1@free.fr>2020-09-13 20:46:12 (GMT)
commitf073bc7484740398be58c99c4313c4c6202954f7 (patch)
treeb1715d32648272faa4c32f157f1815e5d8733c85 /generic
parent278837f261adb88e6a802f3ebaf63e232c12e77f (diff)
parente89503a925f86a4914df078203ed227305110bbd (diff)
downloadtcl-f073bc7484740398be58c99c4313c4c6202954f7.zip
tcl-f073bc7484740398be58c99c4313c4c6202954f7.tar.gz
tcl-f073bc7484740398be58c99c4313c4c6202954f7.tar.bz2
Merge implementation of TIP #585 (Promote the INDEX_TEMP_TABLE flag of Tcl_GetIndexFromObj*() to the public interface) after positive vote from the TCT. Fix conflict due to Tcl_GetIndexFromObj() having been replaced by a macro in [4d8ee0f939].
Diffstat (limited to 'generic')
-rw-r--r--generic/tcl.h9
-rw-r--r--generic/tclFCmd.c4
-rw-r--r--generic/tclIndexObj.c6
-rw-r--r--generic/tclInt.h9
-rw-r--r--generic/tclTestObj.c2
5 files changed, 12 insertions, 18 deletions
diff --git a/generic/tcl.h b/generic/tcl.h
index 1da4df8..c69ea9d 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -818,11 +818,14 @@ typedef struct Tcl_DString {
#define TCL_DONT_QUOTE_HASH 8
/*
- * Flag that may be passed to Tcl_GetIndexFromObj to force it to disallow
- * abbreviated strings.
+ * Flags that may be passed to Tcl_GetIndexFromObj.
+ * TCL_EXACT disallows abbreviated strings.
+ * TCL_INDEX_TEMP_TABLE disallows caching of lookups. A possible use case is
+ * a table that will not live long enough to make it worthwhile.
*/
-#define TCL_EXACT 1
+#define TCL_EXACT 1
+#define TCL_INDEX_TEMP_TABLE 2
/*
*----------------------------------------------------------------------------
diff --git a/generic/tclFCmd.c b/generic/tclFCmd.c
index 408f071..da195fc 100644
--- a/generic/tclFCmd.c
+++ b/generic/tclFCmd.c
@@ -1085,7 +1085,7 @@ TclFileAttrsCmd(
}
if (Tcl_GetIndexFromObj(interp, objv[0], attributeStrings,
- "option", INDEX_TEMP_TABLE, &index) != TCL_OK) {
+ "option", TCL_INDEX_TEMP_TABLE, &index) != TCL_OK) {
goto end;
}
if (Tcl_FSFileAttrsGet(interp, index, filePtr,
@@ -1110,7 +1110,7 @@ TclFileAttrsCmd(
for (i = 0; i < objc ; i += 2) {
if (Tcl_GetIndexFromObj(interp, objv[i], attributeStrings,
- "option", INDEX_TEMP_TABLE, &index) != TCL_OK) {
+ "option", TCL_INDEX_TEMP_TABLE, &index) != TCL_OK) {
goto end;
}
if (i + 1 == objc) {
diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c
index 1ed081b..0f6cc80 100644
--- a/generic/tclIndexObj.c
+++ b/generic/tclIndexObj.c
@@ -147,7 +147,7 @@ GetIndexFromObjList(
tablePtr[objc] = NULL;
result = Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr,
- sizeof(char *), msg, flags | INDEX_TEMP_TABLE, indexPtr);
+ sizeof(char *), msg, flags | TCL_INDEX_TEMP_TABLE, indexPtr);
Tcl_Free((void *)tablePtr);
@@ -211,7 +211,7 @@ Tcl_GetIndexFromObjStruct(
* See if there is a valid cached result from a previous lookup.
*/
- if (!(flags & INDEX_TEMP_TABLE)) {
+ if (!(flags & TCL_INDEX_TEMP_TABLE)) {
irPtr = TclFetchIntRep(objPtr, &indexType);
if (irPtr) {
indexRep = (IndexRep *)irPtr->twoPtrValue.ptr1;
@@ -275,7 +275,7 @@ Tcl_GetIndexFromObjStruct(
* operation.
*/
- if (!(flags & INDEX_TEMP_TABLE)) {
+ if (!(flags & TCL_INDEX_TEMP_TABLE)) {
irPtr = TclFetchIntRep(objPtr, &indexType);
if (irPtr) {
indexRep = (IndexRep *)irPtr->twoPtrValue.ptr1;
diff --git a/generic/tclInt.h b/generic/tclInt.h
index 1919e9a..839c4a5 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -2549,15 +2549,6 @@ typedef struct TclFileAttrProcs {
} TclFileAttrProcs;
/*
- * Private flag value which controls Tcl_GetIndexFromObj*() routines
- * to instruct them not to cache lookups because the table will not
- * live long enough to make it worthwhile. Must not clash with public
- * flag value TCL_EXACT.
- */
-
-#define INDEX_TEMP_TABLE 2
-
-/*
* Opaque handle used in pipeline routines to encapsulate platform-dependent
* state.
*/
diff --git a/generic/tclTestObj.c b/generic/tclTestObj.c
index b53cf65..39b81f8 100644
--- a/generic/tclTestObj.c
+++ b/generic/tclTestObj.c
@@ -619,7 +619,7 @@ TestindexobjCmd(
argv[objc-4] = NULL;
result = Tcl_GetIndexFromObj((setError? interp : NULL), objv[3],
- argv, "token", INDEX_TEMP_TABLE|(allowAbbrev? 0 : TCL_EXACT),
+ argv, "token", TCL_INDEX_TEMP_TABLE|(allowAbbrev? 0 : TCL_EXACT),
&index);
Tcl_Free((void *)argv);
if (result == TCL_OK) {