
execute_anything()
******************


FUNKTION
========

   protected mixed execute_anything(mixed fun, mixed args, ...)


DEFINIERT IN
============

   /std/util/executer.c


ARGUMENTE
=========

   mixed fun        auszufuehrende Funktion/Array/Closure ... anything
   mixed args       weitere Argumente, werden weiter uebergeben


BESCHREIBUNG
============

   Fuehrt "alles" aus:



   'fun' kann sein:
   - eine Closure
     [funcall(fun, args, ...)]
   - einen String als Funktion im Objekt
     [call_other(this_object(), fun, args, ...)]
   - ein Array mit Objekt/Objektnamen + Funktion als Aufruf der Funktion am
     Objekt/Objektnamen:
     [call_other(array[0], array[1], args...)]

   Wird execute_anything() aus dem restriction_checker gerufen, wird als
   erster Parameter immer das gepruefte Living uebergeben.


BEMERKUNGEN
===========

   Es kann sich anbieten, die gerufene Funktion mit varargs-Argumenten zu
   gestalten, damit ihr mehr Argumente uebergeben werden koennen als in der
   Funktionsdefinition angegeben sind.

   Der Restriktionspruefer (/std/restriction_checker) versteht im Falle eines
   Arrays mit Objekt/Objektnamen + Funktion auch ein Array mit mehr als 2
   Elementen. Die weiteren Elemente werden dann zu weiteren Argumenten der
   gerufenen Funktion. Hierbei wird <pl> ggf. aber als erstes Argument vor
   alle anderen eingefuegt.


SIEHE AUCH
==========

   check_restrictions, varargs

31.12.2013, Zesstra
