Index: generic/predefined.h =================================================================== diff -u -rbe717fe9ef13e09dcfabf496ca61d75e4c042422 -r6b3921be54ad92034e563a09300ab2e4f49645aa --- generic/predefined.h (.../predefined.h) (revision be717fe9ef13e09dcfabf496ca61d75e4c042422) +++ generic/predefined.h (.../predefined.h) (revision 6b3921be54ad92034e563a09300ab2e4f49645aa) @@ -146,7 +146,8 @@ "foreach slot $slots {\n" "if {[::xotcl::is $obj type ::xotcl::Object] &&\n" "([$slot name] eq \"mixin\" || [$slot name] eq \"filter\")} continue\n" -"set parameterdefinition \"-[namespace tail $slot]\"\n" +"set name [namespace tail $slot]\n" +"set parameterdefinition \"-$name\"\n" "set opts [list]\n" "if {[$slot exists required] && [$slot required]} {\n" "lappend opts required}\n" @@ -158,6 +159,10 @@ "lappend opts substdefault}} elseif {[$slot exists initcmd]} {\n" "set arg [::xotcl::setinstvar $slot initcmd]\n" "lappend opts initcmd}\n" +"if {[$slot exists methodname]} {\n" +"set methodname [::xotcl::setinstvar $slot methodname]\n" +"if {$methodname ne $name} {\n" +"lappend opts arg=$methodname}}\n" "if {[llength $opts] > 0} {\n" "append parameterdefinition :[join $opts ,]}\n" "if {[info exists arg]} {\n" @@ -200,7 +205,7 @@ "$class __invalidateobjectparameter}\n" "createBootstrapAttributeSlots ::xotcl::Slot {\n" "{name \"[namespace tail [::xotcl::self]]\"}\n" -"{methodname \"[namespace tail [::xotcl::self]]\"}\n" +"{methodname}\n" "{domain \"[lindex [regexp -inline {^(.*)::slot::[^:]+$} [::xotcl::self]] 1]\"}\n" "{defaultmethods {get assign}}\n" "{manager \"[::xotcl::self]\"}\n" @@ -238,6 +243,8 @@ "if {${.domain} eq \"\"} {\n" "set .domain [::xotcl::self callingobject]}\n" "if {${.domain} ne \"\"} {\n" +"if {![info exists .methodname]} {\n" +"set .methodname ${.name}}\n" "${.domain} __invalidateobjectparameter\n" "set cl [expr {${.per-object} ? \"Object\" : \"Class\"}]\n" "::xotcl::dispatch ${.domain} ::xotcl::classes::xotcl2::${cl}::forward \\\n"