GESCHUETZT
SYNOPSIS
int exec(object new, object old)
BESCHREIBUNG
exec() schaltet die Verbindung um vom interaktiven Objekt <old> zum
Objekt <old>. Wenn <new> ebenfalls interaktiv ist, wird dessen
Verbindung zum Objekt <old> uebertragen, die Verbindungne von <old>
und <new> werden also ausgetauscht. Wenn <new> nicht interaktiv ist,
ist <old> nach der Ausfuehrung von exec() nicht mehr interaktiv.
Das Resultat von exec() ist 1 bei Erfolg, 0 sonst.
exec() wird verwendet, um unterschiedliche "user objects" zu laden
oder um User mit totem Netz wieder zu verbinden.
Um Sicherheitsmechanismen zu gewaehrleisten, wird im Masterobjekt
valid_exec(<laufendes Programm>, <new>, <old>) aufgerufen. Dieser
Aufruf muss etwas von 0 verschiedenes liefern, um den Aufruf von
exec() zu erlauben.
Wenn <old> this_player() war, enthaelt this_player() nach dem Aufruf
von exec() <new> und umgekehrt. Gleiches gilt fuer this_interactive().
Vorsicht ist geboten, wenn eine simul-efun() um exec() herum gebaut
wird: das <laufende Programm>, das an valid_exec() uebergeben wird,
ist das simul-efun Objekt. Um dieses Problem zu umgehen, kann mittels
bind_lambda() #'exec an das richtige Objekt gebunden und anschliessend
mit funcall() aufgerufen werden.
BEISPIELE
ob = clone_object("std/player");
exec(ob, this_object());
destruct(this_object());
GESCHICHTE
LDMud 3.2.9 fuehrte den Austauschprozess fuer this_interactive() ein.
SIEHE AUCH
connect(M), disconnect(M), logon(A), interactive(E)
|