Index: generic/predefined.h =================================================================== diff -u -r5577ecfb071377c5e04f81074e25e2707d2c1400 -r15d57478e3976d747741fd3df9bcb6ecccc7076d --- generic/predefined.h (.../predefined.h) (revision 5577ecfb071377c5e04f81074e25e2707d2c1400) +++ generic/predefined.h (.../predefined.h) (revision 15d57478e3976d747741fd3df9bcb6ecccc7076d) @@ -2,6 +2,26 @@ "namespace eval ::nsf {\n" "namespace export next current\n" "namespace export alias configure finalize interp is my relation\n" +"proc ::nsf::provide_method {require_name definition {script \"\"}} {\n" +"set ::nsf::methodIndex($require_name) [list definition $definition script $script]}\n" +"proc ::nsf::require_method {object name {per_object 0}} {\n" +"set key ::nsf::methodIndex($name)\n" +"if {[info exists $key]} {\n" +"array set \"\" [set $key]\n" +"if {$(script) ne \"\"} {\n" +"eval $(script)}\n" +"if {$per_object} {\n" +"set cmd [linsert $(definition) 1 -per-object]\n" +"eval [linsert $cmd 1 $object]} else {\n" +"eval [linsert $(definition) 1 $object]}} else {\n" +"error \"cannot require method $name for $object, method unknown\"}}\n" +"proc ::nsf::mixin {object args} {\n" +"if {[lindex $args 0] eq \"-per-object\"} {\n" +"set rel \"object-mixin\"\n" +"set args [lrange $args 1 end]} else {\n" +"set rel \"mixin\"}\n" +"set oldSetting [::nsf::relation $object $rel]\n" +"uplevel [list ::nsf::relation $object $rel [linsert $oldSetting end $args]]}\n" "proc ::nsf::infoError msg {\n" "regsub -all \" \" $msg \"\" msg\n" "regsub -all \" \" $msg \"\" msg\n"