summaryrefslogtreecommitdiffstats
path: root/generic/tclEnsemble.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2016-05-24 19:28:50 (GMT)
committerdgp <dgp@users.sourceforge.net>2016-05-24 19:28:50 (GMT)
commit6f3bd38c61b5deddb1bcd376c798ca8aa12351a7 (patch)
tree38747b6eae9f73159f5fa06f28901d586c45505f /generic/tclEnsemble.c
parentca66ff4b66c7c2c37cf104ead999ae2fc8c85747 (diff)
downloadtcl-6f3bd38c61b5deddb1bcd376c798ca8aa12351a7.zip
tcl-6f3bd38c61b5deddb1bcd376c798ca8aa12351a7.tar.gz
tcl-6f3bd38c61b5deddb1bcd376c798ca8aa12351a7.tar.bz2
Appears that the TclInitRewriteEnsemble() routine was created with an intent
to refactor, but never actually got used. Work on continuing that effort.
Diffstat (limited to 'generic/tclEnsemble.c')
-rw-r--r--generic/tclEnsemble.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/generic/tclEnsemble.c b/generic/tclEnsemble.c
index 986a553..f108030 100644
--- a/generic/tclEnsemble.c
+++ b/generic/tclEnsemble.c
@@ -1876,6 +1876,15 @@ NsEnsembleImplementationCmdNR(
* count both as inserted and removed arguments.
*/
+#if 1
+ if (TclInitRewriteEnsemble(interp, 2 + ensemblePtr->numParameters,
+ prefixObjc + ensemblePtr->numParameters, objv)) {
+ TclNRAddCallback(interp, TclClearRootEnsemble, NULL, NULL, NULL,
+ NULL);
+ }
+
+#else
+
if (iPtr->ensembleRewrite.sourceObjs == NULL) {
iPtr->ensembleRewrite.sourceObjs = objv;
iPtr->ensembleRewrite.numRemovedObjs =
@@ -1890,6 +1899,7 @@ NsEnsembleImplementationCmdNR(
/* Position in objv of new front of insertion
* relative to old one. */
if (ni > 0) {
+//fprintf(stdout, "COVER\n"); fflush(stdout);
iPtr->ensembleRewrite.numRemovedObjs += ni;
iPtr->ensembleRewrite.numInsertedObjs += prefixObjc-1;
} else {
@@ -1897,6 +1907,8 @@ NsEnsembleImplementationCmdNR(
}
}
+#endif
+
/*
* Hand off to the target command.
*/
@@ -2005,15 +2017,20 @@ TclInitRewriteEnsemble(
int isRootEnsemble = (iPtr->ensembleRewrite.sourceObjs == NULL);
if (isRootEnsemble) {
+//fprintf(stdout, "SET-SOURCE: '%s'\n", Tcl_GetString(objv[0])); fflush(stdout);
iPtr->ensembleRewrite.sourceObjs = objv;
iPtr->ensembleRewrite.numRemovedObjs = numRemoved;
iPtr->ensembleRewrite.numInsertedObjs = numInserted;
} else {
int numIns = iPtr->ensembleRewrite.numInsertedObjs;
+//fprintf(stdout, "Pre-SOURCE: '%s'\n",
+//Tcl_GetString(iPtr->ensembleRewrite.sourceObjs[0])); fflush(stdout);
+
if (numIns < numRemoved) {
+//fprintf(stdout, "COVER2\n"); fflush(stdout);
iPtr->ensembleRewrite.numRemovedObjs += numRemoved - numIns;
- iPtr->ensembleRewrite.numInsertedObjs += numInserted - 1;
+ iPtr->ensembleRewrite.numInsertedObjs = numInserted;
} else {
iPtr->ensembleRewrite.numInsertedObjs += numInserted - numRemoved;
}