Index: generic/gentclAPI.decls =================================================================== diff -u -raef0c8541f096447f838953d4f4de16e19dbf6c1 -r9ebd1309a52b27ab92e9e3cce07037767efe4a4f --- generic/gentclAPI.decls (.../gentclAPI.decls) (revision aef0c8541f096447f838953d4f4de16e19dbf6c1) +++ generic/gentclAPI.decls (.../gentclAPI.decls) (revision 9ebd1309a52b27ab92e9e3cce07037767efe4a4f) @@ -297,21 +297,34 @@ } #### TODO should object methods have -per-object? infoObjectMethod method XOTclObjInfoMethodMethod { - {-argName "object" -required 1 -type object} - {-argName "-per-object"} + {-argName "object" -type object} {-argName "infomethodsubcmd" -type "definition|name|parameter|type"} {-argName "name"} } +infoClassMethod method XOTclClassInfoMethodMethod { + {-argName "class" -type class} + {-argName "infomethodsubcmd" -type "definition|name|parameter|type"} + {-argName "name"} +} + ### TODO should object methods have -per-object? infoObjectMethod methods XOTclObjInfoMethodsMethod { - {-argName "object" -required 1 -type object} + {-argName "object" -type object} {-argName "-defined"} - {-argName "-per-object"} {-argName "-methodtype" -nrargs 1 -type "all|scripted|system|alias|forwarder|object|setter"} {-argName "-nomixins"} {-argName "-incontext"} {-argName "pattern"} } +infoClassMethod methods XOTclClassInfoMethodsMethod { + {-argName "object" -type class} + {-argName "-defined"} + {-argName "-methodtype" -nrargs 1 -type "all|scripted|system|alias|forwarder|object|setter"} + {-argName "-nomixins"} + {-argName "-incontext"} + {-argName "pattern"} +} + infoObjectMethod mixin XOTclObjInfoMixinMethod { {-argName "object" -required 1 -type object} {-argName "-guards"} Index: generic/predefined.h =================================================================== diff -u -rb6b46467581277d91ecb78318df079581c1b65fe -r9ebd1309a52b27ab92e9e3cce07037767efe4a4f --- generic/predefined.h (.../predefined.h) (revision b6b46467581277d91ecb78318df079581c1b65fe) +++ generic/predefined.h (.../predefined.h) (revision 9ebd1309a52b27ab92e9e3cce07037767efe4a4f) @@ -50,16 +50,17 @@ ".alias is ::xotcl::is\n" ".alias classparent ::xotcl::cmd::ObjectInfo::parent\n" ".alias classchildren ::xotcl::cmd::ObjectInfo::children\n" -".alias info [::xotcl::cmd::ObjectInfo::method objectInfo -per-object name info]\n" -".alias unknown [::xotcl::cmd::ObjectInfo::method objectInfo -per-object name info]}\n" +".alias info [::xotcl::cmd::ObjectInfo::method objectInfo name info]\n" +".alias unknown [::xotcl::cmd::ObjectInfo::method objectInfo name info]}\n" "foreach cmd [info command ::xotcl::cmd::ObjectInfo::*] {\n" "::xotcl::alias ::xotcl2::objectInfo [namespace tail $cmd] $cmd\n" "::xotcl::alias ::xotcl2::classInfo [namespace tail $cmd] $cmd}\n" "foreach cmd [info command ::xotcl::cmd::ClassInfo::*] {\n" "::xotcl::alias ::xotcl2::classInfo [namespace tail $cmd] $cmd}\n" "unset cmd\n" "Object forward info -onerror ::xotcl::infoError ::xotcl2::objectInfo %1 {%@2 %self}\n" -"Class forward info -onerror ::xotcl::infoError ::xotcl2::classInfo %1 {%@2 %self}\n" +"Class forward info -onerror ::xotcl::infoError ::xotcl2::classInfo %1 {%@2 %self}\n" +"::xotcl::dispatch ::xotcl2::classInfo ::xotcl::cmd::Object::forward \"-per-object\" ::xotcl2::objectInfo {%@2 %1}\n" "proc ::xotcl::infoError msg {\n" "regsub -all \" \" $msg \"\" msg\n" "regsub -all \" \" $msg \"\" msg\n" Index: generic/predefined.xotcl =================================================================== diff -u -rb6b46467581277d91ecb78318df079581c1b65fe -r9ebd1309a52b27ab92e9e3cce07037767efe4a4f --- generic/predefined.xotcl (.../predefined.xotcl) (revision b6b46467581277d91ecb78318df079581c1b65fe) +++ generic/predefined.xotcl (.../predefined.xotcl) (revision 9ebd1309a52b27ab92e9e3cce07037767efe4a4f) @@ -115,8 +115,8 @@ .alias is ::xotcl::is .alias classparent ::xotcl::cmd::ObjectInfo::parent .alias classchildren ::xotcl::cmd::ObjectInfo::children - .alias info [::xotcl::cmd::ObjectInfo::method objectInfo -per-object name info] - .alias unknown [::xotcl::cmd::ObjectInfo::method objectInfo -per-object name info] + .alias info [::xotcl::cmd::ObjectInfo::method objectInfo name info] + .alias unknown [::xotcl::cmd::ObjectInfo::method objectInfo name info] } foreach cmd [info command ::xotcl::cmd::ObjectInfo::*] { @@ -128,8 +128,12 @@ } unset cmd + #Object forward info -onerror ::xotcl::infoError ::xotcl2::objectInfo %1 {%@2 %self} + #Class forward info -onerror ::xotcl::infoError ::xotcl2::classInfo %1 {%@2 %self} + Object forward info -onerror ::xotcl::infoError ::xotcl2::objectInfo %1 {%@2 %self} - Class forward info -onerror ::xotcl::infoError ::xotcl2::classInfo %1 {%@2 %self} + Class forward info -onerror ::xotcl::infoError ::xotcl2::classInfo %1 {%@2 %self} + ::xotcl::dispatch ::xotcl2::classInfo ::xotcl::cmd::Object::forward "-per-object" ::xotcl2::objectInfo {%@2 %1} proc ::xotcl::infoError msg { #puts stderr "INFO ERROR: <$msg>\n$::errorInfo" Index: generic/tclAPI.h =================================================================== diff -u -raef0c8541f096447f838953d4f4de16e19dbf6c1 -r9ebd1309a52b27ab92e9e3cce07037767efe4a4f --- generic/tclAPI.h (.../tclAPI.h) (revision aef0c8541f096447f838953d4f4de16e19dbf6c1) +++ generic/tclAPI.h (.../tclAPI.h) (revision 9ebd1309a52b27ab92e9e3cce07037767efe4a4f) @@ -114,6 +114,8 @@ 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 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 []); @@ -208,6 +210,8 @@ 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 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); @@ -222,8 +226,8 @@ static int XOTclObjInfoForwardMethod(Tcl_Interp *interp, XOTclObject *object, int withDefinition, char *name); static int XOTclObjInfoHasnamespaceMethod(Tcl_Interp *interp, XOTclObject *object); static int XOTclObjInfoInvarMethod(Tcl_Interp *interp, XOTclObject *object); -static int XOTclObjInfoMethodMethod(Tcl_Interp *interp, XOTclObject *object, int withPer_object, int infomethodsubcmd, char *name); -static int XOTclObjInfoMethodsMethod(Tcl_Interp *interp, XOTclObject *object, int withDefined, int withPer_object, int withMethodtype, int withNomixins, int withIncontext, char *pattern); +static int XOTclObjInfoMethodMethod(Tcl_Interp *interp, XOTclObject *object, int infomethodsubcmd, char *name); +static int XOTclObjInfoMethodsMethod(Tcl_Interp *interp, XOTclObject *object, int withDefined, int withMethodtype, int withNomixins, int withIncontext, char *pattern); static int XOTclObjInfoMixinMethod(Tcl_Interp *interp, XOTclObject *object, int withGuards, int withOrder, char *patternString, XOTclObject *patternObj); static int XOTclObjInfoMixinguardMethod(Tcl_Interp *interp, XOTclObject *object, char *mixin); static int XOTclObjInfoParamsMethod(Tcl_Interp *interp, XOTclObject *object, char *methodName, int withVarnames); @@ -303,6 +307,8 @@ XOTclClassInfoInstparamsMethodIdx, XOTclClassInfoInstpostMethodIdx, XOTclClassInfoInstpreMethodIdx, + XOTclClassInfoMethodMethodIdx, + XOTclClassInfoMethodsMethodIdx, XOTclClassInfoMixinofMethodIdx, XOTclClassInfoParameterMethodIdx, XOTclClassInfoSlotsMethodIdx, @@ -954,6 +960,49 @@ } static int +XOTclClassInfoMethodMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + + if (ArgumentParse(interp, objc, objv, NULL, objv[0], + method_definitions[XOTclClassInfoMethodMethodIdx].paramDefs, + method_definitions[XOTclClassInfoMethodMethodIdx].nrParameters, + &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclClass *class = (XOTclClass *)pc.clientData[0]; + int infomethodsubcmd = (int )pc.clientData[1]; + char *name = (char *)pc.clientData[2]; + + parseContextRelease(&pc); + return XOTclClassInfoMethodMethod(interp, class, infomethodsubcmd, name); + + } +} + +static int +XOTclClassInfoMethodsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + + if (ArgumentParse(interp, objc, objv, NULL, objv[0], + method_definitions[XOTclClassInfoMethodsMethodIdx].paramDefs, + method_definitions[XOTclClassInfoMethodsMethodIdx].nrParameters, + &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclClass *object = (XOTclClass *)pc.clientData[0]; + int withDefined = (int )pc.clientData[1]; + int withMethodtype = (int )pc.clientData[2]; + int withNomixins = (int )pc.clientData[3]; + int withIncontext = (int )pc.clientData[4]; + char *pattern = (char *)pc.clientData[5]; + + parseContextRelease(&pc); + return XOTclClassInfoMethodsMethod(interp, object, withDefined, withMethodtype, withNomixins, withIncontext, pattern); + + } +} + +static int XOTclClassInfoMixinofMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { parseContext pc; @@ -1259,12 +1308,11 @@ return TCL_ERROR; } else { XOTclObject *object = (XOTclObject *)pc.clientData[0]; - int withPer_object = (int )pc.clientData[1]; - int infomethodsubcmd = (int )pc.clientData[2]; - char *name = (char *)pc.clientData[3]; + int infomethodsubcmd = (int )pc.clientData[1]; + char *name = (char *)pc.clientData[2]; parseContextRelease(&pc); - return XOTclObjInfoMethodMethod(interp, object, withPer_object, infomethodsubcmd, name); + return XOTclObjInfoMethodMethod(interp, object, infomethodsubcmd, name); } } @@ -1281,14 +1329,13 @@ } else { XOTclObject *object = (XOTclObject *)pc.clientData[0]; int withDefined = (int )pc.clientData[1]; - int withPer_object = (int )pc.clientData[2]; - int withMethodtype = (int )pc.clientData[3]; - int withNomixins = (int )pc.clientData[4]; - int withIncontext = (int )pc.clientData[5]; - char *pattern = (char *)pc.clientData[6]; + int withMethodtype = (int )pc.clientData[2]; + int withNomixins = (int )pc.clientData[3]; + int withIncontext = (int )pc.clientData[4]; + char *pattern = (char *)pc.clientData[5]; parseContextRelease(&pc); - return XOTclObjInfoMethodsMethod(interp, object, withDefined, withPer_object, withMethodtype, withNomixins, withIncontext, pattern); + return XOTclObjInfoMethodsMethod(interp, object, withDefined, withMethodtype, withNomixins, withIncontext, pattern); } } @@ -2346,6 +2393,19 @@ {"class", 1, 0, convertToClass}, {"methodName", 1, 0, convertToString}} }, +{"::xotcl::cmd::ClassInfo::method", XOTclClassInfoMethodMethodStub, 3, { + {"class", 0, 0, convertToClass}, + {"infomethodsubcmd", 0, 0, convertToInfomethodsubcmd}, + {"name", 0, 0, convertToString}} +}, +{"::xotcl::cmd::ClassInfo::methods", XOTclClassInfoMethodsMethodStub, 6, { + {"object", 0, 0, convertToClass}, + {"-defined", 0, 0, convertToString}, + {"-methodtype", 0, 1, convertToMethodtype}, + {"-nomixins", 0, 0, convertToString}, + {"-incontext", 0, 0, convertToString}, + {"pattern", 0, 0, convertToString}} +}, {"::xotcl::cmd::ClassInfo::mixinof", XOTclClassInfoMixinofMethodStub, 3, { {"class", 1, 0, convertToClass}, {"-closure", 0, 0, convertToString}, @@ -2403,16 +2463,14 @@ {"::xotcl::cmd::ObjectInfo::invar", XOTclObjInfoInvarMethodStub, 1, { {"object", 1, 0, convertToObject}} }, -{"::xotcl::cmd::ObjectInfo::method", XOTclObjInfoMethodMethodStub, 4, { - {"object", 1, 0, convertToObject}, - {"-per-object", 0, 0, convertToString}, +{"::xotcl::cmd::ObjectInfo::method", XOTclObjInfoMethodMethodStub, 3, { + {"object", 0, 0, convertToObject}, {"infomethodsubcmd", 0, 0, convertToInfomethodsubcmd}, {"name", 0, 0, convertToString}} }, -{"::xotcl::cmd::ObjectInfo::methods", XOTclObjInfoMethodsMethodStub, 7, { - {"object", 1, 0, convertToObject}, +{"::xotcl::cmd::ObjectInfo::methods", XOTclObjInfoMethodsMethodStub, 6, { + {"object", 0, 0, convertToObject}, {"-defined", 0, 0, convertToString}, - {"-per-object", 0, 0, convertToString}, {"-methodtype", 0, 1, convertToMethodtype}, {"-nomixins", 0, 0, convertToString}, {"-incontext", 0, 0, convertToString}, Index: generic/xotcl.c =================================================================== diff -u -raef0c8541f096447f838953d4f4de16e19dbf6c1 -r9ebd1309a52b27ab92e9e3cce07037767efe4a4f --- generic/xotcl.c (.../xotcl.c) (revision aef0c8541f096447f838953d4f4de16e19dbf6c1) +++ generic/xotcl.c (.../xotcl.c) (revision 9ebd1309a52b27ab92e9e3cce07037767efe4a4f) @@ -12419,15 +12419,8 @@ return TCL_OK; } -static int XOTclObjInfoMethodsMethod(Tcl_Interp *interp, XOTclObject *object, - int withDefined, int withPer_object, - int withMethodtype, - int withNomixins, - int withIncontext, char *pattern) { - - int methodType = 0; - - switch (withMethodtype) { +static int AggregatedMethodType(int methodType) { + switch (methodType) { case MethodtypeNULL: /* default */ case MethodtypeAllIdx: methodType = XOTCL_METHODTYPE_SCRIPTED|XOTCL_METHODTYPE_SYSTEM; @@ -12450,27 +12443,46 @@ case MethodtypeObjectIdx: methodType = XOTCL_METHODTYPE_OBJECT; break; + default: + methodType = 0; } - return ListMethods(interp, object, pattern, withDefined, withPer_object, - methodType, withNomixins, withIncontext); + + return methodType; } +static int XOTclClassInfoMethodsMethod(Tcl_Interp *interp, XOTclClass *class, + int withDefined, int withMethodtype, int withNomixins, + int withIncontext, char *pattern) { + + return ListMethods(interp, &class->object, pattern, withDefined, 0, + AggregatedMethodType(withMethodtype), withNomixins, withIncontext); +} +static int XOTclObjInfoMethodsMethod(Tcl_Interp *interp, XOTclObject *object, + int withDefined, int withMethodtype, int withNomixins, + int withIncontext, char *pattern) { + + return ListMethods(interp, object, pattern, withDefined, 1, + AggregatedMethodType(withMethodtype), withNomixins, withIncontext); +} + static int XOTclObjInfoMethodMethod(Tcl_Interp *interp, XOTclObject *object, - int withPer_object, int subcmd, + int subcmd, char *methodName) { - Tcl_Namespace *nsPtr; - if (XOTclObjectIsClass(object)) { - XOTclClass *class = (XOTclClass *)object; - nsPtr = withPer_object ? class->object.nsPtr : class->nsPtr; - } else { - nsPtr = object->nsPtr; - } - + Tcl_Namespace *nsPtr = object->nsPtr; return ListMethod(interp, object, methodName, nsPtr ? FindMethod(nsPtr, methodName) : NULL, - subcmd, withPer_object); + subcmd, 1); } +static int XOTclClassInfoMethodMethod(Tcl_Interp *interp, XOTclClass *class, + int subcmd, + char *methodName) { + Tcl_Namespace *nsPtr = class->nsPtr; + return ListMethod(interp, &class->object, + methodName, nsPtr ? FindMethod(nsPtr, methodName) : NULL, + subcmd, 0); +} + static int XOTclObjInfoMixinMethod(Tcl_Interp *interp, XOTclObject *object, int withGuards, int withOrder, char *patternString, XOTclObject *patternObj) { if (withOrder) { Index: library/lib/xotcl1.xotcl =================================================================== diff -u -r666f7ad2cb2562f3d62fc9aea54efb9b0826f6b0 -r9ebd1309a52b27ab92e9e3cce07037767efe4a4f --- library/lib/xotcl1.xotcl (.../xotcl1.xotcl) (revision 666f7ad2cb2562f3d62fc9aea54efb9b0826f6b0) +++ library/lib/xotcl1.xotcl (.../xotcl1.xotcl) (revision 9ebd1309a52b27ab92e9e3cce07037767efe4a4f) @@ -123,20 +123,6 @@ error "[::xotcl::self] unknown info option \"$method\"; [.info info]" } - foreach cmd [::info command ::xotcl::cmd::ObjectInfo::*] { - set cmdName [namespace tail $cmd] - if {$cmdName eq "method"} continue - ::xotcl::alias ::xotcl::objectInfo $cmdName $cmd - ::xotcl::alias ::xotcl::classInfo $cmdName $cmd - } - foreach cmd [::info command ::xotcl::cmd::ClassInfo::*] { - ::xotcl::alias ::xotcl::classInfo [namespace tail $cmd] $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 - # # Backward compatibility info subcommands; # @@ -239,21 +225,21 @@ # info options emulated by "info method" .method instbody {o methodName} { - lindex [::xotcl::cmd::ObjectInfo::method $o definition $methodName] end + lindex [::xotcl::cmd::ClassInfo::method $o definition $methodName] end } # info options emulated by "info methods" .method instcommands {o {pattern:optional ""}} { - ::xotcl::cmd::ObjectInfo::methods $o -defined {*}$pattern + ::xotcl::cmd::ClassInfo::methods $o -defined {*}$pattern } .method instprocs {o {pattern:optional ""}} { - ::xotcl::cmd::ObjectInfo::methods $o -defined -methodtype scripted {*}$pattern + ::xotcl::cmd::ClassInfo::methods $o -defined -methodtype scripted {*}$pattern } .method parametercmd {o {pattern:optional ""}} { - ::xotcl::cmd::ObjectInfo::methods $o -defined -per-object -methodtype setter {*}$pattern + ::xotcl::cmd::ClassInfo::methods $o -defined -per-object -methodtype setter {*}$pattern } .method instparametercmd {o {pattern:optional ""}} { - ::xotcl::cmd::ObjectInfo::methods $o -defined -methodtype setter {*}$pattern + ::xotcl::cmd::ClassInfo::methods $o -defined -methodtype setter {*}$pattern } } @@ -264,15 +250,15 @@ # info options emulated by "info method" .method body {o methodName} { - lindex [::xotcl::cmd::ObjectInfo::method $o -per-object definition $methodName] end + lindex [::xotcl::cmd::ObjectInfo::method $o definition $methodName] end } # info options emulated by "info methods" .method commands {o {pattern:optional ""}} { - ::xotcl::cmd::ObjectInfo::methods $o -defined -per-object {*}$pattern + ::xotcl::cmd::ObjectInfo::methods $o -defined {*}$pattern } .method procs {o {pattern:optional ""}} { - ::xotcl::cmd::ObjectInfo::methods $o -defined -per-object -methodtype scripted {*}$pattern + ::xotcl::cmd::ObjectInfo::methods $o -defined -methodtype scripted {*}$pattern } .method methods { o -nocmds:switch -noprocs:switch -incontext:switch pattern:optional @@ -286,6 +272,23 @@ eval $cmd } } + + foreach cmd [::info command ::xotcl::cmd::ObjectInfo::*] { + set cmdName [namespace tail $cmd] + if {$cmdName in [list "method" "methods"]} continue + ::xotcl::alias ::xotcl::objectInfo $cmdName $cmd + ::xotcl::alias ::xotcl::classInfo $cmdName $cmd + } + foreach cmd [::info command ::xotcl::cmd::ClassInfo::*] { + set cmdName [namespace tail $cmd] + if {$cmdName in [list "method" "methods"]} 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 + # define info methods from objectInfo on classInfo as well ::xotcl::alias classInfo body objectInfo::body ::xotcl::alias classInfo commands objectInfo::commands Index: library/serialize/Serializer.xotcl =================================================================== diff -u -re767edf5c498094f6e00150541bfb7beab52b619 -r9ebd1309a52b27ab92e9e3cce07037767efe4a4f --- library/serialize/Serializer.xotcl (.../Serializer.xotcl) (revision e767edf5c498094f6e00150541bfb7beab52b619) +++ library/serialize/Serializer.xotcl (.../Serializer.xotcl) (revision 9ebd1309a52b27ab92e9e3cce07037767efe4a4f) @@ -204,14 +204,14 @@ #if {![$o istype ::xotcl::Slot]} {append cmd " -noinit"} append cmd " -noinit" append cmd " \\\n" - foreach i [::xotcl::cmd::ObjectInfo::methods $o -defined -per-object -methodtype scripted] { + foreach i [::xotcl::cmd::ObjectInfo::methods $o -defined -methodtype scripted] { append cmd " " [my method-serialize $o $i ""] " \\\n" } - foreach i [::xotcl::cmd::ObjectInfo::methods $o -defined -per-object -methodtype forward] { + foreach i [::xotcl::cmd::ObjectInfo::methods $o -defined -methodtype forward] { set fwd [concat [list forward $i] [$o info forward -definition $i]] append cmd \t [my pcmd $fwd] " \\\n" } - foreach i [::xotcl::cmd::ObjectInfo::methods $o -defined -per-object -methodtype setter] { + foreach i [::xotcl::cmd::ObjectInfo::methods $o -defined -methodtype setter] { append cmd \t [my pcmd [list parametercmd $i]] " \\\n" } set vset {} Index: tests/aliastest.xotcl =================================================================== diff -u -r666f7ad2cb2562f3d62fc9aea54efb9b0826f6b0 -r9ebd1309a52b27ab92e9e3cce07037767efe4a4f --- tests/aliastest.xotcl (.../aliastest.xotcl) (revision 666f7ad2cb2562f3d62fc9aea54efb9b0826f6b0) +++ tests/aliastest.xotcl (.../aliastest.xotcl) (revision 9ebd1309a52b27ab92e9e3cce07037767efe4a4f) @@ -109,8 +109,8 @@ ::xotcl::alias T BAR -per-object ::T::FOO ::xotcl::alias T ZAP -per-object ::T::BAR ? {T info methods -defined -methodtype scripted} {foo} -? {lsort [T info methods -defined -per-object -methodtype alias]} {BAR FOO ZAP} -? {lsort [T info methods -per-object -defined -methodtype scripted]} {BAR FOO ZAP bar} +? {lsort [T info -per-object methods -defined -methodtype alias]} {BAR FOO ZAP} +? {lsort [T info -per-object methods -defined -methodtype scripted]} {BAR FOO ZAP bar} ? {t foo} ::T->foo ? {T info alias -per-object -definition ZAP} {::T::BAR} @@ -120,38 +120,38 @@ ? {T bar} ->bar T method -per-object FOO {} {} ? {T info methods -defined -methodtype scripted} {foo} -? {lsort [T info methods -per-object -defined -methodtype scripted]} {BAR ZAP bar} +? {lsort [T info -per-object methods -defined -methodtype scripted]} {BAR ZAP bar} ? {T BAR} ->foo ? {T ZAP} ->foo rename ::T::BAR "" ? {T info methods -defined -methodtype scripted} {foo} -? {lsort [T info methods -per-object -defined -methodtype scripted]} {ZAP bar} +? {lsort [T info -per-object methods -defined -methodtype scripted]} {ZAP bar} #? {T BAR} ""; # now calling the proc defined above, alias chain seems intact ? {T ZAP} ->foo; # is ok, still pointing to 'foo' #T method -per-object BAR {} {} ? {T info methods -defined -methodtype scripted} {foo} -? {lsort [T info methods -per-object -defined -methodtype scripted]} {ZAP bar} +? {lsort [T info -per-object methods -defined -methodtype scripted]} {ZAP bar} ? {T ZAP} ->foo T method foo {} {} ? {T info methods -defined -methodtype scripted} {} -? {lsort [T info methods -per-object -defined -methodtype scripted]} {bar} +? {lsort [T info -per-object methods -defined -methodtype scripted]} {bar} # # per-object methods as per-object aliases # T method -per-object m1 args { return [self class]->[self proc] } ::xotcl::alias T M1 -per-object ::T::m1 ::xotcl::alias T M11 -per-object ::T::M1 -? {lsort [T info methods -per-object -defined -methodtype scripted]} {M1 M11 bar m1} +? {lsort [T info -per-object methods -defined -methodtype scripted]} {M1 M11 bar m1} ? {T m1} ->m1 ? {T M1} ->m1 ? {T M11} ->m1 T method -per-object M1 {} {} -? {lsort [T info methods -per-object -defined -methodtype scripted]} {M11 bar m1} +? {lsort [T info -per-object methods -defined -methodtype scripted]} {M11 bar m1} ? {T m1} ->m1 ? {T M11} ->m1 T method -per-object m1 {} {} -? {lsort [T info methods -per-object -defined -methodtype scripted]} {bar} +? {lsort [T info -per-object methods -defined -methodtype scripted]} {bar} # # a proc as alias @@ -164,7 +164,7 @@ # ! per-object alias referenced as per-class alias ! # ::xotcl::alias T BAR ::T::FOO2 -? {lsort [T info methods -per-object -defined -methodtype scripted]} {FOO2 bar} +? {lsort [T info -per-object methods -defined -methodtype scripted]} {FOO2 bar} ? {lsort [T info methods -defined -methodtype scripted]} {BAR FOO1} ? {T FOO2} ->foo ? {t FOO1} ::T->foo @@ -173,7 +173,7 @@ # delete proc # rename foo "" -? {lsort [T info methods -per-object -defined -methodtype scripted]} {bar} +? {lsort [T info -per-object methods -defined -methodtype scripted]} {bar} ? {lsort [T info methods -defined -methodtype scripted]} {} # namespaced procs + namespace deletion @@ -208,12 +208,12 @@ U method -per-object bar args { return [self class]->[self proc] } ::xotcl::alias U BAR -per-object ::U::bar -? {lsort [U info methods -per-object -defined -methodtype scripted]} {BAR ZAP bar zap} +? {lsort [U info -per-object methods -defined -methodtype scripted]} {BAR ZAP bar zap} ? {U BAR} ->bar ? {U ZAP} ->zap namespace delete ::U ? {namespace exists ::U} 0 -? {lsort [U info methods -per-object -defined -methodtype scripted]} {} +? {lsort [U info -per-object methods -defined -methodtype scripted]} {} ? {U procsearch BAR} "" ? {U procsearch ZAP} "" @@ -236,14 +236,14 @@ ::xotcl::alias V FOO1 ::foo ::xotcl::alias V FOO2 -per-object ::foo -? {lsort [V info methods -per-object -defined -methodtype scripted]} {FOO2 bar} +? {lsort [V info -per-object methods -defined -methodtype scripted]} {FOO2 bar} ? {lsort [V info methods -defined -methodtype scripted]} {FOO1 bar} ? {V FOO2} 1-1-1 ? {v FOO1} 2-2-2 V method FOO1 {} {} ? {lsort [V info methods -defined -methodtype scripted]} {bar} rename ::foo "" -? {lsort [V info methods -per-object -defined -methodtype scripted]} {bar} +? {lsort [V info -per-object methods -defined -methodtype scripted]} {bar} # Index: tests/testx.xotcl =================================================================== diff -u -r666f7ad2cb2562f3d62fc9aea54efb9b0826f6b0 -r9ebd1309a52b27ab92e9e3cce07037767efe4a4f --- tests/testx.xotcl (.../testx.xotcl) (revision 666f7ad2cb2562f3d62fc9aea54efb9b0826f6b0) +++ tests/testx.xotcl (.../testx.xotcl) (revision 9ebd1309a52b27ab92e9e3cce07037767efe4a4f) @@ -1349,11 +1349,11 @@ set r [anObject aProc] if {$i > 0} { ::errorCheck $InfoTraceResult \ - "{::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-cleanup aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-residualargs aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-configure aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-init aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instparams, instpost, instpre, instprocs, invar, is, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-recreate aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instparams, instpost, instpre, instprocs, invar, is, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-create aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::ObjectsClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::anObject-infoTraceFilter-::xotcl::Object ::ObjectsClass-aProc run-::filterInfo {-::xotcl::Object instfilter infoTraceFilter}}" \ + "{::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-cleanup aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-residualargs aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-configure aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-init aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instparams, instpost, instpre, instprocs, invar, is, method, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-recreate aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instparams, instpost, instpre, instprocs, invar, is, method, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-create aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::ObjectsClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::anObject-infoTraceFilter-::xotcl::Object ::ObjectsClass-aProc run-::filterInfo {-::xotcl::Object instfilter infoTraceFilter}}" \ "FilterInfo InfoTrace: Filter information wrong (b)" } else { ::errorCheck $InfoTraceResult \ - "{::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instparams, instpost, instpre, instprocs, invar, is, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-alloc aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-residualargs aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-configure aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-init aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instparams, instpost, instpre, instprocs, invar, is, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-create aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::ObjectsClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::anObject-infoTraceFilter-::xotcl::Object ::ObjectsClass-aProc run-::filterInfo {-::xotcl::Object instfilter infoTraceFilter}}" \ + "{::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instparams, instpost, instpre, instprocs, invar, is, method, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-alloc aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-residualargs aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-configure aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::aClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anotherObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {-::anotherObject-infoTraceFilter-::xotcl::Object ::aClass-init aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::xotcl::Class-::xotcl::classInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, classchildren, classparent, commands, default, filter, filterguard, forward, hasnamespace, heritage, info, instances, instargs, instbody, instcommands, instdefault, instfilter, instfilterguard, instforward, instinvar, instmixin, instmixinguard, instmixinof, instnonposargs, instparametercmd, instparams, instpost, instpre, instprocs, invar, is, method, methods, mixin, mixinguard, mixinof, nonposargs, parameter, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, slots, subclass, superclass, vars-class} info-::aClass {::xotcl::Class-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::aClass-infoTraceFilter-::xotcl::Object ::xotcl::Class-create aProc-::anObject {::ObjectsClass-::xotcl::Object instfilter infoTraceFilter}} {::ObjectsClass-::xotcl::objectInfo-infoTraceFilter-::xotcl::Object {valid options are: args, body, check, children, class, commands, default, filter, filterguard, forward, hasnamespace, info, invar, is, method, methods, mixin, mixinguard, nonposargs, parametercmd, params, parent, post, pre, precedence, procs, slotobjects, vars-class} info-::anObject {::xotcl::Object-::xotcl::Object instfilter infoTraceFilter}} {::anotherObject-::anObject-infoTraceFilter-::xotcl::Object ::ObjectsClass-aProc run-::filterInfo {-::xotcl::Object instfilter infoTraceFilter}}" \ "FilterInfo InfoTrace: Filter information wrong" } }