Index: generic/predefined.h =================================================================== diff -u -rf279bf06b31139084edd5136824a1e2622265e00 -reef622da1b387cfd1dd68babeb0bfecfbae5caa3 --- generic/predefined.h (.../predefined.h) (revision f279bf06b31139084edd5136824a1e2622265e00) +++ generic/predefined.h (.../predefined.h) (revision eef622da1b387cfd1dd68babeb0bfecfbae5caa3) @@ -8,7 +8,7 @@ "set cmdName [namespace tail $cmd]\n" "if {$cmdName in [list \"instvar\"]} continue\n" "::xotcl::alias Object $cmdName $cmd}\n" -"::xotcl::alias Object eval -objscope ::eval\n" +"::xotcl::alias Object eval -nonleaf ::eval\n" "foreach cmd [info command ::xotcl::cmd::Class::*] {\n" "set cmdName [namespace tail $cmd]\n" "::xotcl::alias Class $cmdName $cmd}\n" @@ -32,7 +32,7 @@ "if {[info exists precondition]} {lappend conditions -precondition $precondition}\n" "if {[info exists postcondition]} {lappend conditions -postcondition $postcondition}\n" "::xotcl::method [self] -per-object $name $arguments $body {*}$conditions}\n" -"::xotcl::dispatch Class -objscope ::eval {\n" +"Class eval {\n" ".method object {what args} {\n" "if {$what in [list \"alias\" \"forward\" \"method\" \"setter\"]} {\n" "return [::xotcl::dispatch [self] ::xotcl::classes::xotcl2::Object::$what {*}$args]}\n" @@ -46,7 +46,7 @@ "error \"Method '$m' unknown for [self].\\\n" "Consider '[self] create $m $args' instead of '[self] $m $args'\"}\n" "::xotcl::methodproperty [self] unknown protected 1}\n" -"::xotcl::dispatch Object -objscope ::eval {\n" +"Object eval {\n" ".method public {args} {\n" "set p [lsearch -regexp $args {^(method|alias|forward|setter)$}]\n" "if {$p == -1} {error \"$args is not a method defining method\"}\n" @@ -86,7 +86,7 @@ "::xotcl::setter [self] $methodName}}\n" "Object create ::xotcl2::objectInfo\n" "Object create ::xotcl2::classInfo\n" -"::xotcl::dispatch objectInfo -objscope ::eval {\n" +"objectInfo eval {\n" ".alias is ::xotcl::is\n" ".public method info {obj} {\n" "set methods [list]\n" @@ -96,7 +96,16 @@ "return \"valid options are: [join [lsort $methods] {, }]\"}\n" ".method unknown {method obj args} {\n" "error \"[::xotcl::self] unknown info option \\\"$method\\\"; [$obj info info]\"}}\n" -"::xotcl::dispatch classInfo -objscope ::eval {\n" +"classInfo eval {\n" +".public method mixinof {obj -closure:switch {-scope all} pattern:optional} {\n" +"set withClosure [expr {$closure ? \"-closure\" : \"\"}]\n" +"set withPattern [expr {[info exists pattern] ? $pattern : \"\"}]\n" +"if {$scope eq \"all\"} {\n" +"set r [::xotcl::cmd::ClassInfo::object-mixin-of $obj {*}$withClosure {*}$withPattern]\n" +"foreach c [::xotcl::cmd::ClassInfo::class-mixin-of $obj {*}$withClosure] {\n" +"lappend r {*}[$c info instances {*}$withPattern]}\n" +"return [lsort -unique $r]} else {\n" +"return [::xotcl::cmd::ClassInfo::$scope-mixin-of $obj {*}$withClosure {*}$withPattern]}}\n" ".alias is ::xotcl::is\n" ".alias classparent ::xotcl::cmd::ObjectInfo::parent\n" ".alias classchildren ::xotcl::cmd::ObjectInfo::children\n" @@ -107,6 +116,7 @@ "::xotcl::alias ::xotcl2::classInfo [namespace tail $cmd] $cmd}\n" "foreach cmd [info command ::xotcl::cmd::ClassInfo::*] {\n" "set cmdName [namespace tail $cmd]\n" +"if {$cmdName in [list \"object-mixin-of\" \"class-mixin-of\"]} continue\n" "::xotcl::alias ::xotcl2::classInfo $cmdName $cmd}\n" "unset cmd\n" "Object forward info -onerror ::xotcl::infoError ::xotcl2::objectInfo %1 {%@2 %self}\n"