summaryrefslogtreecommitdiffstats
path: root/generic/tclEnsemble.c
diff options
context:
space:
mode:
authormig <mig>2013-01-06 06:51:27 (GMT)
committermig <mig>2013-01-06 06:51:27 (GMT)
commitc0b648f8b57d623ee6a55521b905d8c0cfa12298 (patch)
treef5223d3c4c0817548457aaf174fbbef6395b6898 /generic/tclEnsemble.c
parent602e3345b61073c4af44b78f7bf49f46fccece74 (diff)
downloadtcl-c0b648f8b57d623ee6a55521b905d8c0cfa12298.zip
tcl-c0b648f8b57d623ee6a55521b905d8c0cfa12298.tar.gz
tcl-c0b648f8b57d623ee6a55521b905d8c0cfa12298.tar.bz2
... ensembles like it
Diffstat (limited to 'generic/tclEnsemble.c')
-rw-r--r--generic/tclEnsemble.c35
1 files changed, 13 insertions, 22 deletions
diff --git a/generic/tclEnsemble.c b/generic/tclEnsemble.c
index 7e77ec8..737aacd 100644
--- a/generic/tclEnsemble.c
+++ b/generic/tclEnsemble.c
@@ -23,8 +23,6 @@ static inline int EnsembleUnknownCallback(Tcl_Interp *interp,
Tcl_Obj *const objv[], Tcl_Obj **prefixObjPtr);
static int NsEnsembleImplementationCmd(ClientData clientData,
Tcl_Interp *interp,int objc,Tcl_Obj *const objv[]);
-static int NsEnsembleImplementationCmdNR(ClientData clientData,
- Tcl_Interp *interp,int objc,Tcl_Obj *const objv[]);
static void BuildEnsembleConfig(EnsembleConfig *ensemblePtr);
static int NsEnsembleStringOrder(const void *strPtr1,
const void *strPtr2);
@@ -678,9 +676,8 @@ Tcl_CreateEnsemble(
ensemblePtr->numParameters = 0;
ensemblePtr->parameterList = NULL;
ensemblePtr->unknownHandler = NULL;
- ensemblePtr->token = Tcl_NRCreateCommand(interp, name,
- NsEnsembleImplementationCmd, NsEnsembleImplementationCmdNR,
- ensemblePtr, DeleteEnsembleConfig);
+ ensemblePtr->token = Tcl_CreateObjCommand(interp, name,
+ NsEnsembleImplementationCmd, ensemblePtr, DeleteEnsembleConfig);
ensemblePtr->next = (EnsembleConfig *) nsPtr->ensembles;
nsPtr->ensembles = (Tcl_Ensemble *) ensemblePtr;
@@ -1538,7 +1535,8 @@ TclMakeEnsemble(
if (ensemble != NULL) {
Tcl_Obj *mapDict, *fromObj, *toObj;
Command *cmdPtr;
-
+ Tcl_ObjCmdProc *objProc;
+
TclDStringAppendLiteral(&buf, "::");
TclNewObj(mapDict);
for (i=0 ; map[i].name != NULL ; i++) {
@@ -1557,10 +1555,15 @@ TclMakeEnsemble(
* Tcl_IsSafe check fails.
*/
+ objProc = map[i].nreProc;
+ if (objProc == NULL) {
+ objProc = map[i].proc;
+ }
+
if (map[i].unsafe && Tcl_IsSafe(interp)) {
cmdPtr = (Command *)
- Tcl_NRCreateCommand(interp, "___tmp", map[i].proc,
- map[i].nreProc, map[i].clientData, NULL);
+ Tcl_CreateObjCommand(interp, "___tmp", objProc,
+ map[i].clientData, NULL);
Tcl_DStringSetLength(&hiddenBuf, hiddenLen);
if (Tcl_HideCommand(interp, "___tmp",
Tcl_DStringAppend(&hiddenBuf, map[i].name, -1))) {
@@ -1572,9 +1575,8 @@ TclMakeEnsemble(
*/
cmdPtr = (Command *)
- Tcl_NRCreateCommand(interp, TclGetString(toObj),
- map[i].proc, map[i].nreProc, map[i].clientData,
- NULL);
+ Tcl_CreateObjCommand(interp, TclGetString(toObj),
+ objProc, map[i].clientData, NULL);
}
cmdPtr->compileProc = map[i].compileProc;
}
@@ -1627,17 +1629,6 @@ NsEnsembleImplementationCmd(
int objc,
Tcl_Obj *const objv[])
{
- return Tcl_NRCallObjProc(interp, NsEnsembleImplementationCmdNR,
- clientData, objc, objv);
-}
-
-static int
-NsEnsembleImplementationCmdNR(
- ClientData clientData,
- Tcl_Interp *interp,
- int objc,
- Tcl_Obj *const objv[])
-{
EnsembleConfig *ensemblePtr = clientData;
/* The ensemble itself. */
Tcl_Obj *prefixObj; /* An object containing the prefix words of