VORLAEUFIG, GESCHUETZT SYNOPSIS #include mixed limited(closure fun); mixed limited(closure fun, int tag, int value, ...); mixed limited(closure fun, int *limits [, mixed *args]); BESCHREIBUNG limited() ruft die Funktion mit den bezeichneten Argumenten auf und fuehrt sie mit den gegebenen Laufzeitlimiten aus. Beim Ende der Funktion werden die momentan aktiven Laufzeitlimiten wiederhergestellt. limited() liefert den Rueckgabewert der Closure zurueck. Die Laufzeitlimiten 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 Limiteneinstellung kennt drei spezielle Werte aus : LIMIT_UNLIMITED: es gibt kein Limit LIMIT_KEEP: das zuletzt gesetzte Limit wird beibehalten LIMIT_DEFAULT: die 'globalen' Limiten werden verwendet Fuer LIMIT_COST, die Spezialwerte haben diese 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 Limiten 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. AENDERUNGEN Eingefuehrt in LDMud 3.2.7. LDMud 3.3.563 fuehrte LIMIT_COST ein. SIEHE AUCH query_limits(E), set_limits(E)