Index: generic/predefined.h =================================================================== diff -u -r9ebd1309a52b27ab92e9e3cce07037767efe4a4f -r8f79347327f3c5f73faf86e87ebd6c8306265fbb --- generic/predefined.h (.../predefined.h) (revision 9ebd1309a52b27ab92e9e3cce07037767efe4a4f) +++ generic/predefined.h (.../predefined.h) (revision 8f79347327f3c5f73faf86e87ebd6c8306265fbb) @@ -94,6 +94,8 @@ "set parameterdefinitions [list]\n" "set slots [::xotcl2::objectInfo slotobjects $obj]\n" "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 opts [list]\n" "if {[$slot exists required] && [$slot required]} {\n" @@ -117,7 +119,10 @@ "set parameterdefinitions [::xotcl::parametersFromSlots [self]]\n" "if {[::xotcl::is [self] class]} {\n" "lappend parameterdefinitions -parameter:method,optional}\n" -"lappend parameterdefinitions -noinit:method,optional,noarg -volatile:method,optional,noarg arg:initcmd,optional\n" +"lappend parameterdefinitions \\\n" +"-noinit:method,optional,noarg \\\n" +"-volatile:method,optional,noarg \\\n" +"arg:initcmd,optional\n" "return $parameterdefinitions}\n" "::xotcl2::Class create ::xotcl2::ParameterType\n" "foreach cmd [info command ::xotcl::cmd::ParameterType::*] {\n" @@ -150,6 +155,7 @@ "{manager \"[::xotcl::self]\"}\n" "{multivalued false}\n" "{per-object false}\n" +"{forward-per-object}\n" "{required false}\n" "default\n" "type}\n" @@ -184,16 +190,19 @@ "${.domain} invalidateobjectparameter\n" "::xotcl::dispatch ${.domain} ::xotcl::cmd::Class::forward \\\n" "{*}[expr {${.per-object} ? \"-per-object\" : \"\"}] ${.name} \\\n" -"-default [${.manager} defaultmethods] ${.manager} %1 %self %proc}}\n" +"-default [${.manager} defaultmethods] ${.manager} %1 %self \\\n" +"{*}[expr {[info exists .forward-per-object] ? \"-per-object\" : \"\"}] \\\n" +"%proc}}\n" "::xotcl::MetaSlot create ::xotcl::InfoSlot\n" "createBootstrapAttributeSlots ::xotcl::InfoSlot {\n" "{multivalued true}\n" "{elementtype ::xotcl2::Class}}\n" "::xotcl::relation ::xotcl::InfoSlot superclass ::xotcl::Slot\n" -"::xotcl::InfoSlot method get {obj prop} {$obj info $prop}\n" -"::xotcl::InfoSlot method add {obj prop value {pos 0}} {\n" +"::xotcl::InfoSlot method get {obj -per-object:switch prop} {$obj info $prop}\n" +"::xotcl::InfoSlot method add {obj -per-object:switch prop value {pos 0}} {\n" "if {![set .multivalued]} {\n" "error \"Property $prop of ${.domain}->$obj ist not multivalued\"}\n" +"puts stderr \"adding infoslot: $obj $prop [linsert [$obj info $prop] $pos $value]\"\n" "$obj $prop [linsert [$obj info $prop] $pos $value]}\n" "::xotcl::InfoSlot method delete {-nocomplain:switch obj prop value} {\n" "set old [$obj info $prop]\n" @@ -215,7 +224,7 @@ "::xotcl::relation ::xotcl::InterceptorSlot superclass ::xotcl::InfoSlot\n" "::xotcl::alias ::xotcl::InterceptorSlot set ::xotcl::relation ;# for backwards compatibility\n" "::xotcl::alias ::xotcl::InterceptorSlot assign ::xotcl::relation\n" -"::xotcl::InterceptorSlot method add {obj prop value {pos 0}} {\n" +"::xotcl::InterceptorSlot method add {obj -per-object:switch prop value {pos 0}} {\n" "if {![set .multivalued]} {\n" "error \"Property $prop of ${.domain}->$obj ist not multivalued\"}\n" "$obj $prop [linsert [$obj info $prop -guards] $pos $value]}\n"