CONCEPT
        lfuns

DESCRIPTION
        A lfun is a LPC function within an object which is public and can
        be called by other objects. In OO terms, lfuns are "methods"
        which you can send "messages" to.

        Calling lfuns is done by using the efun call_other(), which
        takes as arguments the object in which the lfun is to be called,
        the name of the lfun to be called in the object, and additional
        and optional arguments.

        An example looks like this:

        call_other(drink, "QueryShort");

        This call may also be written as

        drink->QueryShort();

        This means call_other(object, "function", args...) can also be
        written as object->function(args...). The second form is
        preferred as it is easier to read.

        Some lfuns have a special meaning for the LPC driver, because
        they are applied by the interpreter instead from an LPC object.
        To distinguish those, they are called ``applied lfuns''.

SEE ALSO
        efuns(LPC), efun(E), applied(A), master(M), call_other(E)
