Index: generic/gentclAPI.decls =================================================================== diff -u -r07939dc97b98b4a40c047be6923c36380c7c6b5d -r8e5a1351ecc12dfca1e3988240a07fa745439d42 --- generic/gentclAPI.decls (.../gentclAPI.decls) (revision 07939dc97b98b4a40c047be6923c36380c7c6b5d) +++ generic/gentclAPI.decls (.../gentclAPI.decls) (revision 8e5a1351ecc12dfca1e3988240a07fa745439d42) @@ -32,6 +32,10 @@ {-argName "rootClass" -required 1} {-argName "rootMetaClass" -required 1} } +xotclCmd deprecated XOTclDeprecatedCmd { + {-argName "oldCmd" -required 1} + {-argName "newCmd" -required 0} +} xotclCmd finalize XOTclFinalizeObjCmd { } xotclCmd instvar XOTclInstvarCmd { Index: generic/gentclAPI.tcl =================================================================== diff -u -r07939dc97b98b4a40c047be6923c36380c7c6b5d -r8e5a1351ecc12dfca1e3988240a07fa745439d42 --- generic/gentclAPI.tcl (.../gentclAPI.tcl) (revision 07939dc97b98b4a40c047be6923c36380c7c6b5d) +++ generic/gentclAPI.tcl (.../gentclAPI.tcl) (revision 8e5a1351ecc12dfca1e3988240a07fa745439d42) @@ -217,8 +217,8 @@ array set d $::definitions($key) lappend enums $d(idx) set nrArgs [llength $d(argDefinitions)] - append stubDecls "static int $d(stub)$::objCmdProc\n" - lappend ifds "{\"$::ns($d(methodType))::$d(methodName)\", $d(stub), $nrArgs, {\n [genifd $d(argDefinitions)]}\n}" + set stubDecl "static int $d(stub)$::objCmdProc\n" + set ifd "{\"$::ns($d(methodType))::$d(methodName)\", $d(stub), $nrArgs, {\n [genifd $d(argDefinitions)]}\n}" gencall $d(stub) $d(argDefinitions) $d(clientData) cDefs ifDef arglist pre post intro append decls "static int [implArgList $d(implementation) {Tcl_Interp *} $ifDef];\n" @@ -230,9 +230,12 @@ } else { set call "return [implArgList $d(implementation) {} $arglist];" } + #if {$nrArgs == 1} { puts stderr "$d(stub) => '$arglist'" } if {$nrArgs == 1 && $arglist eq "objc, objv"} { # TODO we would not need to generate a stub at all.... + #set ifd "{\"$::ns($d(methodType))::$d(methodName)\", $d(implementation), $nrArgs, {\n [genifd $d(argDefinitions)]}\n}" + #set stubDecl "static int $d(implementation)$::objCmdProc\n" append fns [genSimpleStub $d(stub) $intro $d(idx) $cDefs $pre $call $post] } elseif {$nrArgs == 1 && $arglist eq "obj, objc, objv"} { # no need to call objv parser @@ -241,6 +244,8 @@ } else { append fns [genStub $d(stub) $intro $d(idx) $cDefs $pre $call $post] } + lappend ifds $ifd + append stubDecls $stubDecl } puts $::converter Index: generic/tclAPI.h =================================================================== diff -u -r07939dc97b98b4a40c047be6923c36380c7c6b5d -r8e5a1351ecc12dfca1e3988240a07fa745439d42 --- generic/tclAPI.h (.../tclAPI.h) (revision 07939dc97b98b4a40c047be6923c36380c7c6b5d) +++ generic/tclAPI.h (.../tclAPI.h) (revision 8e5a1351ecc12dfca1e3988240a07fa745439d42) @@ -136,6 +136,7 @@ static int XOTclAliasCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclConfigureCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclCreateObjectSystemCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclDeprecatedCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclFinalizeObjCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclInstvarCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclMethodPropertyCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); @@ -237,6 +238,7 @@ static int XOTclAliasCmd(Tcl_Interp *interp, XOTclObject *object, char *methodName, int withObjscope, int withPer_object, int withProtected, Tcl_Obj *cmdName); static int XOTclConfigureCmd(Tcl_Interp *interp, int configureoption, Tcl_Obj *value); static int XOTclCreateObjectSystemCmd(Tcl_Interp *interp, char *rootClass, char *rootMetaClass); +static int XOTclDeprecatedCmd(Tcl_Interp *interp, char *oldCmd, char *newCmd); static int XOTclFinalizeObjCmd(Tcl_Interp *interp); static int XOTclInstvarCmd(Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]); static int XOTclMethodPropertyCmd(Tcl_Interp *interp, XOTclObject *object, char *methodName, int withPer_object, int methodproperty, Tcl_Obj *value); @@ -339,6 +341,7 @@ XOTclAliasCmdIdx, XOTclConfigureCmdIdx, XOTclCreateObjectSystemCmdIdx, + XOTclDeprecatedCmdIdx, XOTclFinalizeObjCmdIdx, XOTclInstvarCmdIdx, XOTclMethodPropertyCmdIdx, @@ -2217,6 +2220,25 @@ } static int +XOTclDeprecatedCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + + if (parseObjv(interp, objc, objv, objv[0], + method_definitions[XOTclDeprecatedCmdIdx].ifd, + method_definitions[XOTclDeprecatedCmdIdx].ifdSize, + &pc) != TCL_OK) { + return TCL_ERROR; + } else { + char *oldCmd = (char *)pc.clientData[0]; + char *newCmd = (char *)pc.clientData[1]; + + parseContextRelease(&pc); + return XOTclDeprecatedCmd(interp, oldCmd, newCmd); + + } +} + +static int XOTclFinalizeObjCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { parseContext pc; @@ -2717,6 +2739,10 @@ {"rootClass", 1, 0, convertToString}, {"rootMetaClass", 1, 0, convertToString}} }, +{"::xotcl::deprecated", XOTclDeprecatedCmdStub, 2, { + {"oldCmd", 1, 0, convertToString}, + {"newCmd", 0, 0, convertToString}} +}, {"::xotcl::finalize", XOTclFinalizeObjCmdStub, 0, { } }, Index: generic/xotcl.c =================================================================== diff -u -r07939dc97b98b4a40c047be6923c36380c7c6b5d -r8e5a1351ecc12dfca1e3988240a07fa745439d42 --- generic/xotcl.c (.../xotcl.c) (revision 07939dc97b98b4a40c047be6923c36380c7c6b5d) +++ generic/xotcl.c (.../xotcl.c) (revision 8e5a1351ecc12dfca1e3988240a07fa745439d42) @@ -704,26 +704,15 @@ * prints a msg to the screen that oldCmd is deprecated * optinal: give a new cmd */ -extern void -XOTclDeprecatedMsg(char *oldCmd, char *newCmd) { +static int +XOTclDeprecatedCmd(Tcl_Interp *interp, char *oldCmd, char *newCmd) { fprintf(stderr, "**\n**\n** The command/method <%s> is deprecated.\n", oldCmd); if (newCmd) fprintf(stderr, "** Use <%s> instead.\n", newCmd); fprintf(stderr, "**\n"); -} - -static int -XOTcl_DeprecatedCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - char *new; - if (objc == 2) - new = 0; - else if (objc == 3) - new = ObjStr(objv[2]); - else - return XOTclObjErrArgCnt(interp, NULL, NULL, "deprecated oldcmd ?newcmd?"); - XOTclDeprecatedMsg(ObjStr(objv[1]), new); return TCL_OK; } + #ifdef DISPATCH_TRACE static void printObjv(int objc, Tcl_Obj *CONST objv[]) { int i, j; @@ -12970,7 +12959,6 @@ /*Tcl_CreateObjCommand(interp, "::xotcl::K", XOTclKObjCmd, 0, 0);*/ Tcl_CreateObjCommand(interp, "::xotcl::dispatch", XOTclDispatchCmd, 0, 0); - Tcl_CreateObjCommand(interp, "::xotcl::deprecated", XOTcl_DeprecatedCmd, 0, 0); #if defined(PRE85) #ifdef XOTCL_BYTECODE instructions[INST_INITPROC].cmdPtr = (Command *) Index: generic/xotcl.decls =================================================================== diff -u -rc990d14157d8434cd5b1ee5f45aa43f82cb911b5 -r8e5a1351ecc12dfca1e3988240a07fa745439d42 --- generic/xotcl.decls (.../xotcl.decls) (revision c990d14157d8434cd5b1ee5f45aa43f82cb911b5) +++ generic/xotcl.decls (.../xotcl.decls) (revision 8e5a1351ecc12dfca1e3988240a07fa745439d42) @@ -115,9 +115,9 @@ int XOTclErrInProc (Tcl_Interp *interp, Tcl_Obj *objName, Tcl_Obj *clName, char *procName) } -declare 26 generic { +#declare 26 generic { # -} +#} declare 27 generic { int XOTclErrBadVal_(Tcl_Interp *interp, char *expected, char *value) } @@ -130,9 +130,9 @@ declare 30 generic { void XOTclCallStackDump (Tcl_Interp *interp) } -declare 31 generic { - void XOTclDeprecatedMsg(char *oldCmd, char *newCmd) -} +#declare 31 generic { +# void XOTclDeprecatedMsg(char *oldCmd, char *newCmd) +#} declare 32 generic { void XOTclSetObjClientData(XOTcl_Object *obj, ClientData data) } Index: generic/xotclDecls.h =================================================================== diff -u -rc990d14157d8434cd5b1ee5f45aa43f82cb911b5 -r8e5a1351ecc12dfca1e3988240a07fa745439d42 --- generic/xotclDecls.h (.../xotclDecls.h) (revision c990d14157d8434cd5b1ee5f45aa43f82cb911b5) +++ generic/xotclDecls.h (.../xotclDecls.h) (revision 8e5a1351ecc12dfca1e3988240a07fa745439d42) @@ -192,11 +192,7 @@ /* 30 */ EXTERN void XOTclCallStackDump (Tcl_Interp * interp); #endif -#ifndef XOTclDeprecatedMsg_TCL_DECLARED -#define XOTclDeprecatedMsg_TCL_DECLARED -/* 31 */ -EXTERN void XOTclDeprecatedMsg (char * oldCmd, char * newCmd); -#endif +/* Slot 31 is reserved */ #ifndef XOTclSetObjClientData_TCL_DECLARED #define XOTclSetObjClientData_TCL_DECLARED /* 32 */ @@ -315,7 +311,7 @@ int (*xOTclObjErrType) (Tcl_Interp * interp, Tcl_Obj * nm, char * wt); /* 28 */ void (*xOTclStackDump) (Tcl_Interp * interp); /* 29 */ void (*xOTclCallStackDump) (Tcl_Interp * interp); /* 30 */ - void (*xOTclDeprecatedMsg) (char * oldCmd, char * newCmd); /* 31 */ + void *reserved31; void (*xOTclSetObjClientData) (XOTcl_Object * obj, ClientData data); /* 32 */ ClientData (*xOTclGetObjClientData) (XOTcl_Object * obj); /* 33 */ void (*xOTclSetClassClientData) (XOTcl_Class * cl, ClientData data); /* 34 */ @@ -453,10 +449,7 @@ #define XOTclCallStackDump \ (xotclStubsPtr->xOTclCallStackDump) /* 30 */ #endif -#ifndef XOTclDeprecatedMsg -#define XOTclDeprecatedMsg \ - (xotclStubsPtr->xOTclDeprecatedMsg) /* 31 */ -#endif +/* Slot 31 is reserved */ #ifndef XOTclSetObjClientData #define XOTclSetObjClientData \ (xotclStubsPtr->xOTclSetObjClientData) /* 32 */ Index: generic/xotclStubInit.c =================================================================== diff -u -r2111020b49da8ce57758e51accf0b6073037f0d2 -r8e5a1351ecc12dfca1e3988240a07fa745439d42 --- generic/xotclStubInit.c (.../xotclStubInit.c) (revision 2111020b49da8ce57758e51accf0b6073037f0d2) +++ generic/xotclStubInit.c (.../xotclStubInit.c) (revision 8e5a1351ecc12dfca1e3988240a07fa745439d42) @@ -67,7 +67,7 @@ XOTclObjErrType, /* 28 */ XOTclStackDump, /* 29 */ XOTclCallStackDump, /* 30 */ - XOTclDeprecatedMsg, /* 31 */ + NULL, /* 31 */ XOTclSetObjClientData, /* 32 */ XOTclGetObjClientData, /* 33 */ XOTclSetClassClientData, /* 34 */