No registered users in community xowiki
in last 10 minutes
in last 10 minutes
Re: [Xotcl] Help with Filters. Resubmission.
From: Sheik Yussuff <sheik_at_carib-link.net>
Date: Mon, 17 Dec 2001 16:39:04 -0400
Sorry guys. The problem as described was with ver 0.85.
Version 0.91 now behaves as Uwe explained!!
For ver 0.85, the behaviour as originally described (my problem) fits
with the reply from Rick Hedin.
Things seems to have changed from ver 0.85 to 0.91 with regards to filters
- now instfilters. I prefer the previous behaviour, if I am correct with in
my
conception, of course.
Thanks for your help.
--sheik
----- Original Message -----
From: Uwe Zdun <uwe.zdun_at_uni-essen.de>
To: <Xotcl_at_alice.wu-wien.ac.at>
Sent: Monday, December 17, 2001 12:40 PM
Subject: Re: [Xotcl] Help with Filters. Resubmission.
> The problem below is that a filter (like a mixin) is only called if a
method
> to be dispatched exists for an object ... maa does not exist for A's
objects,
> therefore, the filter is not called, but unknown is called. The standard
> unknown raises the error here. You can test this by adding a custom
unknown
> to A (of course you can also handle the delegation in unknown):
>
> A instproc unknown args {
> puts "unknown $args --> error"
> next
> }
>
>
> On Saturday 15 December 2001 16:28, Sheik Yussuff wrote:
> > Below is nonsensical sample code to illustrate a problem I
> > am having with filters. On invocation of:
> > a mb (see code section below)
> > 1. Object a is sent the message mb(not an instproc) of A
> > 2. Filter af of object a intercepts and
> > dispatches message mbb to object b
> > 3. Filter bf of object b intercepts and
> > redispatches message maa to object a
> > This time the filter af does not intercept message maa!!
> > The message maa is sent directly to object a with
> > the resulting error: object a unable to dispatch
> > method maa.
> >
> > Can anyone assist me in explaining what is happening here?
> > ------------------------------------------------------------
> > #Code: Win 98 version 0.91; got same problem with ver 0.85 3 months ago.
> >
> > Class A -parameter {delegate}
> >
> > A instproc af args {
> > set method [self calledproc]
> > if {[[self] exists delegate]} {
> > set del [[self] set delegate]
> > if {$method == "maa"} {
> > return [eval $del mbb]
> > }
> > if {$method != "ma"} {
> > return [eval $del $method $args]
> > }
> > }
> > next
> > }
> >
> > A instfilter {af}
> >
> > A instproc ma args {
> > puts "method ma of A"
> > }
> >
> >
> > Class B
> > B instproc bf args {
> > set sender [self callingobject]
> > set method [self calledproc]
> > puts "method is: $method"
> > if {$method == "mb"} {
> >
> > return [eval $sender maa]
> > }
> > next
> > }
> >
> > B instfilter bf
> >
> > B instproc mb args {
> > puts "method mb of B"
> > }
> >
> > B instproc mbb args {
> > puts "method mbb of B"
> > }
> >
> > B b
> > A a
> > a delegate b
> > #a ma ; #works ok
> > a mb
> >
> >
> >
> > _______________________________________________
> > Xotcl mailing list - Xotcl_at_alice.wu-wien.ac.at
> > http://alice.wu-wien.ac.at/mailman/listinfo/xotcl
>
> --
> Uwe Zdun
> Institute for Computer Science, University of Essen
> Phone: +49 201 81 00 332, Fax: +49 201 81 00 398
> zdun_at_{xotcl,computer,acm}.org, uwe.zdun_at_uni-essen.de
> _______________________________________________
> Xotcl mailing list - Xotcl_at_alice.wu-wien.ac.at
> http://alice.wu-wien.ac.at/mailman/listinfo/xotcl
Date: Mon, 17 Dec 2001 16:39:04 -0400
Sorry guys. The problem as described was with ver 0.85.
Version 0.91 now behaves as Uwe explained!!
For ver 0.85, the behaviour as originally described (my problem) fits
with the reply from Rick Hedin.
Things seems to have changed from ver 0.85 to 0.91 with regards to filters
- now instfilters. I prefer the previous behaviour, if I am correct with in
my
conception, of course.
Thanks for your help.
--sheik
----- Original Message -----
From: Uwe Zdun <uwe.zdun_at_uni-essen.de>
To: <Xotcl_at_alice.wu-wien.ac.at>
Sent: Monday, December 17, 2001 12:40 PM
Subject: Re: [Xotcl] Help with Filters. Resubmission.
> The problem below is that a filter (like a mixin) is only called if a
method
> to be dispatched exists for an object ... maa does not exist for A's
objects,
> therefore, the filter is not called, but unknown is called. The standard
> unknown raises the error here. You can test this by adding a custom
unknown
> to A (of course you can also handle the delegation in unknown):
>
> A instproc unknown args {
> puts "unknown $args --> error"
> next
> }
>
>
> On Saturday 15 December 2001 16:28, Sheik Yussuff wrote:
> > Below is nonsensical sample code to illustrate a problem I
> > am having with filters. On invocation of:
> > a mb (see code section below)
> > 1. Object a is sent the message mb(not an instproc) of A
> > 2. Filter af of object a intercepts and
> > dispatches message mbb to object b
> > 3. Filter bf of object b intercepts and
> > redispatches message maa to object a
> > This time the filter af does not intercept message maa!!
> > The message maa is sent directly to object a with
> > the resulting error: object a unable to dispatch
> > method maa.
> >
> > Can anyone assist me in explaining what is happening here?
> > ------------------------------------------------------------
> > #Code: Win 98 version 0.91; got same problem with ver 0.85 3 months ago.
> >
> > Class A -parameter {delegate}
> >
> > A instproc af args {
> > set method [self calledproc]
> > if {[[self] exists delegate]} {
> > set del [[self] set delegate]
> > if {$method == "maa"} {
> > return [eval $del mbb]
> > }
> > if {$method != "ma"} {
> > return [eval $del $method $args]
> > }
> > }
> > next
> > }
> >
> > A instfilter {af}
> >
> > A instproc ma args {
> > puts "method ma of A"
> > }
> >
> >
> > Class B
> > B instproc bf args {
> > set sender [self callingobject]
> > set method [self calledproc]
> > puts "method is: $method"
> > if {$method == "mb"} {
> >
> > return [eval $sender maa]
> > }
> > next
> > }
> >
> > B instfilter bf
> >
> > B instproc mb args {
> > puts "method mb of B"
> > }
> >
> > B instproc mbb args {
> > puts "method mbb of B"
> > }
> >
> > B b
> > A a
> > a delegate b
> > #a ma ; #works ok
> > a mb
> >
> >
> >
> > _______________________________________________
> > Xotcl mailing list - Xotcl_at_alice.wu-wien.ac.at
> > http://alice.wu-wien.ac.at/mailman/listinfo/xotcl
>
> --
> Uwe Zdun
> Institute for Computer Science, University of Essen
> Phone: +49 201 81 00 332, Fax: +49 201 81 00 398
> zdun_at_{xotcl,computer,acm}.org, uwe.zdun_at_uni-essen.de
> _______________________________________________
> Xotcl mailing list - Xotcl_at_alice.wu-wien.ac.at
> http://alice.wu-wien.ac.at/mailman/listinfo/xotcl