Index: xotcl/generic/predefined.h =================================================================== diff -u -rad8a63234e44a8788efede276e811051ab891fbe -r78e82b3563a644f2df47320eacc693f1b788b03c --- xotcl/generic/predefined.h (.../predefined.h) (revision ad8a63234e44a8788efede276e811051ab891fbe) +++ xotcl/generic/predefined.h (.../predefined.h) (revision 78e82b3563a644f2df47320eacc693f1b788b03c) @@ -1,11 +1,12 @@ static char cmd[] = -"# $Id: predefined.h,v 1.8 2005/09/09 21:09:01 neumann Exp $\n" +"# $Id: predefined.h,v 1.9 2006/02/18 22:17:33 neumann Exp $\n" "::xotcl::Object instproc init args {}\n" "::xotcl::Object create ::xotcl::@\n" "::xotcl::@ proc unknown args {}\n" "namespace eval ::xotcl { namespace export @ }\n" -"foreach cmd {array append lappend trace eval} {\n" +"foreach cmd {array append lappend trace eval unset} {\n" "::xotcl::Object instforward $cmd -objscope}\n" +"unset cmd\n" "::xotcl::Object instproc tclcmd {t} {\n" "set cmd [list [::xotcl::self] forward $t -objscope]\n" "puts stderr \"the method [::xotcl::self proc] is deprecated; use instead '$cmd'\"\n" @@ -19,7 +20,7 @@ "::xotcl::Relations instproc set {obj prop value} {::xotcl::setrelation $obj $prop $value}\n" "::xotcl::Relations instproc add {obj prop value {pos 0}} {\n" "$obj $prop [linsert [$obj info $prop -guards] $pos $value]}\n" -"::xotcl::Relations instproc delete {obj prop value} {\n" +"::xotcl::Relations instproc delete {-nocomplain:switch obj prop value} {\n" "set old [$obj info $prop]\n" "set p [lsearch -glob $old $value]\n" "if {$p>-1} {$obj $prop [lreplace $old $p $p]} else {\n" @@ -90,15 +91,23 @@ "::xotcl::my set access $obj\n" "::xotcl::my set extra \\[::xotcl::self\\]\n" "foreach v [$obj info vars] {::xotcl::my set $v [$obj set $v]}}\n" -"::xotcl::Class::Parameter proc mkGetterSetter {cl name args} {\n" -"set l [llength $args]\n" -"if {$l == 0} {\n" -"$cl instparametercmd $name} elseif {$l == 1} {\n" -"$cl set __defaults($name) [lindex $args 0]\n" -"$cl instparametercmd $name} else {\n" +"::xotcl::Class::Parameter proc mkGetterSetter {cl arg args} {\n" +"set name [lindex $arg 0]\n" +"if {$name eq $arg} {\n" +"$cl instparametercmd $name\n" +"return}\n" +"if {[llength $arg] == 2} {\n" +"$cl set __defaults($name) [lindex $arg 1]\n" +"$cl instparametercmd $name\n" +"return}\n" +"set paramstring [string range $arg [expr {[string length $name]+1}] end]\n" +"if {[string match {[$\\[]*} $paramstring]} {\n" +"$cl set __defaults($name) $paramstring\n" +"$cl instparametercmd $name\n" +"return}\n" "::xotcl::my set name $name\n" "::xotcl::my set cl $cl\n" -"::eval ::xotcl::my configure $args\n" +"::eval ::xotcl::my configure [lrange $arg 1 end]\n" "if {[::xotcl::my exists extra] || [::xotcl::my exists setter] ||\n" "[::xotcl::my exists getter] || [::xotcl::my exists access]} {\n" "::xotcl::my instvar extra setter getter access defaultParam\n" @@ -113,7 +122,7 @@ "return \\[eval $access $setter $extra $name \\$args $defaultParam \\]}\"\n" "foreach instvar {extra defaultParam setter getter access} {\n" "if {[::xotcl::my exists $instvar]} {::xotcl::my unset $instvar}}} else {\n" -"$cl instparametercmd $name}}}\n" +"$cl instparametercmd $name}}\n" "::xotcl::Class::Parameter proc values {param args} {\n" "set cl [::xotcl::my set cl]\n" "set ci [$cl info instinvar]\n" @@ -346,5 +355,12 @@ "set loaded($pkg) $v ;# loaded stuff needed for Tcl 8.0}}\n" "set component $prevComponent\n" "return $v}\n" +"::xotcl::Object instproc method {name arguments body} {\n" +"my proc name $arguments $body }\n" +"::xotcl::Class instproc method {\n" +"-per-object:switch name arguments body} {\n" +"if {${per-object}} {\n" +"my proc $name $arguments $body} else {\n" +"my instproc $name $arguments $body}}\n" "";