Index: TODO =================================================================== diff -u -rda4e73b942671915977ec9475b88a17a325c9222 -r8b8e75e010beae46adb99f4902ca80c50b1a6825 --- TODO (.../TODO) (revision da4e73b942671915977ec9475b88a17a325c9222) +++ TODO (.../TODO) (revision 8b8e75e010beae46adb99f4902ca80c50b1a6825) @@ -3658,6 +3658,7 @@ - example scripts: added tk-mini and tk-horse-race +- make "/object/ require" an ensemble method TODO: Index: library/nx/nx.tcl =================================================================== diff -u -r6ec717176dee759bf70840eabb6b5728229ed8f9 -r8b8e75e010beae46adb99f4902ca80c50b1a6825 --- library/nx/nx.tcl (.../nx.tcl) (revision 6ec717176dee759bf70840eabb6b5728229ed8f9) +++ library/nx/nx.tcl (.../nx.tcl) (revision 8b8e75e010beae46adb99f4902ca80c50b1a6825) @@ -362,43 +362,6 @@ } ###################################################################### - # Provide method "require" - ###################################################################### - - Object method require {what args} { - switch -- $what { - public - - protected { - set next [lindex $args 0] - if {$next ni {"class" "method"}} { - error "public or procected must be followed by 'class' or 'method'" - } - set result [:require {*}$args] - #puts stderr "[list :require {*}$args] => $result" - ::nsf::method::property [self] $result call-protected [expr {$what eq "protected"}] - return $result - } - class { - set what [lindex $args 0] - if {$what ne "method"} { - error "'class' must be followed by 'method'" - } - set methodName [lindex $args 1] - ::nsf::method::require [::nsf::self] $methodName 1 - return [:info lookup method $methodName] - } - method { - set methodName [lindex $args 0] - return [::nsf::method::require [::nsf::self] $methodName 0] - } - namespace { - ::nsf::directdispatch [::nsf::self] ::nsf::methods::object::requirenamespace - } - } - } - - - ###################################################################### # Basic definitions for slots ###################################################################### # @@ -558,6 +521,51 @@ :alias "class delete variable" ::nx::Object::slot::__delete::variable :alias "class delete method" ::nx::Object::slot::__delete::method } + + ###################################################################### + # Provide method "require" + ###################################################################### + Object eval { + :method "require namespace" {} { + ::nsf::directdispatch [::nsf::self] ::nsf::methods::object::requirenamespace + } + # + # method require, base cases + # + :method "require method" {methodName} { + return [::nsf::method::require [::nsf::self] $methodName 0] + } + :method "require class method" {methodName} { + ::nsf::method::require [::nsf::self] $methodName 1 + return [:info lookup method $methodName] + } + # + # method require, explicit public + # + :method "require public method" {methodName} { + set result [:require method $methodName] + ::nsf::method::property [self] $result call-protected false + return $result + } + :method "require public class method" {methodName} { + set result [:require class method $methodName] + ::nsf::method::property [self] $result call-protected false + return $result + } + # + # method require, explicit protected + # + :method "require protected method" {methodName} { + set result [:require method $methodName] + ::nsf::method::property [self] $result call-protected true + return $result + } + :method "require protected class method" {methodName} { + set result [:require class method $methodName] + ::nsf::method::property [self] $result call-protected true + return $result + } + } ###################################################################### # Info definition