Dear Arthur,
the call protection of NX is object-centric defined, which is a strong form of protection. A protected method can be only called if the caller and the callee are the the same object. In the examples below, caller and callee differ. In the first case, the caller is an instance, the callee is the class object, in the seconds case, caller and callee are two different instances.
So, protection is in nx quite different to class centric approaches (e.g. Java/C++); it is as well different to ruby protection (where different instances of the same class can all protected methods).
So, the current behavior is as intended; in general, when you have convincing evidence, we are always open to relax the nx policy.
-gustaf neumann
Am 10.02.12 11:45, schrieb Arthur Schreiber:
Hello Gustaf,
Is not being able to call protected class methods from instances intended behaviour?
Here is a very simple test case:
package require nx
nx::Class create Greeter { :class protected method say_hi {} { puts "Hello!" }
:public method say_hi {} { [:info class] say_hi }
}
[Greeter new] say_hi
Also, protected methods can not be called from instances of the same class, e.g.:
package require nx
nx::Class create Greeter { :public method say_hi { other_greeter } { $other_greeter protected_say_hi }
:protected method protected_say_hi { } { puts "Hello!" }
}
set g1 [Greeter new]
[Greeter new] say_hi $g1
Kind Regards, Arthur _______________________________________________ Xotcl mailing list Xotcl@alice.wu-wien.ac.at http://alice.wu-wien.ac.at/mailman/listinfo/xotcl