Index: xotcl/library/patterns/link.xotcl =================================================================== diff -u -rf7894d9be99a8da3a04218abcdb9bd46b6d625c8 -r435b41481fb51bf000ebe736d8574fefbeec1710 --- xotcl/library/patterns/link.xotcl (.../link.xotcl) (revision f7894d9be99a8da3a04218abcdb9bd46b6d625c8) +++ xotcl/library/patterns/link.xotcl (.../link.xotcl) (revision 435b41481fb51bf000ebe736d8574fefbeec1710) @@ -1,48 +1,58 @@ -# $Id: link.xotcl,v 1.1 2004/05/23 22:50:39 neumann Exp $ +# $Id: link.xotcl,v 1.2 2005/09/09 21:07:23 neumann Exp $ + package provide xotcl::pattern::link 0.9 -# -# establish/introspect 'link' through link-instproc -# -Class Link -parameter { - {link ""} -} +package require XOTcl -Link instproc adapterFilter args { - set l [my set link] - set m [self calledproc] +namespace eval ::xotcl::pattern::link { + namespace import ::xotcl::* - # let link/destroy requests go through to the link - if {$m == "link" || $m == "destroy"} { - return [next] - } + # + # establish/introspect 'link' through link-instproc + # + Class Link -parameter { + {link ""} + } - if {[Object isobject $l]} { - puts stderr "adapting $m on link [self] -> $l" - eval $l $m $args - } else { - # if there is currently no link establish -> return - if {$l == ""} {return} - error "Link: object $l is no xotcl object" - } -} + Link instproc adapterFilter args { + set l [my set link] + set m [self calledproc] -Link instfilter adapterFilter + # let link/destroy requests go through to the link + if {$m == "link" || $m == "destroy"} { + return [next] + } -# Link L -# Class A + if {[Object isobject $l]} { + puts stderr "adapting $m on link [self] -> $l" + eval $l $m $args + } else { + # if there is currently no link establish -> return + if {$l == ""} {return} + error "Link: object $l is no xotcl object" + } + } -# L link A + Link instfilter adapterFilter -# L w + # Link L + # Class A -# w set a 45 + # L link A -# puts [w set a] + # L w -# puts [L link] + # w set a 45 -# #A destroy -# puts ----1 -# L set r 45 -# puts ----2 + # puts [w set a] + # puts [L link] + + # #A destroy + # puts ----1 + # L set r 45 + # puts ----2 + + namespace export Link +} + +namespace import ::xotcl::pattern::link::*