Index: generic/gentclAPI.decls =================================================================== diff -u -rae1f8003c9b771906e285970f31ff9f12ce40558 -r5008260d12072f5542b81dfed2d512f906326e32 --- generic/gentclAPI.decls (.../gentclAPI.decls) (revision ae1f8003c9b771906e285970f31ff9f12ce40558) +++ generic/gentclAPI.decls (.../gentclAPI.decls) (revision 5008260d12072f5542b81dfed2d512f906326e32) @@ -408,13 +408,7 @@ {-argName "-guards"} {-argName "pattern" -type objpattern} } -# infoClassMethod instmixin XOTclClassInfoInstmixinMethod { -# {-argName "class" -required 1 -type class} -# {-argName "-closure"} -# {-argName "-guards"} -# {-argName "pattern" -type objpattern} -# } -infoClassMethod instmixinguard XOTclClassInfoInstmixinguardMethod { +infoClassMethod mixinguard XOTclClassInfoMixinguardMethod { {-argName "class" -required 1 -type class} {-argName "mixin" -required 1} } Index: generic/tclAPI.h =================================================================== diff -u -rae1f8003c9b771906e285970f31ff9f12ce40558 -r5008260d12072f5542b81dfed2d512f906326e32 --- generic/tclAPI.h (.../tclAPI.h) (revision ae1f8003c9b771906e285970f31ff9f12ce40558) +++ generic/tclAPI.h (.../tclAPI.h) (revision 5008260d12072f5542b81dfed2d512f906326e32) @@ -108,14 +108,14 @@ static int XOTclClassInfoInstfilterguardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoInstforwardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoInstinvarMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); -static int XOTclClassInfoInstmixinguardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoInstmixinofMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoInstparamsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoInstpostMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoInstpreMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoMethodMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoMethodsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoMixinMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclClassInfoMixinguardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoMixinofMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoParameterMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoSlotsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); @@ -204,14 +204,14 @@ static int XOTclClassInfoInstfilterguardMethod(Tcl_Interp *interp, XOTclClass *class, char *filter); static int XOTclClassInfoInstforwardMethod(Tcl_Interp *interp, XOTclClass *class, int withDefinition, char *name); static int XOTclClassInfoInstinvarMethod(Tcl_Interp *interp, XOTclClass *class); -static int XOTclClassInfoInstmixinguardMethod(Tcl_Interp *interp, XOTclClass *class, char *mixin); static int XOTclClassInfoInstmixinofMethod(Tcl_Interp *interp, XOTclClass *class, int withClosure, char *patternString, XOTclObject *patternObj); static int XOTclClassInfoInstparamsMethod(Tcl_Interp *interp, XOTclClass *class, char *methodName, int withVarnames); static int XOTclClassInfoInstpostMethod(Tcl_Interp *interp, XOTclClass *class, char *methodName); static int XOTclClassInfoInstpreMethod(Tcl_Interp *interp, XOTclClass *class, char *methodName); static int XOTclClassInfoMethodMethod(Tcl_Interp *interp, XOTclClass *class, int infomethodsubcmd, char *name); static int XOTclClassInfoMethodsMethod(Tcl_Interp *interp, XOTclClass *object, int withDefined, int withMethodtype, int withNomixins, int withIncontext, char *pattern); static int XOTclClassInfoMixinMethod(Tcl_Interp *interp, XOTclClass *class, int withClosure, int withGuards, char *patternString, XOTclObject *patternObj); +static int XOTclClassInfoMixinguardMethod(Tcl_Interp *interp, XOTclClass *class, char *mixin); static int XOTclClassInfoMixinofMethod(Tcl_Interp *interp, XOTclClass *class, int withClosure, char *patternString, XOTclObject *patternObj); static int XOTclClassInfoParameterMethod(Tcl_Interp *interp, XOTclClass *class); static int XOTclClassInfoSlotsMethod(Tcl_Interp *interp, XOTclClass *class); @@ -301,14 +301,14 @@ XOTclClassInfoInstfilterguardMethodIdx, XOTclClassInfoInstforwardMethodIdx, XOTclClassInfoInstinvarMethodIdx, - XOTclClassInfoInstmixinguardMethodIdx, XOTclClassInfoInstmixinofMethodIdx, XOTclClassInfoInstparamsMethodIdx, XOTclClassInfoInstpostMethodIdx, XOTclClassInfoInstpreMethodIdx, XOTclClassInfoMethodMethodIdx, XOTclClassInfoMethodsMethodIdx, XOTclClassInfoMixinMethodIdx, + XOTclClassInfoMixinguardMethodIdx, XOTclClassInfoMixinofMethodIdx, XOTclClassInfoParameterMethodIdx, XOTclClassInfoSlotsMethodIdx, @@ -814,25 +814,6 @@ } static int -XOTclClassInfoInstmixinguardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - parseContext pc; - - if (ArgumentParse(interp, objc, objv, NULL, objv[0], - method_definitions[XOTclClassInfoInstmixinguardMethodIdx].paramDefs, - method_definitions[XOTclClassInfoInstmixinguardMethodIdx].nrParameters, - &pc) != TCL_OK) { - return TCL_ERROR; - } else { - XOTclClass *class = (XOTclClass *)pc.clientData[0]; - char *mixin = (char *)pc.clientData[1]; - - parseContextRelease(&pc); - return XOTclClassInfoInstmixinguardMethod(interp, class, mixin); - - } -} - -static int XOTclClassInfoInstmixinofMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { parseContext pc; @@ -1003,6 +984,25 @@ } static int +XOTclClassInfoMixinguardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + + if (ArgumentParse(interp, objc, objv, NULL, objv[0], + method_definitions[XOTclClassInfoMixinguardMethodIdx].paramDefs, + method_definitions[XOTclClassInfoMixinguardMethodIdx].nrParameters, + &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclClass *class = (XOTclClass *)pc.clientData[0]; + char *mixin = (char *)pc.clientData[1]; + + parseContextRelease(&pc); + return XOTclClassInfoMixinguardMethod(interp, class, mixin); + + } +} + +static int XOTclClassInfoMixinofMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { parseContext pc; @@ -2367,10 +2367,6 @@ {"::xotcl::cmd::ClassInfo::instinvar", XOTclClassInfoInstinvarMethodStub, 1, { {"class", 1, 0, convertToClass}} }, -{"::xotcl::cmd::ClassInfo::instmixinguard", XOTclClassInfoInstmixinguardMethodStub, 2, { - {"class", 1, 0, convertToClass}, - {"mixin", 1, 0, convertToString}} -}, {"::xotcl::cmd::ClassInfo::instmixinof", XOTclClassInfoInstmixinofMethodStub, 3, { {"class", 1, 0, convertToClass}, {"-closure", 0, 0, convertToString}, @@ -2408,6 +2404,10 @@ {"-guards", 0, 0, convertToString}, {"pattern", 0, 0, convertToObjpattern}} }, +{"::xotcl::cmd::ClassInfo::mixinguard", XOTclClassInfoMixinguardMethodStub, 2, { + {"class", 1, 0, convertToClass}, + {"mixin", 1, 0, convertToString}} +}, {"::xotcl::cmd::ClassInfo::mixinof", XOTclClassInfoMixinofMethodStub, 3, { {"class", 1, 0, convertToClass}, {"-closure", 0, 0, convertToString}, Index: generic/xotcl.c =================================================================== diff -u -rae1f8003c9b771906e285970f31ff9f12ce40558 -r5008260d12072f5542b81dfed2d512f906326e32 --- generic/xotcl.c (.../xotcl.c) (revision ae1f8003c9b771906e285970f31ff9f12ce40558) +++ generic/xotcl.c (.../xotcl.c) (revision 5008260d12072f5542b81dfed2d512f906326e32) @@ -12867,7 +12867,7 @@ /* TODO: this method should be removed, we should register XOTclClassInfoMixinMethod for xotcl1 under name ... instmxin ... */ -static int XOTclClassInfoInstmixinguardMethod(Tcl_Interp *interp, XOTclClass * class, char * mixin) { +static int XOTclClassInfoMixinguardMethod(Tcl_Interp *interp, XOTclClass * class, char * mixin) { return class->opt ? GuardList(interp, class->opt->instmixins, mixin) : TCL_OK; } Index: library/lib/xotcl1.xotcl =================================================================== diff -u -rae1f8003c9b771906e285970f31ff9f12ce40558 -r5008260d12072f5542b81dfed2d512f906326e32 --- library/lib/xotcl1.xotcl (.../xotcl1.xotcl) (revision ae1f8003c9b771906e285970f31ff9f12ce40558) +++ library/lib/xotcl1.xotcl (.../xotcl1.xotcl) (revision 5008260d12072f5542b81dfed2d512f906326e32) @@ -305,14 +305,15 @@ } foreach cmd [::info command ::xotcl::cmd::ClassInfo::*] { set cmdName [namespace tail $cmd] - if {$cmdName in [list "method" "methods" "mixin"]} continue + if {$cmdName in [list "method" "methods" "mixin" "mixinguard"]} continue ::xotcl::alias ::xotcl::classInfo $cmdName $cmd } ::xotcl::alias ::xotcl::objectInfo is ::xotcl::is ::xotcl::alias ::xotcl::classInfo is ::xotcl::is ::xotcl::alias ::xotcl::classInfo classparent ::xotcl::cmd::ObjectInfo::parent ::xotcl::alias ::xotcl::classInfo classchildren ::xotcl::cmd::ObjectInfo::children ::xotcl::alias ::xotcl::classInfo instmixin ::xotcl::cmd::ClassInfo::mixin + ::xotcl::alias ::xotcl::classInfo instmixinguard ::xotcl::cmd::ClassInfo::mixinguard # define info methods from objectInfo on classInfo as well ::xotcl::alias classInfo body objectInfo::body