MOO-cows Mailing List Archive

[Prev][Next][Index][Thread]

Re: SERVER: Verbing properties



--- sir@po.cwru.edu wrote:
>Remember, all -c properties are un-overrideable (I know, it wasn't
>in the draft, I thought of it yesterday)  thus, if add_verb is called
>with a verb name that could correspond to a -c verbed property, E_PERM is
>raised.
>This means some fundamental properties are stable, with their code
>readily available.

This means that I as a nonwizard parent class owner am unable to write
code which maintains !c properties -- which is about the only kind of
properties parent class authors can manipulate!
--- end of quoted material ---

Huh?  No.  By "overrideable", we don't mean the child having a different value
than the parent, we mean that the owner of the child (not you and not a wizard)
cannot make a verb that superceeds your property.

example:
(#5 does this)
;create(#1,#5)
=> #10
;add_property(#10, "quack", "quack", {#5, "r"});
;add_property(#10, "moo", "moo!", {#5, "rc"});
=> 0
(#6 does this)
;create(#10, #6)
=> #11
;#11.quack = "moo!";
=> E_PERM
;add_property(#11, "quack", "moo!", {#6, "r"});
=> E_PERM
;add_verb(#11, {#6, "rxd", "_set_quack"}, {"this", "none", "this"});
=> E_PERM
;add_verb(#11, {#6, "rxd", "_set_qu*"}, {"this", "none", "this"});
=> E_PERM
;#11.moo = "quack";
=> "quack"
;add_property(#11, "moo", "quack", {#6, "r"});
=> E_INVARG
;add_verb(#11, {#6, "rxd", "_set_moo"}, {"this", "none", "this"});
=> 0
;add_verb(#11, {#6, "rxd", "_set_m*"}, {"this", "none", "this"});
=> 0

I think this has flexibility and security and is compatible with the the
current system.



Home | Subject Index | Thread Index