Search                        Top                                  Index
HELP DEFAULT_METHOD                         Mark Rubinstein  September 1985
                                            Updated A.Schoter, June 1991


This document refers to part of the flavours library package.  For more
details see TEACH * FLAVOURS.

Any method called DEFAULT_METHOD (as defined by *DEFMETHOD) is treated as a
special method.  If a message is sent to an instance which is neither the name
of an instance variable or of a defined method then the message
"default_method" is sent with the name of the message as argument.  A
basic version of this method could be defined as follows:

    flavour vanilla novanilla;
        defmethod default_method(message);
            mishap('UNRECOGNISED MESSAGE', [^message]);
        enddefmethod;
        defmethod updaterof default_method(value, message);
            mishap('ATTEMPT TO UPDATE UNRECONISED MESSAGE', [^value ^message])
        enddefmethod;
    endflavour;

In fact, vanilla_flavour has a predefined default_method that is more
sophisticated than this.  If you send a message M to a flavour instance
that has no method for that message, then the system will attempt to
autoload a file M_messgage.p - if that attempt is successful then the
procedure defined in that file called M will be run as the method for
the message, if the attempt to autoload fails then the mishap as
described above is generated.

If you define your own default_method for any flavour then this
overrides the built-in vanilla default_method.


See TEACH * FLAVOURS for full details of the flavour package.
See also
    HELP *DEFMETHOD, *FLAVOUR, *SYSFLAVOUR, *AUTOLOAD.


--- C.all/help/default_method ------------------------------------------
--- Copyright University of Sussex 1991. All rights reserved. ----------