Index: generic/predefined.h =================================================================== diff -u -rf4471765bb7aec8c793b5e365499726619119f63 -rf11b03a9a764254c5a1ba45480ebf5eb19e2bf8d --- generic/predefined.h (.../predefined.h) (revision f4471765bb7aec8c793b5e365499726619119f63) +++ generic/predefined.h (.../predefined.h) (revision f11b03a9a764254c5a1ba45480ebf5eb19e2bf8d) @@ -31,11 +31,11 @@ "::xotcl::alias ::xotcl::classInfo [namespace tail $cmd] $cmd}\n" "foreach cmd [info command ::xotcl::cmd::ClassInfo::*] {\n" "::xotcl::alias ::xotcl::classInfo [namespace tail $cmd] $cmd}\n" +"unset cmd\n" "::xotcl::alias ::xotcl::objectInfo is ::xotcl::is\n" "::xotcl::alias ::xotcl::classInfo is ::xotcl::is\n" "::xotcl::alias ::xotcl::classInfo classparent ::xotcl::cmd::ObjectInfo::parent\n" "::xotcl::alias ::xotcl::classInfo classchildren ::xotcl::cmd::ObjectInfo::children\n" -"unset cmd\n" "::xotcl::Object instforward info -onerror ::xotcl::infoError ::xotcl::objectInfo %1 {%@2 %self}\n" "::xotcl::Class instforward info -onerror ::xotcl::infoError ::xotcl::classInfo %1 {%@2 %self}\n" "proc ::xotcl::infoError msg {\n" @@ -61,6 +61,41 @@ "return \"valid options are: [join [lsort $methods] {, }]\"}\n" "::xotcl::classInfo proc unknown {method args} {\n" "error \"unknown info option \\\"$method\\\"; [my info info]\"}\n" +"proc ::xotcl::info_args {inst o method} {\n" +"set result [list]\n" +"foreach \\\n" +"argName [::xotcl::classInfo ${inst}params $o $method -varNames] \\\n" +"flag [::xotcl::classInfo ${inst}params $o $method] {\n" +"if {[string match -* $flag]} continue\n" +"lappend result $argName}\n" +"return $result}\n" +"proc ::xotcl::info_nonposargs {inst o method} {\n" +"set result [list]\n" +"foreach flag [::xotcl::classInfo ${inst}params $o $method] {\n" +"if {![string match -* $flag]} continue\n" +"lappend result $flag}\n" +"return $result}\n" +"proc ::xotcl::info_default {inst o method arg varName} {\n" +"foreach \\\n" +"argName [::xotcl::classInfo ${inst}params $o $method -varNames] \\\n" +"flag [::xotcl::classInfo ${inst}params $o $method] {\n" +"if {$argName eq $arg} {\n" +"upvar 3 $varName default\n" +"if {[llength $flag] == 2} {\n" +"set default [lindex $flag 1]\n" +"return 1}\n" +"set default \"\"\n" +"return 0}}\n" +"error \"procedure \\\"$method\\\" doesn't have an argument \\\"$varName\\\"\"}\n" +"::xotcl::classInfo proc instargs {o method} {::xotcl::info_args inst $o $method}\n" +"::xotcl::classInfo proc args {o method} {::xotcl::info_args \"\" $o $method}\n" +"::xotcl::objectInfo proc args {o method} {::xotcl::info_args \"\" $o $method}\n" +"::xotcl::classInfo proc instnonposargs {o method} {::xotcl::info_nonposargs inst $o $method}\n" +"::xotcl::classInfo proc nonposargs {o method} {::xotcl::info_nonposargs \"\" $o $method}\n" +"::xotcl::objectInfo proc nonposargs {o method} {::xotcl::info_nonposargs \"\" $o $method}\n" +"::xotcl::classInfo proc instdefault {o method arg var} {::xotcl::info_default inst $o $method $arg $var}\n" +"::xotcl::classInfo proc default {o method arg var} {::xotcl::info_default \"\" $o $method $arg $var}\n" +"::xotcl::objectInfo proc default {o method arg var} {::xotcl::info_default \"\" $o $method $arg $var}\n" "::xotcl::Object create ::xotcl::@\n" "::xotcl::@ proc unknown args {}\n" "proc ::xotcl::myproc {args} {linsert $args 0 [::xotcl::self]}\n"