Index: library/nx/nx.tcl =================================================================== diff -u -r0ae1c72ceda94c7f6c99b86a1d7f14eaaef12e78 -r6fd5b9d632efe378ecf7df0ecfb0a2ef6b39b7c1 --- library/nx/nx.tcl (.../nx.tcl) (revision 0ae1c72ceda94c7f6c99b86a1d7f14eaaef12e78) +++ library/nx/nx.tcl (.../nx.tcl) (revision 6fd5b9d632efe378ecf7df0ecfb0a2ef6b39b7c1) @@ -547,50 +547,52 @@ # # Method for deletion of properties, variables and plain methods # - Object public method "delete property" {name} { - # call explicitly the per-object variant of "info::slotobjects" - set slot [: ::nsf::methods::object::info::slotobjects -type ::nx::Slot $name] - if {$slot eq ""} {error "[self]: cannot delete object specific property '$name'"} - $slot destroy - nsf::var::unset -nocomplain [self] $name - } - Object public method "delete variable" {name} { - # First remove the instance variable and complain, if it does - # not exist. - if {[nsf::var::exists [self] $name]} { - nsf::var::unset [self] $name - } else { - error "[self]: object does not have an instance variable '$name'" + Object eval { + + :public method "delete object method" {name} { + ::nsf::method::delete [self] -per-object $name } - # call explicitly the per-object variant of "info::slotobejcts" - set slot [: ::nsf::methods::object::info::slotobjects -type ::nx::Slot $name] - if {$slot ne ""} { - # it is not a slot-less variable + :public method "delete object property" {name} { + # call explicitly the per-object variant of "info::slotobjects" + set slot [: ::nsf::methods::object::info::slotobjects -type ::nx::Slot $name] + if {$slot eq ""} {error "[self]: cannot delete object specific property '$name'"} $slot destroy + nsf::var::unset -nocomplain [self] $name } - } - Object public method "delete method" {name} { - ::nsf::method::delete [self] -per-object $name - } - Class public method "delete property" {name} { - set slot [:info slots $name] - if {$slot eq ""} {error "[self]: cannot delete property '$name'"} - $slot destroy + :public method "delete object variable" {name} { + # First remove the instance variable and complain, if it does + # not exist. + if {[nsf::var::exists [self] $name]} { + nsf::var::unset [self] $name + } else { + error "[self]: object does not have an instance variable '$name'" + } + # call explicitly the per-object variant of "info::slotobejcts" + set slot [: ::nsf::methods::object::info::slotobjects -type ::nx::Slot $name] + + if {$slot ne ""} { + # it is not a slot-less variable + $slot destroy + } + } } - Class public alias "delete variable" ::nx::Class::slot::__delete::property - Class public method "delete method" {name} { - ::nsf::method::delete [self] $name - } - # - # provide aliases for "class delete" - # - ::nx::Class eval { - :alias "delete object property" ::nx::Object::slot::__delete::property - :alias "delete object variable" ::nx::Object::slot::__delete::variable - :alias "delete object method" ::nx::Object::slot::__delete::method + Class eval { + :public method "delete method" {name} { + ::nsf::method::delete [self] $name + } + :public method "delete property" {name} { + set slot [:info slots $name] + if {$slot eq ""} {error "[self]: cannot delete property '$name'"} + $slot destroy + } + :public method "delete variable" {name} { + set slot [:info slots $name] + if {$slot eq ""} {error "[self]: cannot delete variable '$name'"} + $slot destroy + } } ######################################################################