Hi,
In order to use Lieberman prototypes, in the examples a fix is applied to the
send macro, in order to make it use the libid_bind2 function. This is done in
the send2.h header, by redefining the macro.
However, I get the impression that this is only a half solution. More
precisely, including the send2.h file does not redirect all send's being done
in files which have already been compiled without the header. So for example,
the whole library in function/objects was compiled without send2.h, so any
messages sent in that library won't use the delegation chain, and hence
something like this is problematic:
Suppose Object (from the library) has got some method like this:
Object foo
[
self bar
]
And now I have my own Prototype with the delegation chain, derived from
object:
Prototype : Object (next)
Prototype _delegate
[
^next
]
Now, if I call Prototype foo, which will in turn end up in Prototype bar, the
call to bar will be done with the old send macro, and hence NOT perform
lookup in Prototype's delegation chain (i.e. "next" field)
Has this been anticipated somehow? The only fix I see is to modify libid.c to
always use libid_bind2, costing a performance penalty when no Lieberman
prototypes are used...
Cheers,
Hans
--
If we cannot live so as to be happy, let us at least live so as to deserve it
-- Immanuel Hermann Fichte
A liberal is a person whose interests aren't at stake at the moment
-- Willis Player
Ark Linux - Linux for the Masses (http://arklinux.org)
Hans Schippers
Aspirant FWO - Vlaanderen
Formal Techniques in Software Engineering (FoTS)
University of Antwerp
Middelheimlaan 1
2020 Antwerpen - Belgium
Phone: +32 3 265 38 71
Fax: +32 3 265 37 77
_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc