Morgengrauner Dokumentation
Dateipfad: /home/mud/mudlib/doc//efun/limitedVORLAEUFIG, GESCHUETZT
SYNOPSIS
#include
mixed limited(closure fun)
mixed limited(closure fun, int tag, int value, ...)
mixed limited(closure fun, int *limits)
mixed limited(closure fun, int *limits, mixed *args)
BESCHREIBUNG
limited() ruft die Funktion mit den bezeichneten Argumenten
auf und fuehrt sie mit den gegebenen Laufzeitlimitierungen aus.
Beim Ende der Funktion werden die momentan aktiven
Laufzeitlimitierungen wiederhergestellt. limited() liefert den
Rueckgabewert der Closure zurueck.
Die Laufzeitlimitierungen koennen in zwei Formen angegeben werden:
* als Array (wie es von query_limits() geliefert wird) oder
* als Liste von Werten mit Tags.
Wird limited() ohne Angabe von Limits aufgerufen, gelten die
Laufzeitlimiten als 'unlimitiert'.
Die Limitierung kennt drei spezielle Werte aus :
LIMIT_UNLIMITED: es gibt kein Limit
LIMIT_KEEP: das zuletzt gesetzte Limit wird beibehalten
LIMIT_DEFAULT: die 'globalen' Limitierungen werden verwendet
Fuer LIMIT_COST haben folgende Spezialwerte eine Bedeutung:
LIMIT_UNLIMITED: die Ausfuehrung kosten lediglich einen Tick
LIMIT_KEEP: LIMIT_COST wird auf 0 gesetzt
LIMIT_DEFAULT: LIMIT_COST wird auf -100 gesetzt
limited() erzeugt eine Schutzverletzung ("limited", current_object,
fun, limits-array).
BEISPIELE
limited(#'function)
--> fuehrt die Funktion ohne Limits aus.
limited(#'function, ({ 200000 }), "foo")
--> fuehrt die Funktion mit einem Eval-Kosten-Limit von 200000 Ticks
aus. Die Funktion wird als 'function("foo")' aufgerufen.
limited(lambda(0, ({#'function, "foo"})), LIMIT_EVAL, 200000)
--> fuehrt die Funktion mit einem Eval-Kosten-Limit von 200000 Ticks
aus. Die Funktion wird als 'function("foo")' aufgerufen.
GESCHICHTE
Eingefuehrt in LDMud 3.2.7.
LDMud 3.3.563 fuehrte LIMIT_COST ein.
LDMud 3.5.0 fuehrte LIMIT_MEMORY ein.
SIEHE AUCH
query_limits(E), set_limits(E)
zurück zur Übersicht