Index: TODO =================================================================== diff -u -rb9c2616a2eeb214fffba66f91b993435ac6d4045 -r16d627336b40d4eafd46400984337bf3e514605e --- TODO (.../TODO) (revision b9c2616a2eeb214fffba66f91b993435ac6d4045) +++ TODO (.../TODO) (revision 16d627336b40d4eafd46400984337bf3e514605e) @@ -2794,6 +2794,9 @@ * fixed "info slots" in xotcl2 * extended regression test +- nsf.c: require NSF_IS_SLOT_CONTAINER for slot-container + + TODO: - adding of other slotcontainer properties in copy (see nx.tcl) Index: generic/nsf.c =================================================================== diff -u -r18d88a73e8c4aed2496085bcd9202537b0f7930e -r16d627336b40d4eafd46400984337bf3e514605e --- generic/nsf.c (.../nsf.c) (revision 18d88a73e8c4aed2496085bcd9202537b0f7930e) +++ generic/nsf.c (.../nsf.c) (revision 16d627336b40d4eafd46400984337bf3e514605e) @@ -10681,7 +10681,7 @@ slotContainerObject = GetObjectFromString(interp, Tcl_DStringValue(dsPtr)); if (slotContainerObject && slotContainerObject->nsPtr && - //(slotContainerObject->flags & NSF_IS_SLOT_CONTAINER) && + (slotContainerObject->flags & NSF_IS_SLOT_CONTAINER) && 1) { Tcl_HashSearch hSrch; Tcl_HashEntry *hPtr; Index: library/nx/nx.tcl =================================================================== diff -u -r18d88a73e8c4aed2496085bcd9202537b0f7930e -r16d627336b40d4eafd46400984337bf3e514605e --- library/nx/nx.tcl (.../nx.tcl) (revision 18d88a73e8c4aed2496085bcd9202537b0f7930e) +++ library/nx/nx.tcl (.../nx.tcl) (revision 16d627336b40d4eafd46400984337bf3e514605e) @@ -1521,7 +1521,6 @@ # attributes based on a list of parameter specifications. ################################################################## Class public method attributes arglist { - puts stderr "+++ attributes calls nx::slotObj" set slotContainer [::nx::slotObj [::nsf::self]] foreach arg $arglist { ::nx::MetaSlot createFromParameterSpec [::nsf::self] {*}$arg Index: library/xotcl/library/xotcl2.tcl =================================================================== diff -u -rb9c2616a2eeb214fffba66f91b993435ac6d4045 -r16d627336b40d4eafd46400984337bf3e514605e --- library/xotcl/library/xotcl2.tcl (.../xotcl2.tcl) (revision b9c2616a2eeb214fffba66f91b993435ac6d4045) +++ library/xotcl/library/xotcl2.tcl (.../xotcl2.tcl) (revision 16d627336b40d4eafd46400984337bf3e514605e) @@ -396,12 +396,12 @@ proc register_system_slots {os} { # We need explicit ::xotcl prefixes, since they are always skipped # if not specified - ${os}::Object alloc ${os}::Class::slot - ${os}::Object alloc ${os}::Object::slot + ::nx::slotObj ${os}::Class + ::nx::slotObj ${os}::Object ::nx::RelationSlot create ${os}::Class::slot::superclass - ::nsf::method::alias ${os}::Class::slot::superclass assign ::nsf::relation + ::nsf::method::alias ${os}::Class::slot::superclass assign ::nsf::relation ::nx::RelationSlot create ${os}::Object::slot::class - ::nsf::method::alias ${os}::Object::slot::class assign ::nsf::relation + ::nsf::method::alias ${os}::Object::slot::class assign ::nsf::relation ::nx::RelationSlot create ${os}::Object::slot::mixin \ -forwardername object-mixin ::nx::RelationSlot create ${os}::Object::slot::filter \ @@ -749,12 +749,15 @@ [::nsf::dispatch [self] ::nsf::methods::object::info::hastype $class]}] } - # definition of "contains", based on nx - + # definition of "xotcl::Object contains", based on nx ::nsf::method::alias Object contains ::nsf::classes::nx::Object::contains - ::xotcl::Class instforward slots %self contains \ - -object {%::nsf::dispatch [::xotcl::self] -frame method ::subst [::xotcl::self]::slot} + # definition of "xotcl::Class slots", based on contains + ::xotcl::Class instproc slots {cmd} { + set slotContainer [::nx::slotObj [self]] + uplevel [list [self] contains -object $slotContainer $cmd] + } + # assertion handling proc checkoption_xotcl1_to_internal checkoptions { set options [list] Index: library/xotcl/tests/speedtest.xotcl =================================================================== diff -u -re02cb00ae815bd6f8561a6a03fceacc13fd91903 -r16d627336b40d4eafd46400984337bf3e514605e --- library/xotcl/tests/speedtest.xotcl (.../speedtest.xotcl) (revision e02cb00ae815bd6f8561a6a03fceacc13fd91903) +++ library/xotcl/tests/speedtest.xotcl (.../speedtest.xotcl) (revision 16d627336b40d4eafd46400984337bf3e514605e) @@ -15,7 +15,7 @@ #set ocount 1014 #set ocount [expr {$ccount + 206}] #set ocount [expr {$ccount + 15}] -set ocount [expr {$ccount + 7}] +set ocount [expr {$ccount + 5}] Class M1; Class M2 Class C -parameter {{p 99} {q 98} r} Index: library/xotcl/tests/testx.xotcl =================================================================== diff -u -r1f7ecfcf5b0643ce05b96405c77d5da7fe10268e -r16d627336b40d4eafd46400984337bf3e514605e --- library/xotcl/tests/testx.xotcl (.../testx.xotcl) (revision 1f7ecfcf5b0643ce05b96405c77d5da7fe10268e) +++ library/xotcl/tests/testx.xotcl (.../testx.xotcl) (revision 16d627336b40d4eafd46400984337bf3e514605e) @@ -2899,11 +2899,11 @@ append ::recreateResult "[C info instprocs] +" if {$i > 0} { errorCheck [set ::recreateResult] \ - "*recreate ::xotcl::Class ::R* *recreate ::xotcl::Class <::R> ::R * *recreate ::C ::c1 -b 2* *recreate ::C <::c1> ::c1 * +b, +*recreate ::xotcl::Class ::C* *recreate ::xotcl::Class <::C> ::C * +w, +" \ + "*recreate ::xotcl::Class ::R* *recreate ::xotcl::Class <::R> ::R * *recreate ::C ::c1 -b 2* *recreate ::C <::c1> ::c1 * +b, +*recreate ::xotcl::Class ::C* *recreate ::xotcl::Class <::C> ::C * +w __default_superclass __default_metaclass, +" \ "Var/proc recreate delete failed (n)" } else { errorCheck [set ::recreateResult] \ - "*recreate ::C ::c1 -b 2* *recreate ::C <::c1> ::c1 * +b, +*recreate ::xotcl::Class ::C* *recreate ::xotcl::Class <::C> ::C * +w, +" \ + "*recreate ::C ::c1 -b 2* *recreate ::C <::c1> ::c1 * +b, +*recreate ::xotcl::Class ::C* *recreate ::xotcl::Class <::C> ::C * +w __default_superclass __default_metaclass, +" \ "Var/proc recreate delete failed (0)" } global recreateMixinResult @@ -3171,7 +3171,7 @@ ::errorCheck [lsort [b info methods -nocmds -nomixins]] "abstract check extractConfigureArg f filtersearch forward hasclass init isclass ismetaclass ismixin isobject istype method myProc myProc2 objproc proc procsearch self setFilter signature unknown vwait" "b info methods -nocmds -nomixins" ::errorCheck [b info methods -nocmds -noprocs] "" "b info methods -nocmds -noprocs" - ::errorCheck [lsort [B info methods -nocmds]] "abstract allinstances check extractConfigureArg f filtersearch forward hasclass init instforward instproc isclass ismetaclass ismixin isobject istype method objectparameter proc procsearch self setFilter signature unknown uses vwait" "B info methods -nocmds" + ::errorCheck [lsort [B info methods -nocmds]] "abstract allinstances check extractConfigureArg f filtersearch forward hasclass init instforward instproc isclass ismetaclass ismixin isobject istype method objectparameter proc procsearch self setFilter signature slots unknown uses vwait" "B info methods -nocmds" namespace eval a { proc o args {return o}