| SYNOPSIS |
| int exec(object new, object old) |
| |
| DESCRIPTION |
| exec() switches the connection from the interactive object old |
| to the object new. If the new object is also interactive, it's |
| connection will be transferred to the old object, thus |
| exchaning the two connections between the object. If the new |
| object is not interactive, the old will not be interactive |
| anymore after the exec call succeeded. |
| |
| The result is 1 on success, and 0 on failure. |
| |
| exec() is used to load different "user objects" or to reconnect |
| link dead users. |
| |
| To provide security mechanisms, the interpreter calls |
| master->valid_exec(current_program, new, old), which must |
| return anything other than 0 to allow this exec() invocation. |
| |
| After the exec(), if arg 2 was this_player(), this_player() |
| becomes arg 1, else vice versa. Ditto for this_interactive(). |
| |
| Take care when writing a simul-efun around exec(): the |
| 'current_program' passed to the valid_exec() function will be |
| that of the simul-efun object. To get around this, use |
| bind_lambda() to bind #'exec to the real object and funcall() |
| the resulting closure. |
| |
| EXAMPLES |
| ob = clone_object("std/player"); |
| exec(ob, this_object()); |
| destruct(this_object()); |
| |
| HISTORY |
| LDMud 3.2.9 added the switchover of this_interactive(). |
| |
| SEE ALSO |
| connect(M), disconnect(M), logon(A), interactive(E) |