Index: generic/gentclAPI.decls =================================================================== diff -u -ra4d1fd30453e4e87467b02ed749fb4007d46a5e0 -re8f814e896b7aac8326f9abef3a5e759b2a4ed18 --- generic/gentclAPI.decls (.../gentclAPI.decls) (revision a4d1fd30453e4e87467b02ed749fb4007d46a5e0) +++ generic/gentclAPI.decls (.../gentclAPI.decls) (revision e8f814e896b7aac8326f9abef3a5e759b2a4ed18) @@ -159,10 +159,10 @@ {-argName "name" -required 1} } # "set" needed? -objectMethod set XOTclOSetMethod { - {-argName "var" -required 1 -type tclobj} - {-argName "value" -type tclobj} -} +#objectMethod set XOTclOSetMethod { +# {-argName "var" -required 1 -type tclobj} +# {-argName "value" -type tclobj} +#} objectMethod requireNamespace XOTclORequireNamespaceMethod { } objectMethod setvalues XOTclOSetvaluesMethod { Index: generic/predefined.h =================================================================== diff -u -ra4d1fd30453e4e87467b02ed749fb4007d46a5e0 -re8f814e896b7aac8326f9abef3a5e759b2a4ed18 --- generic/predefined.h (.../predefined.h) (revision a4d1fd30453e4e87467b02ed749fb4007d46a5e0) +++ generic/predefined.h (.../predefined.h) (revision e8f814e896b7aac8326f9abef3a5e759b2a4ed18) @@ -10,7 +10,7 @@ "set bootstrap 1\n" "foreach cmd [info command ::xotcl::cmd::Object::*] {\n" "::xotcl::alias ::xotcl::Object [namespace tail $cmd] $cmd}\n" -"foreach cmd {array append eval incr lappend subst unset trace} {\n" +"foreach cmd {array append eval incr lappend set subst unset trace} {\n" "::xotcl::alias ::xotcl::Object $cmd -objscope ::$cmd}\n" "foreach cmd [info command ::xotcl::cmd::Class::*] {\n" "::xotcl::alias ::xotcl::Class [namespace tail $cmd] $cmd}\n" Index: generic/predefined.xotcl =================================================================== diff -u -ra4d1fd30453e4e87467b02ed749fb4007d46a5e0 -re8f814e896b7aac8326f9abef3a5e759b2a4ed18 --- generic/predefined.xotcl (.../predefined.xotcl) (revision a4d1fd30453e4e87467b02ed749fb4007d46a5e0) +++ generic/predefined.xotcl (.../predefined.xotcl) (revision e8f814e896b7aac8326f9abef3a5e759b2a4ed18) @@ -59,7 +59,7 @@ } # provide some Tcl-commands as methods for ::xotcl::Object - foreach cmd {array append eval incr lappend subst unset trace} { + foreach cmd {array append eval incr lappend set subst unset trace} { ::xotcl::alias ::xotcl::Object $cmd -objscope ::$cmd } Index: generic/tclAPI.h =================================================================== diff -u -ra4d1fd30453e4e87467b02ed749fb4007d46a5e0 -re8f814e896b7aac8326f9abef3a5e759b2a4ed18 --- generic/tclAPI.h (.../tclAPI.h) (revision a4d1fd30453e4e87467b02ed749fb4007d46a5e0) +++ generic/tclAPI.h (.../tclAPI.h) (revision e8f814e896b7aac8326f9abef3a5e759b2a4ed18) @@ -123,7 +123,6 @@ static int XOTclOParametercmdMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclOProcSearchMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclORequireNamespaceMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); -static int XOTclOSetMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclOSetvaluesMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclOUplevelMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclOUpvarMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); @@ -221,7 +220,6 @@ static int XOTclOParametercmdMethod(Tcl_Interp *interp, XOTclObject *obj, char *name); static int XOTclOProcSearchMethod(Tcl_Interp *interp, XOTclObject *obj, char *name); static int XOTclORequireNamespaceMethod(Tcl_Interp *interp, XOTclObject *obj); -static int XOTclOSetMethod(Tcl_Interp *interp, XOTclObject *obj, Tcl_Obj *var, Tcl_Obj *value); static int XOTclOSetvaluesMethod(Tcl_Interp *interp, XOTclObject *obj, int objc, Tcl_Obj *CONST objv[]); static int XOTclOUplevelMethod(Tcl_Interp *interp, XOTclObject *obj, int objc, Tcl_Obj *CONST objv[]); static int XOTclOUpvarMethod(Tcl_Interp *interp, XOTclObject *obj, int objc, Tcl_Obj *CONST objv[]); @@ -320,7 +318,6 @@ XOTclOParametercmdMethodIdx, XOTclOProcSearchMethodIdx, XOTclORequireNamespaceMethodIdx, - XOTclOSetMethodIdx, XOTclOSetvaluesMethodIdx, XOTclOUplevelMethodIdx, XOTclOUpvarMethodIdx, @@ -1874,26 +1871,6 @@ } static int -XOTclOSetMethodStub(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 (ArgumentParse(interp, objc, objv, obj, objv[0], - method_definitions[XOTclOSetMethodIdx].paramDefs, - method_definitions[XOTclOSetMethodIdx].nrParameters, - &pc) != TCL_OK) { - return TCL_ERROR; - } else { - Tcl_Obj *var = (Tcl_Obj *)pc.clientData[0]; - Tcl_Obj *value = (Tcl_Obj *)pc.clientData[1]; - - parseContextRelease(&pc); - return XOTclOSetMethod(interp, obj, var, value); - - } -} - -static int XOTclOSetvaluesMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { XOTclObject *obj = (XOTclObject *)clientData; if (!obj) return XOTclObjErrType(interp, objv[0], "Object"); @@ -2585,10 +2562,6 @@ {"::xotcl::cmd::Object::requireNamespace", XOTclORequireNamespaceMethodStub, 0, { } }, -{"::xotcl::cmd::Object::set", XOTclOSetMethodStub, 2, { - {"var", 1, 0, convertToTclobj}, - {"value", 0, 0, convertToTclobj}} -}, {"::xotcl::cmd::Object::setvalues", XOTclOSetvaluesMethodStub, 1, { {"args", 0, 0, convertToNothing}} }, Index: generic/xotcl.c =================================================================== diff -u -ra4d1fd30453e4e87467b02ed749fb4007d46a5e0 -re8f814e896b7aac8326f9abef3a5e759b2a4ed18 --- generic/xotcl.c (.../xotcl.c) (revision a4d1fd30453e4e87467b02ed749fb4007d46a5e0) +++ generic/xotcl.c (.../xotcl.c) (revision e8f814e896b7aac8326f9abef3a5e759b2a4ed18) @@ -1488,8 +1488,6 @@ * * Note: For now, I am not aware of this case to become effective, * it is a mere safeguard measure. - * - * TODO: Can it be omitted safely? */ if (flags & TCL_GLOBAL_ONLY) { @@ -1510,16 +1508,16 @@ * directly (by digging into compiled and non-compiled locals etc.), * however, it would cause further code redundance. */ - - varFramePtr = nonXotclObjectProcFrame((Tcl_CallFrame *)Tcl_Interp_varFramePtr(interp)); + varFramePtr = (Tcl_CallFrame *)Tcl_Interp_varFramePtr(interp); + /*fprintf(stderr, "varFramePtr=%p, isProcCallFrame=%.6x %p\n",varFramePtr, varFramePtr ? Tcl_CallFrame_isProcCallFrame(varFramePtr): 0, varFramePtr ? Tcl_CallFrame_procPtr(varFramePtr): 0);*/ - if (varFramePtr && Tcl_CallFrame_isProcCallFrame(varFramePtr)) { - /*fprintf(stderr, "proc-scoped var detected '%s' in NS '%s'\n", name, - varFramePtr->nsPtr->fullName);*/ + if (varFramePtr && (Tcl_CallFrame_isProcCallFrame(varFramePtr) & FRAME_IS_PROC)) { + /*fprintf(stderr, "proc-scoped var detected '%s' in NS '%s', frame %p flags %.6x\n", + name, varFramePtr->nsPtr->fullName, varFramePtr, Tcl_CallFrame_isProcCallFrame(varFramePtr));*/ return TCL_CONTINUE; } @@ -7979,7 +7977,7 @@ * If we are executing inside a Tcl procedure, create a local * variable linked to the new namespace variable "varName". */ - if (varFramePtr && Tcl_CallFrame_isProcCallFrame(varFramePtr)) { + if (varFramePtr && (Tcl_CallFrame_isProcCallFrame(varFramePtr) & FRAME_IS_PROC)) { Proc *procPtr = Tcl_CallFrame_procPtr(varFramePtr); int localCt = procPtr->numCompiledLocals; CompiledLocal *localPtr = procPtr->firstLocalPtr; @@ -10895,10 +10893,6 @@ return TCL_OK; } -static int XOTclOSetMethod(Tcl_Interp *interp, XOTclObject *object, Tcl_Obj *variable, Tcl_Obj *value) { - return setInstVar(interp, object, variable, value); -} - static int XOTclOSetvaluesMethod(Tcl_Interp *interp, XOTclObject *obj, int objc, Tcl_Obj *CONST objv[]) { Tcl_Obj **argv, **nextArgv, *resultObj; int i, argc, nextArgc, normalArgs, result = TCL_OK, isdasharg = NO_DASH;