Index: generic/tclAPI.h =================================================================== diff -u -r42c96835f26177eacc9fda76997adf0c0812ec59 -rd34c425b8c87ad62b8879114f4aa8454162f09ed --- generic/tclAPI.h (.../tclAPI.h) (revision 42c96835f26177eacc9fda76997adf0c0812ec59) +++ generic/tclAPI.h (.../tclAPI.h) (revision d34c425b8c87ad62b8879114f4aa8454162f09ed) @@ -92,8 +92,8 @@ static int XOTclCAllocMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclCCreateMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclCDeallocMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclCFilterGuardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclCForwardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); -static int XOTclCInstFilterGuardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclCInvalidateObjectParameterMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclCInvariantsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclCMethodMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); @@ -188,8 +188,8 @@ static int XOTclCAllocMethod(Tcl_Interp *interp, XOTclClass *cl, Tcl_Obj *name); static int XOTclCCreateMethod(Tcl_Interp *interp, XOTclClass *cl, char *name, int objc, Tcl_Obj *CONST objv[]); static int XOTclCDeallocMethod(Tcl_Interp *interp, XOTclClass *cl, Tcl_Obj *object); +static int XOTclCFilterGuardMethod(Tcl_Interp *interp, XOTclClass *cl, int withPer_object, char *filter, Tcl_Obj *guard); static int XOTclCForwardMethod(Tcl_Interp *interp, XOTclClass *cl, int withPer_object, Tcl_Obj *name, Tcl_Obj *withDefault, int withEarlybinding, Tcl_Obj *withMethodprefix, int withObjscope, Tcl_Obj *withOnerror, int withVerbose, Tcl_Obj *target, int nobjc, Tcl_Obj *CONST nobjv[]); -static int XOTclCInstFilterGuardMethod(Tcl_Interp *interp, XOTclClass *cl, char *filter, Tcl_Obj *guard); static int XOTclCInvalidateObjectParameterMethod(Tcl_Interp *interp, XOTclClass *cl); static int XOTclCInvariantsMethod(Tcl_Interp *interp, XOTclClass *cl, Tcl_Obj *invariantlist); static int XOTclCMethodMethod(Tcl_Interp *interp, XOTclClass *cl, int withInner_namespace, int withPer_object, int withProtected, Tcl_Obj *name, Tcl_Obj *args, Tcl_Obj *body, Tcl_Obj *withPrecondition, Tcl_Obj *withPostcondition); @@ -285,8 +285,8 @@ XOTclCAllocMethodIdx, XOTclCCreateMethodIdx, XOTclCDeallocMethodIdx, + XOTclCFilterGuardMethodIdx, XOTclCForwardMethodIdx, - XOTclCInstFilterGuardMethodIdx, XOTclCInvalidateObjectParameterMethodIdx, XOTclCInvariantsMethodIdx, XOTclCMethodMethodIdx, @@ -474,48 +474,49 @@ } static int -XOTclCForwardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { +XOTclCFilterGuardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { parseContext pc; XOTclClass *cl = XOTclObjectToClass(clientData); if (!cl) return XOTclObjErrType(interp, objv[0], "Class"); if (ArgumentParse(interp, objc, objv, (XOTclObject *) cl, objv[0], - method_definitions[XOTclCForwardMethodIdx].paramDefs, - method_definitions[XOTclCForwardMethodIdx].nrParameters, + method_definitions[XOTclCFilterGuardMethodIdx].paramDefs, + method_definitions[XOTclCFilterGuardMethodIdx].nrParameters, &pc) != TCL_OK) { return TCL_ERROR; } else { int withPer_object = (int )pc.clientData[0]; - Tcl_Obj *name = (Tcl_Obj *)pc.clientData[1]; - Tcl_Obj *withDefault = (Tcl_Obj *)pc.clientData[2]; - int withEarlybinding = (int )pc.clientData[3]; - Tcl_Obj *withMethodprefix = (Tcl_Obj *)pc.clientData[4]; - int withObjscope = (int )pc.clientData[5]; - Tcl_Obj *withOnerror = (Tcl_Obj *)pc.clientData[6]; - int withVerbose = (int )pc.clientData[7]; - Tcl_Obj *target = (Tcl_Obj *)pc.clientData[8]; + char *filter = (char *)pc.clientData[1]; + Tcl_Obj *guard = (Tcl_Obj *)pc.clientData[2]; parseContextRelease(&pc); - return XOTclCForwardMethod(interp, cl, withPer_object, name, withDefault, withEarlybinding, withMethodprefix, withObjscope, withOnerror, withVerbose, target, objc-pc.lastobjc, objv+pc.lastobjc); + return XOTclCFilterGuardMethod(interp, cl, withPer_object, filter, guard); } } static int -XOTclCInstFilterGuardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { +XOTclCForwardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { parseContext pc; XOTclClass *cl = XOTclObjectToClass(clientData); if (!cl) return XOTclObjErrType(interp, objv[0], "Class"); if (ArgumentParse(interp, objc, objv, (XOTclObject *) cl, objv[0], - method_definitions[XOTclCInstFilterGuardMethodIdx].paramDefs, - method_definitions[XOTclCInstFilterGuardMethodIdx].nrParameters, + method_definitions[XOTclCForwardMethodIdx].paramDefs, + method_definitions[XOTclCForwardMethodIdx].nrParameters, &pc) != TCL_OK) { return TCL_ERROR; } else { - char *filter = (char *)pc.clientData[0]; - Tcl_Obj *guard = (Tcl_Obj *)pc.clientData[1]; + int withPer_object = (int )pc.clientData[0]; + Tcl_Obj *name = (Tcl_Obj *)pc.clientData[1]; + Tcl_Obj *withDefault = (Tcl_Obj *)pc.clientData[2]; + int withEarlybinding = (int )pc.clientData[3]; + Tcl_Obj *withMethodprefix = (Tcl_Obj *)pc.clientData[4]; + int withObjscope = (int )pc.clientData[5]; + Tcl_Obj *withOnerror = (Tcl_Obj *)pc.clientData[6]; + int withVerbose = (int )pc.clientData[7]; + Tcl_Obj *target = (Tcl_Obj *)pc.clientData[8]; parseContextRelease(&pc); - return XOTclCInstFilterGuardMethod(interp, cl, filter, guard); + return XOTclCForwardMethod(interp, cl, withPer_object, name, withDefault, withEarlybinding, withMethodprefix, withObjscope, withOnerror, withVerbose, target, objc-pc.lastobjc, objv+pc.lastobjc); } } @@ -2287,6 +2288,11 @@ {"::xotcl::cmd::Class::dealloc", XOTclCDeallocMethodStub, 1, { {"object", 1, 0, convertToTclobj}} }, +{"::xotcl::cmd::Class::filterguard", XOTclCFilterGuardMethodStub, 3, { + {"-per-object", 0, 0, convertToBoolean}, + {"filter", 1, 0, convertToString}, + {"guard", 1, 0, convertToTclobj}} +}, {"::xotcl::cmd::Class::forward", XOTclCForwardMethodStub, 10, { {"-per-object", 0, 0, convertToBoolean}, {"name", 1, 0, convertToTclobj}, @@ -2299,10 +2305,6 @@ {"target", 0, 0, convertToTclobj}, {"args", 0, 0, convertToNothing}} }, -{"::xotcl::cmd::Class::instfilterguard", XOTclCInstFilterGuardMethodStub, 2, { - {"filter", 1, 0, convertToString}, - {"guard", 1, 0, convertToTclobj}} -}, {"::xotcl::cmd::Class::invalidateobjectparameter", XOTclCInvalidateObjectParameterMethodStub, 0, { } },