Dokumentation zu: previous_object.de(E)

HR Image


SYNOPSIS
        object previous_object()
        object previous_object(int i)

BESCHREIBUNG
        Liefert einen Pointer auf das letzte Objekt, das einen Aufruf (mittels
        call_other(), funcall() etc.) auf das aktuelle Objekt this_object()
        gemacht hat. Wenn dieses aufrufende Objekt inzwischen zerstoert wurde,
        liefert previous_object() 0.

        Wird das Argument <i> angegeben, so verfolgt previous_object() den
        Aufruf <i> Stufen zurueck. Zum Beispiel liefert previous_object(1) das
        aufrufende Objekt des aufrufenden Objekts. Fuer <i> muss gelten:
        0 <= i < call_stack_depth(). Ein Wert <i> < 0 liefert das erste
        aufrufende Object zurueck.

        Es gibt einen wichtigen Spezialfall: in Funktionen, die vom Gamedriver
        auf Grund eines externen Ereignises aufgerufen wurden (zum Beispiel
        Kommandos, die mit add_action() definiert wurden), liefert
        previous_object() den Wert von this_object(), previous_object(0)
        hingegen 0.

BEISPIELE
        int sicherheitscheck() {
            object prev;
            if (!(prev=previous_object()));
            else if (getuid(prev)  != getuid(this_object()));
            else if (geteuid(prev) != geteuid(this_object()));
            else return 1;
            return 0;
        }
        void sensible_funktion() {
            if (!sicherheitscheck())
                return;
            ...
        }

        Diese Funktion zeigt, wie man ueberpruefen kann, ob der letzte Aufruf
        einer Funktion im aktuellen Objekt sicher war, oder ob die
        Verarbeitung abgebrochen werden sollte.

FEHLER
        Werte von <i> < 0 werden wie <i> == 0 behandelt - dies ist historisch.

SIEHE AUCH
        call_other(E), this_object(E), this_player(E), caller_stack(E),
        caller_stack_depth(E), extern_call(E)

Das Original der Seite ist in Englisch.

Start » Magierhandbuch » Docu » Efun.de » Previous_object.de Letzte Generierung: 25.04.2021, 01:58
Email an: mud@wl.mud.de
Valid HTML 4.01!