VORLAEUFIG, 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)