Manpages aus Driver aktualisiert

und mit unseren Erweiterungen vereinigt.
Div. Whitespace-Fixes
Aequivalenzcode entfernt.

Change-Id: Iff179ef570d3796ea39e6527825d091f31471888
diff --git a/doc/efun/filter b/doc/efun/filter
index 8f4467f..449f144 100644
--- a/doc/efun/filter
+++ b/doc/efun/filter
@@ -1,170 +1,159 @@
 filter(E)
 
 FUNKTION:
-     mixed * filter (mixed *arg, string fun, string|object ob
-                                              , mixed extra...)
-     mixed * filter (mixed *arg, closure cl, mixed extra...)
-     mixed * filter (mixed *arg, mapping map, mixed extra...)
+    mixed * filter(mixed *arg, string fun, string|object ob
+                                         , mixed extra...)
+    mixed * filter(mixed *arg, closure cl, mixed extra...)
+    mixed * filter(mixed *arg, mapping map, mixed extra...)
 
-     string  filter (string arg, string fun, string|object ob
-                                        , mixed extra...)
-     string  filter (string arg, closure cl, mixed extra...)
-     string  filter (string arg, mapping map, mixed extra...)
+    string  filter(string arg, string fun, string|object ob
+                                      , mixed extra...)
+    string  filter(string arg, closure cl, mixed extra...)
+    string  filter(string arg, mapping map, mixed extra...)
 
-     mapping filter (mapping arg, string func, string|object ob
-                                             , mixed extra...)
-     mapping filter (mapping arg, closure cl, mixed extra...)
+    mapping filter(mapping arg, string func, string|object ob
+                                           , mixed extra...)
+    mapping filter(mapping arg, closure cl, mixed extra...)
+
 
 PARAMETER:
-     arr     - zu filterndes Array/Mapping/String
-     fun/cl  - zu rufende Methode/Closure
-     map     - filterndes Mapping
-     ob      - Objekt/Dateiname, an dem Methode gerufen werden soll
-     extra   - weitere Parameter fuer Methode/Closure
+    arr     - zu filterndes Array/Mapping/String
+    fun/cl  - zu rufende Methode/Closure
+    map     - filterndes Mapping
+    ob      - Objekt/Dateiname, an dem Methode gerufen werden soll
+    extra   - weitere Parameter fuer Methode/Closure
 
 BESCHREIBUNG:        
-     Ruft fuer jedes Element des Arrays oder Mappings <arg> die Funktion
-     <ob>-><func>() bzw. die Closure <cl> auf und liefert jene Elemente,
-     fuer die die Funktion / Closure TRUE ergeben hat. Die <extra>
-     Argumente werden als zusaetzliche Parameter an die Funktion
-     uebergeben und duerfen keine Referenzen von Array- oder Mapping-
-     Elementen sein (wie &(i[1]) ).
+    Ruft fuer jedes Element des Arrays oder Mappings <arg> die Funktion
+    <ob>-><func>() bzw. die Closure <cl> auf und liefert jene Elemente,
+    fuer die die Funktion / Closure TRUE ergeben hat. Die <extra>
+    Argumente werden als zusaetzliche Parameter an die Funktion
+    uebergeben und duerfen keine Referenzen von Array- oder Mapping-
+    Elementen sein (wie &(i[1]) ).
 
-     Wird <ob> nicht angegeben oder ist es weder ein String noch ein
-     Objekt, wird standardmaessig this_object() verwendet.
+    Wird <ob> nicht angegeben oder ist es weder ein String noch ein
+    Objekt, wird standardmaessig this_object() verwendet.
 
-     Ist <arg> ein Array, wird <fun> mit jedem Element des Arrays als
-     ersten Parameter aufgerufen, gefolgt von den <extra> Argumenten.
-     Wenn das Resultat der Funktion TRUE ergibt, wird das Element in das
-     Ergebnis der filter() Operation mit einbezogen.
+    Ist <arg> ein Array oder struct, wird <fun> mit jedem Element des
+    Arrays/der struct als ersten Parameter aufgerufen, gefolgt von den
+    <extra> Argumenten. Wenn das Resultat der Funktion TRUE ergibt, wird
+    das Element in das Ergebnis der filter() Operation mit einbezogen.
 
-     Wird filter() mit einem Mapping <map> anstelle der Funktion <func>
-     aufgerufen, wird jedes Element im Array <arg>, das ein Key von <map>
-     ist, ins Ergebnis mit einbezogen.
+    Wird filter() mit einem Mapping <map> anstelle der Funktion <func>
+    aufgerufen, wird jedes Element im Array <arg>, das ein Key von <map>
+    ist, ins Ergebnis mit einbezogen.
 
-     Wenn <arg> ein Mapping ist, wird die Funktion <func> mit jedem Key
-     als erstem und (falls vorhanden) den Werten dieses Keys als restliche
-     Parameter, gefolgt von den <extra> Argumenten, aufgerufen. Wenn die
-     Funktion TRUE ergibt, wird das betreffende Element des Mappings ins
-     Ergebnis aufgenommen.
+    Wenn <arg> ein Mapping ist, wird die Funktion <func> mit jedem Key
+    als erstem und (falls vorhanden) den Werten dieses Keys als zweitem
+    Parameter, gefolgt von den <extra> Argumenten, aufgerufen. Wenn die
+    Funktion TRUE ergibt, wird das betreffende Element des Mappings ins
+    Ergebnis aufgenommen.
 
-     Abhaengig von der Groesse des Mappings <arg> erfolgt der Aufruf der
-     Funktion auf drei unterschiedliche Arten:
+    Abhaengig von der Groesse des Mappings <arg> erfolgt der Aufruf der
+    Funktion auf drei unterschiedliche Arten:
 
-     widthof(arg) == 0:  ob->func(key, 0, extra,...);
-     widthof(arg) == 1:  ob->func(key, arg[key], extra, ...);
-     widthof(arg) >1:    ob->fund(key, ({arg[key,0]...arg[key, n-1]}),
-                                  extra, ...);
+        widthof(arg) == 0: ob->func(key, 0, extra...)
+                     == 1: ob->func(key, arg[key], extra...)
+                      > 1: ob->func( key
+                                   , ({ arg[key,0] ...arg[key,width-1] })
+                                   , extra...)
 
-     Der Vorteil dieser Vorgehensweise ist, dass beide Typen von
-     multidimensionalen Mappings (Mappings mit mehreren Werte pro Key und
-     Mappings aus Arrays) gleich verarbeitet werden koennen.
+    Der Vorteil dieser Vorgehensweise ist, dass beide Typen von
+    multidimensionalen Mappings (Mappings mit mehreren Werte pro Key und
+    Mappings aus Arrays) gleich verarbeitet werden koennen.
 
-     Ist <arg> ein String, werden der Filterfunktion die einzelnen Zeichen des
-     Strings uebergeben und nur jene Zeichen im zurueckgegebenen String
-     aufgenommen, fuer die die Filterfunkton != 0 zurueckgibt.
+    Ist <arg> ein String, werden der Filterfunktion die einzelnen Zeichen
+    des Strings uebergeben und nur jene Zeichen im zurueckgegebenen
+    String aufgenommen, fuer die die Filterfunkton != 0 zurueckgibt.
+
 
 AENDERUNGEN
-     Eingefuehrt in LDMud 3.2.6. Die Funktion loest filter_array() ab.
+    Eingefuehrt in LDMud 3.2.6. Die Funktion loest filter_array() ab.
 
 RUeCKGABEWERT:
-     Gefiltertes Array mit allen die Filterbedingung erfuellenden Elementen.
+    Gefiltertes Array mit allen die Filterbedingung erfuellenden Elementen.
 
 BEMERKUNGEN:
-     (1) Achtung, die Elemente in 'arr' werden nicht tief kopiert, sind sie
-     also selbst Arrays oder Mappings, so fuehrt eine spaetere Aenderung im
-     Rueckgabe-Arrays zur Aenderung im Ursprungsarray:
+    (1) Achtung, die Elemente in 'arr' werden nicht tief kopiert, sind sie
+    also selbst Arrays oder Mappings, so fuehrt eine spaetere Aenderung im
+    Rueckgabe-Arrays zur Aenderung im Ursprungsarray:
 
-     int *i, *j;
-     i=({({1,2,3}),({4,5,6})});
-     j=filter(i, #'sizeof);     // filtert leere Arrays heraus
-     j[0][0]=8;
+    int *i, *j;
+    i=({({1,2,3}),({4,5,6})});
+    j=filter(i, #'sizeof);     // filtert leere Arrays heraus
+    j[0][0]=8;
 
-     fuehrt zu: i==j==({({8,2,3}),({4,5,6})});
+    fuehrt zu: i==j==({({8,2,3}),({4,5,6})});
 
-     (2) Das Kopieren in das Rueckgabemapping erfolgt fuer jedes Element nach
-     Ausfuehrung der Filtermethode. Aenderungen der Werte im Array in dieser
-     Methode (globale Variable/Uebergabe als Referenz an filter)
-     schlagen sich also im Rueckgabearray nieder.
+    (2) Das Kopieren in das Rueckgabemapping erfolgt fuer jedes Element nach
+    Ausfuehrung der Filtermethode. Aenderungen der Werte im Array in dieser
+    Methode (globale Variable/Uebergabe als Referenz an filter)
+    schlagen sich also im Rueckgabearray nieder.
 
-     (3) Fuer Arrays wirkt filter() wie filter_array(), fuer Mappings stellt
-     filter() eine Verallgemeinerung von filter_indices() dar.
+    (3) Fuer Arrays wirkt filter() wie filter_array(), fuer Mappings stellt
+    filter() eine Verallgemeinerung von filter_indices() dar.
 
 BEISPIEL:
-     ### Filtere alle Lebewesen in einem Raum in ein Array ###
-     filter(all_inventory(this_object()),#'living);
+    ### Filtere alle Lebewesen in einem Raum in ein Array ###
+    filter(all_inventory(this_object()),#'living);
+
+    ### Filtere alle tauben Spieler im Raum in ein Array ###
+    static int filter_isdeaf(object who) {
+      return (interactive(who) && who->QueryProp(P_DEAF));
+    }
+
+    filter(all_inventory(this_object()), #'filter_isdeaf);
 
 
-     ### Filtere alle tauben Spieler im Raum in ein Array ###
-     static int filter_isdeaf(object who) {
-       return (interactive(who) && who->QueryProp(P_DEAF));
-     }
-     
-     filter(all_inventory(this_object()), #'filter_isdeaf);
+    ### Filtern von Idlern (>=1 Sekunde idle) ###
+    // Folgend identische Resultate, aber andere Ansaetze:
 
+    #1: nutzt die Efun query_idle() als Lfun-Closure (ideal hier)
+        idle_usr = filter(users(), #'query_idle );
 
-     ### Filtern von Idlern (>=1 Sekunde idle) ###
-     // Folgend identische Resultate, aber andere Ansaetze:
+    #2: mit Filtermethode
+        int check_if_idle(object user) {
+          return query_idle(user);
+        }
 
-     #1: nutzt die Efun query_idle() als Lfun-Closure (ideal hier)
-         idle_usr = filter(users(), #'query_idle );
+        #2a: filtert mittels der Lfun im selben Objekt die Idler in das
+             Rueckgabearray
+             idle_usr = filter(users(), "check_if_idle");
+             idle_usr = filter(users(), "check_if_idle", this_object());
 
-     #2: mit Filtermethode
-         int check_if_idle(object user) {
-           return query_idle(user);
-         }
-         
-         #2a: filtert mittels der Lfun im selben Objekt die Idler in das
-              Rueckgabearray
-              idle_usr = filter(users(), "check_if_idle");
-              idle_usr = filter(users(), "check_if_idle", this_object());
+        #2b: ruft die Lfun check_if_idle() als Lfun-Closure (Funktions-
+             pointer)
+             idle_usr = filter(users(), #'check_if_idle );
 
-         #2b: ruft die Lfun check_if_idle() als Lfun-Closure (Funktions-
-              pointer)
-              idle_usr = filter(users(), #'check_if_idle );
+    #3: Nutzt eine Inline-Closure
+        idle_usr = filter(users(), function int (object user) {
+                     return query_idle(user);
+                   } );
 
-     #3: Nutzt eine Inline-Closure
-         idle_usr = filter(users(), function int (object user) {
-                      return query_idle(user);
-                    } );
+    ### Filtern von Idlern (>=20 Sekunden idle) mit Extraparameter ###
+    // Folgend identische Resultate, aber andere Ansaetze:
 
-     ### Filtern von Idlern (>=20 Sekunden idle) mit Extraparameter ###
-     // Folgend identische Resultate, aber andere Ansaetze:
+    #1: die Efun koennen wir nicht mehr direkt nutzen, weil sie
+        diesen Parameter nicht unterstuetzt
+       // idle_usr = filter(users(), #'query_idle );
 
-     #1: die Efun koennen wir nicht mehr direkt nutzen, weil sie
-         diesen Parameter nicht unterstuetzt
-        // idle_usr = filter(users(), #'query_idle );
+    #2: mit separater Filtermethode ... mit neuem Parameter
+        int check_if_idle(object user, int length) {
+          return query_idle(user)>length;
+        }
 
-     #2: mit separater Filtermethode ... mit neuem Parameter
-         int check_if_idle(object user, int length) {
-           return query_idle(user)>length;
-         }
-      
-         #2a: filtert mittels der Lfun im selben Objekt die Idler in das
-              Rueckgabearray ... mit drittem Parameter!
-              idle_usr = filter(users(), "check_if_idle", this_object(), 20);
+        #2a: filtert mittels der Lfun im selben Objekt die Idler in das
+             Rueckgabearray ... mit drittem Parameter!
+             idle_usr = filter(users(), "check_if_idle", this_object(), 20);
 
-         #2b: ruft die Lfun check_if_idle() als Lfun-Closure (Funktions-
-              pointer)
-              idle_usr = filter(users(), #'check_if_idle, 20);
+        #2b: ruft die Lfun check_if_idle() als Lfun-Closure (Funktions-
+             pointer)
+             idle_usr = filter(users(), #'check_if_idle, 20);
 
-     #3: Nutzt eine Inline-Closure
-         idle_usr = filter(users(), function int (object user, int length) {
-                      return (query_idle(user) > length); 
-                      }, 20);
-
-
-AeQUIVALENZCODE (nicht empfohlen, nur zum Verstaendnis!):
-     int i;
-     mixed *ret; mixed *input;
-
-     ret=allocate(0);
-     i=sizeof(input);
-     while(i--)
-       if(ob->fun(input[i] [, extra1, extra2, ...]))
-       // if(funcall(cl, input[i] [, extra1, extra2, ...]))
-       // if(member(map, input[i]))
-         ret+=({input[i]});
+    #3: Nutzt eine Inline-Closure
+        idle_usr = filter(users(), function int (object user, int length) {
+                     return (query_idle(user) > length); 
+                     }, 20);
 
 SIEHE AUCH:
      Arrays:        map(E)
@@ -176,5 +165,4 @@
                     transpose_array(E)
 
 ----------------------------------------------------------------------------
-09.04.2008, Zesstra
-
+23.09.2019, Zesstra