Just one comment.
>>It is said that these procedures are used internally and are only
>>EXTENSIBLE for backward compatiblity which may change in the future.
>>On the other hand looking in the Form folder I found calls like
>>r.Externalize^(wr), where a super call to the base method is done.
>
>Super calls seem to have disappeared between 1.2 and 1.3. If you study an
>example model/view implemtation (eg. ObxBlackBox, or a template generated
>by the "Create Subsystem" tool), you will see that super calls are no
>longer necessary in Internalize/Externalize. Perhaps they have forgotten
>to remove a few of them. This is probably also a good place to see the
>recursive calls to Read/WriteStore: A view is a store which contains
>another store (its model).
I believe that what the folks at Oberon microsystems are saying is that
one should replace supercalls in their code with what one could refer to
as upcalls. Upcalls, like read-only export of variables, are part of
what is, in effect, the 'outgoing interface' of the module (in contrast
with the more common 'incoming interface' we are all use to). Upcalls
are empty implement-only methods. Internalize and Externalize are
upcalls in module Stores. It is perhaps unfortunate that the incoming
and outgoing interfaces of a module are not more clearly distinguished
in the current language definition.
For example, in an extension T of type Stores.Store one may have methods:
PROCEDURE (t: T) StoreImage* (VAR wr: Stores.Writer), NEW, EMPTY;
PROCEDURE (t: T) Externalize* (VAR wr: Stores.Writer);
BEGIN
(* store local variables *)
t.StoreImage(wr)
END Externalize;
Here procedure Externalize is finalized, and the process is continued with
StoreImage. In this way a chain of upcalls (begun with Externalize, which
is called locally by Writer.WriteStore from within module Stores) can be
constructed for reading and writing data to disk, for example. There are
many advantages for this, but one immediately noticed is that the creation
of upcalls allows you, a framework extender, to use more descriptive
names when extending the chain. In the above example, the upcall is
StoreImage, which leaves the reader of the code with a very good idea
of what that method is achieving (or is suppose to achieve).
My two cents.
Al
Alan D. Freed, Ph.D. Polymers Branch, MS 49-3
tel: 216-433-8747 NASA Lewis Research Center
fax: 216-977-7132 21000 Brookpark Road
Alan.D.Freed@lerc.nasa.gov Cleveland, OH 44135-3191