.\"call a function in another object
.DT
call_other
$MUDNAME$ driver help
call_other

.SH Name
.SI 5
call_other() - call a function in another object
.EI

.SH Synopsis
.SI 5
mixed call_other( mixed ob, string func, ... );
mixed call_other( mixed ob, array args );
mixed call_other( array obs, string func, ... );
mixed call_other( array obs, array args );
.EI

.SH Description
.SP 5 5
`ob' is either an object pointer, or a string filename (suitable for
find_object()).  `obs' is an array of object pointers and strings.
Using an array as the first argument does a call_other for each element of
the array, and returns an array of the results.
If the array form is used for `args', then the first element is the function
name, and the remainder are the arguments; e.g.:

call_other(ob, ({ "foo", 1, 3, 5 }))

and

call_other(ob, "foo", 1, 3, 5)

are equivalent.  The function foo() is called in the object ob with the
arguments (1, 3, 5).  The return value of call_other() is the value
returned from the foo() function.  In the case of an array of objects,
the return value of call_other() is an array of the return values.

There is a much more attractive way to do call_others;
call_other(x, "y", z, ...) is the same as:

x->y(z, ...)

i.e.,

call_other(ob, "query_name");

could be written as:

ob->query_name();

Writing out the call_other call is mainly used when the function name
is in a variable, i.e:

.EP
.SI 5
void do_test(string fname, int x) {
    call_other(fname, "test_" + x);
}

An example of using an array as the first argument:

users()->quit();
.EI
