Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/doc/efun/walk_mapping b/doc/efun/walk_mapping
new file mode 100644
index 0000000..7396fcf
--- /dev/null
+++ b/doc/efun/walk_mapping
@@ -0,0 +1,88 @@
+walk_mapping(E)
+
+FUNKTION:
+ void walk_mapping(mapping m, string fun [, mixed extra, ...])
+ void walk_mapping(mapping m, string fun, string|object ob
+ , mixed extra,...)
+ void walk_mapping(mapping m, closure cl, mixed extra,...)
+
+PARAMETER:
+ m - durchzugehendes Mapping
+ fun/cl - zu rufende Methode/Closure
+ ob - Objekt/Dateiname, an dem Methode gerufen werden soll
+ extra - weitere Parameter fuer Methode/Closure
+
+BESCHREIBUNG:
+ Ruft die Methode fuer jeden Eintrag im Mapping:
+ ob->func(key, value1, ..., valueN, extra,...)
+ beziehungsweise fuehrt die Closure fuer jeden dieser Eintraege aus:
+ funcall(cl, key, value1, ..., valueN, extra,...)
+
+ Die Schluessel werden als Wert uebergeben und die dazugehoerigen Werte
+ per Referenz, diese koennen somit also in der Funktion/Closure geaendert
+ werden.
+
+
+ Verwendung von Methoden:
+ Wenn bei der Angabe von 'fun' kein Objekt 'ob' in Form eines Strings
+ oder Objekts angegeben wird, wird this_object() angenommen.
+
+ Verwendung von Closures:
+ Es koennen sowohl Lfun-Closures als auch Lambda-Closures verwendet
+ werden. Lfun-Closures koennen, wenn im selben Objekt vorhanden auch
+ 'private' oder/und 'static' deklariert sein, muessen aber zu dem
+ Zeitpunkt der Verwendung bekannt sein (Funktionsprototypen benutzen).
+
+BEISPIELE:
+ // Liste mit Spielern durchgehen ...
+ mapping x=([ [/human:liafar]: 20,
+ [/dwarf:mesirii]: 50,
+ [/elf:zarniya]: 40,
+ [/feline:turbo]: 30]);
+
+ // ... und Werte aendern:
+ void add_val(object key, int val, int add) {
+ if(key->InFight())
+ val+=add;
+ else
+ val-=add;
+ }
+
+ // verschiedene Aufrufarten, identisches Resultat:
+ walk_mapping(x, "add_val", 0, 10);
+ walk_mapping(x, "add_val", this_object(), 10
+ walk_mapping(x, "add_val", "/players/jof/addierobjektmitmethode", 10);
+
+ walk_mapping(x, #'add_val, 10);
+
+
+AeQUIVALENZCODE (nicht empfohlen, nur zum Verstaendnis!):
+ // so richtig aequivalent wird es nur mit einer Closure hier
+ int i, width;
+ mapping input;
+ mixed *index, *param;
+
+ width=get_type_info(input)[1];
+ param=allocate(width);
+ index=m_indices(input);
+ i=sizeof(index);
+ while(i--) {
+ j=width;
+ while(j-- > 1)
+ param[j]=input[index[i],j];
+ j[0]=index[i];
+
+ apply(cl, param);
+ // fun(index[i], input[index[i],0], input[index[i],1], ...);
+ }
+
+SIEHE AUCH:
+ Arrays: filter(E), map(E)
+ Objektarrays: filter_objects(E), map_objects(E)
+ Mappings: filter_indices(E), map_indices(E)
+
+ Sonstiges: m_contains(E)
+ member()
+ m_indices(E), m_values(E)
+
+20.Jan 2005 Gloinson