Index: generic/gentclAPI.tcl =================================================================== diff -u -ree516ca61badbed0c2949e21c51755a7020648a7 -r39433ecd7b8822d98a577a6904bde94d0dd1d900 --- generic/gentclAPI.tcl (.../gentclAPI.tcl) (revision ee516ca61badbed0c2949e21c51755a7020648a7) +++ generic/gentclAPI.tcl (.../gentclAPI.tcl) (revision 39433ecd7b8822d98a577a6904bde94d0dd1d900) @@ -67,7 +67,7 @@ set c [list] set i 0 set pre ""; set post "" - set intro " parseContext pc;\n" + set intro "" switch $clientData { class { @@ -172,6 +172,7 @@ return [subst -nocommands { static int ${stub}(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; $intro if (parseObjv(interp, objc, objv, objv[0], method_definitions[$idx].ifd, @@ -187,6 +188,17 @@ } } }]} +proc genSimpleStub {stub intro idx cDefs pre call post} { + return [subst -nocommands { +static int +${stub}(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { +$intro + $cDefs +$pre + $call +$post +} +}]} proc implArgList {implementation prefix arglist} { if {$arglist ne ""} { @@ -217,7 +229,12 @@ } else { set call "return [implArgList $d(implementation) {} $arglist];" } - append fns [genStub $d(stub) $intro $d(idx) $cDefs $pre $call $post] + if {$nrArgs == 1 && $arglist eq "obj, objc, objv"} { + #puts stderr "$d(stub) => '$arglist'" + append fns [genSimpleStub $d(stub) $intro $d(idx) $cDefs $pre $call $post] + } else { + append fns [genStub $d(stub) $intro $d(idx) $cDefs $pre $call $post] + } } puts $::converter Index: generic/tclAPI.h =================================================================== diff -u -ree516ca61badbed0c2949e21c51755a7020648a7 -r39433ecd7b8822d98a577a6904bde94d0dd1d900 --- generic/tclAPI.h (.../tclAPI.h) (revision ee516ca61badbed0c2949e21c51755a7020648a7) +++ generic/tclAPI.h (.../tclAPI.h) (revision 39433ecd7b8822d98a577a6904bde94d0dd1d900) @@ -1700,21 +1700,12 @@ static int XOTclOConfigureMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - parseContext pc; XOTclObject *obj = (XOTclObject *)clientData; if (!obj) return XOTclObjErrType(interp, objv[0], "Object"); - if (parseObjv(interp, objc, objv, objv[0], - method_definitions[XOTclOConfigureMethodIdx].ifd, - method_definitions[XOTclOConfigureMethodIdx].ifdSize, - &pc) != TCL_OK) { - return TCL_ERROR; - } else { - parseContextRelease(&pc); return XOTclOConfigureMethod(interp, obj, objc, objv); - } } static int @@ -1822,21 +1813,12 @@ static int XOTclOInstVarMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - parseContext pc; XOTclObject *obj = (XOTclObject *)clientData; if (!obj) return XOTclObjErrType(interp, objv[0], "Object"); - if (parseObjv(interp, objc, objv, objv[0], - method_definitions[XOTclOInstVarMethodIdx].ifd, - method_definitions[XOTclOInstVarMethodIdx].ifdSize, - &pc) != TCL_OK) { - return TCL_ERROR; - } else { - parseContextRelease(&pc); return XOTclOInstVarMethod(interp, obj, objc, objv); - } } static int @@ -1975,21 +1957,12 @@ static int XOTclONextMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - parseContext pc; XOTclObject *obj = (XOTclObject *)clientData; if (!obj) return XOTclObjErrType(interp, objv[0], "Object"); - if (parseObjv(interp, objc, objv, objv[0], - method_definitions[XOTclONextMethodIdx].ifd, - method_definitions[XOTclONextMethodIdx].ifdSize, - &pc) != TCL_OK) { - return TCL_ERROR; - } else { - parseContextRelease(&pc); return XOTclONextMethod(interp, obj, objc, objv); - } } static int @@ -2113,59 +2086,32 @@ static int XOTclOSetvaluesMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - parseContext pc; XOTclObject *obj = (XOTclObject *)clientData; if (!obj) return XOTclObjErrType(interp, objv[0], "Object"); - if (parseObjv(interp, objc, objv, objv[0], - method_definitions[XOTclOSetvaluesMethodIdx].ifd, - method_definitions[XOTclOSetvaluesMethodIdx].ifdSize, - &pc) != TCL_OK) { - return TCL_ERROR; - } else { - parseContextRelease(&pc); return XOTclOSetvaluesMethod(interp, obj, objc, objv); - } } static int XOTclOUplevelMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - parseContext pc; XOTclObject *obj = (XOTclObject *)clientData; if (!obj) return XOTclObjErrType(interp, objv[0], "Object"); - if (parseObjv(interp, objc, objv, objv[0], - method_definitions[XOTclOUplevelMethodIdx].ifd, - method_definitions[XOTclOUplevelMethodIdx].ifdSize, - &pc) != TCL_OK) { - return TCL_ERROR; - } else { - parseContextRelease(&pc); return XOTclOUplevelMethod(interp, obj, objc, objv); - } } static int XOTclOUpvarMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - parseContext pc; XOTclObject *obj = (XOTclObject *)clientData; if (!obj) return XOTclObjErrType(interp, objv[0], "Object"); - if (parseObjv(interp, objc, objv, objv[0], - method_definitions[XOTclOUpvarMethodIdx].ifd, - method_definitions[XOTclOUpvarMethodIdx].ifdSize, - &pc) != TCL_OK) { - return TCL_ERROR; - } else { - parseContextRelease(&pc); return XOTclOUpvarMethod(interp, obj, objc, objv); - } } static int