Index: generic/gentclAPI.decls =================================================================== diff -u -rca676cbf49393571d278e6307a5c4f6239dc10c9 -r42c96835f26177eacc9fda76997adf0c0812ec59 --- generic/gentclAPI.decls (.../gentclAPI.decls) (revision ca676cbf49393571d278e6307a5c4f6239dc10c9) +++ generic/gentclAPI.decls (.../gentclAPI.decls) (revision 42c96835f26177eacc9fda76997adf0c0812ec59) @@ -394,7 +394,7 @@ {-argName "class" -required 1 -type class} {-argName "filter" -required 1} } -infoClassMethod instforward XOTclClassInfoInstforwardMethod { +infoClassMethod forward XOTclClassInfoForwardMethod { {-argName "class" -required 1 -type class} {-argName "-definition"} {-argName "name"} Index: generic/tclAPI.h =================================================================== diff -u -rca676cbf49393571d278e6307a5c4f6239dc10c9 -r42c96835f26177eacc9fda76997adf0c0812ec59 --- generic/tclAPI.h (.../tclAPI.h) (revision ca676cbf49393571d278e6307a5c4f6239dc10c9) +++ generic/tclAPI.h (.../tclAPI.h) (revision 42c96835f26177eacc9fda76997adf0c0812ec59) @@ -104,9 +104,9 @@ static int XOTclClassInfoAliasMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoFilterMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoFilterguardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclClassInfoForwardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoHeritageMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoInstancesMethodStub(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 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 []); @@ -200,9 +200,9 @@ static int XOTclClassInfoAliasMethod(Tcl_Interp *interp, XOTclClass *object, int withDefinition, char *name); static int XOTclClassInfoFilterMethod(Tcl_Interp *interp, XOTclClass *class, int withGuards, char *pattern); static int XOTclClassInfoFilterguardMethod(Tcl_Interp *interp, XOTclClass *class, char *filter); +static int XOTclClassInfoForwardMethod(Tcl_Interp *interp, XOTclClass *class, int withDefinition, char *name); static int XOTclClassInfoHeritageMethod(Tcl_Interp *interp, XOTclClass *class, char *pattern); static int XOTclClassInfoInstancesMethod(Tcl_Interp *interp, XOTclClass *class, int withClosure, char *patternString, XOTclObject *patternObj); -static int XOTclClassInfoInstforwardMethod(Tcl_Interp *interp, XOTclClass *class, int withDefinition, char *name); static int XOTclClassInfoInstinvarMethod(Tcl_Interp *interp, XOTclClass *class); 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); @@ -297,9 +297,9 @@ XOTclClassInfoAliasMethodIdx, XOTclClassInfoFilterMethodIdx, XOTclClassInfoFilterguardMethodIdx, + XOTclClassInfoForwardMethodIdx, XOTclClassInfoHeritageMethodIdx, XOTclClassInfoInstancesMethodIdx, - XOTclClassInfoInstforwardMethodIdx, XOTclClassInfoInstinvarMethodIdx, XOTclClassInfoInstmixinofMethodIdx, XOTclClassInfoInstparamsMethodIdx, @@ -723,6 +723,26 @@ } static int +XOTclClassInfoForwardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + + if (ArgumentParse(interp, objc, objv, NULL, objv[0], + method_definitions[XOTclClassInfoForwardMethodIdx].paramDefs, + method_definitions[XOTclClassInfoForwardMethodIdx].nrParameters, + &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclClass *class = (XOTclClass *)pc.clientData[0]; + int withDefinition = (int )pc.clientData[1]; + char *name = (char *)pc.clientData[2]; + + parseContextRelease(&pc); + return XOTclClassInfoForwardMethod(interp, class, withDefinition, name); + + } +} + +static int XOTclClassInfoHeritageMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { parseContext pc; @@ -776,26 +796,6 @@ } static int -XOTclClassInfoInstforwardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - parseContext pc; - - if (ArgumentParse(interp, objc, objv, NULL, objv[0], - method_definitions[XOTclClassInfoInstforwardMethodIdx].paramDefs, - method_definitions[XOTclClassInfoInstforwardMethodIdx].nrParameters, - &pc) != TCL_OK) { - return TCL_ERROR; - } else { - XOTclClass *class = (XOTclClass *)pc.clientData[0]; - int withDefinition = (int )pc.clientData[1]; - char *name = (char *)pc.clientData[2]; - - parseContextRelease(&pc); - return XOTclClassInfoInstforwardMethod(interp, class, withDefinition, name); - - } -} - -static int XOTclClassInfoInstinvarMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { parseContext pc; @@ -2350,6 +2350,11 @@ {"class", 1, 0, convertToClass}, {"filter", 1, 0, convertToString}} }, +{"::xotcl::cmd::ClassInfo::forward", XOTclClassInfoForwardMethodStub, 3, { + {"class", 1, 0, convertToClass}, + {"-definition", 0, 0, convertToString}, + {"name", 0, 0, convertToString}} +}, {"::xotcl::cmd::ClassInfo::heritage", XOTclClassInfoHeritageMethodStub, 2, { {"class", 1, 0, convertToClass}, {"pattern", 0, 0, convertToString}} @@ -2359,11 +2364,6 @@ {"-closure", 0, 0, convertToString}, {"pattern", 0, 0, convertToObjpattern}} }, -{"::xotcl::cmd::ClassInfo::instforward", XOTclClassInfoInstforwardMethodStub, 3, { - {"class", 1, 0, convertToClass}, - {"-definition", 0, 0, convertToString}, - {"name", 0, 0, convertToString}} -}, {"::xotcl::cmd::ClassInfo::instinvar", XOTclClassInfoInstinvarMethodStub, 1, { {"class", 1, 0, convertToClass}} }, Index: generic/xotcl.c =================================================================== diff -u -rca676cbf49393571d278e6307a5c4f6239dc10c9 -r42c96835f26177eacc9fda76997adf0c0812ec59 --- generic/xotcl.c (.../xotcl.c) (revision ca676cbf49393571d278e6307a5c4f6239dc10c9) +++ generic/xotcl.c (.../xotcl.c) (revision 42c96835f26177eacc9fda76997adf0c0812ec59) @@ -12826,7 +12826,7 @@ return class->opt ? GuardList(interp, class->opt->instfilters, filter) : TCL_OK; } -static int XOTclClassInfoInstforwardMethod(Tcl_Interp *interp, XOTclClass *class, +static int XOTclClassInfoForwardMethod(Tcl_Interp *interp, XOTclClass *class, int withDefinition, char *pattern) { return ListForward(interp, Tcl_Namespace_cmdTable(class->nsPtr), pattern, withDefinition); } Index: library/lib/xotcl1.xotcl =================================================================== diff -u -rca676cbf49393571d278e6307a5c4f6239dc10c9 -r42c96835f26177eacc9fda76997adf0c0812ec59 --- library/lib/xotcl1.xotcl (.../xotcl1.xotcl) (revision ca676cbf49393571d278e6307a5c4f6239dc10c9) +++ library/lib/xotcl1.xotcl (.../xotcl1.xotcl) (revision 42c96835f26177eacc9fda76997adf0c0812ec59) @@ -305,7 +305,10 @@ } foreach cmd [::info command ::xotcl::cmd::ClassInfo::*] { set cmdName [namespace tail $cmd] - if {$cmdName in [list "method" "methods" "filter" "filterguard" "mixin" "mixinguard"]} continue + if {$cmdName in [list "method" "methods" \ + "filter" "filterguard" \ + "forward" \ + "mixin" "mixinguard"]} continue ::xotcl::alias ::xotcl::classInfo $cmdName $cmd } ::xotcl::alias ::xotcl::objectInfo is ::xotcl::is @@ -316,6 +319,7 @@ ::xotcl::alias ::xotcl::classInfo instmixinguard ::xotcl::cmd::ClassInfo::mixinguard ::xotcl::alias ::xotcl::classInfo instfilter ::xotcl::cmd::ClassInfo::filter ::xotcl::alias ::xotcl::classInfo instfilterguard ::xotcl::cmd::ClassInfo::filterguard + ::xotcl::alias ::xotcl::classInfo instforward ::xotcl::cmd::ClassInfo::forward # define info methods from objectInfo on classInfo as well ::xotcl::alias classInfo body objectInfo::body