diff options
author | mig <mig> | 2013-01-06 06:51:27 (GMT) |
---|---|---|
committer | mig <mig> | 2013-01-06 06:51:27 (GMT) |
commit | c0b648f8b57d623ee6a55521b905d8c0cfa12298 (patch) | |
tree | f5223d3c4c0817548457aaf174fbbef6395b6898 /generic/tclEnsemble.c | |
parent | 602e3345b61073c4af44b78f7bf49f46fccece74 (diff) | |
download | tcl-c0b648f8b57d623ee6a55521b905d8c0cfa12298.zip tcl-c0b648f8b57d623ee6a55521b905d8c0cfa12298.tar.gz tcl-c0b648f8b57d623ee6a55521b905d8c0cfa12298.tar.bz2 |
... ensembles like it
Diffstat (limited to 'generic/tclEnsemble.c')
-rw-r--r-- | generic/tclEnsemble.c | 35 |
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 |