[Xotcl] Precedence Order

Gustaf Neumann neumann at wu-wien.ac.at
Mon Sep 4 11:50:42 CEST 2006


Scott,

you can achieve the precedence you are wanting  by adding multiple 
superclasses to Derived.
In the forthcoming version (which will be named 1.5), you can even use 
"superclass add" like
in the following example.

  Class create Base
  Class create Derived -superclass Base
  Derived d
  puts [d info precedence]  ;# ==> ::Derived ::Base ::xotcl::Object

  Class create BaseMixin
  Derived superclass add BaseMixin
  puts [d info precedence]  ;#   ==> ::Derived ::BaseMixin ::Base 
::xotcl::Object

the new release is already passing the regression test. i will do some 
more test
with the aolserver+OpenAce and make it available rsn.

best regards
-gustaf

Scott Gargash schrieb:
>
> Class create Base
> Class create Derived -superclass Base
> Derived d
> d info precedence ==> ::Derived ::Base ::xotcl::Object
>
> Class create BaseMixin
> Base instmixin add BaseMixin
> d info precedence  ==> ::BaseMixin ::Derived ::Base ::xotcl::Object
>
> This behavior seems to violate encapsulation. BaseMixin is intended to 
> intercept messages to Base. Derived doesn't know about BaseMixin and 
> BaseMixin doesn't know about Derived, yet BaseMixin ends up being the 
> first interceptor of messages to Derived.
>
> Since BaseMixin is intended to modify the behavior of Base, it would 
> be better BaseMixin preceeded Base (and only Base) in the sort order.  
>
> d info precedence  ==> ::Derived ::BaseMixin ::Base ::xotcl::Object
>



More information about the Xotcl mailing list