Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/efun/map_indices b/doc/efun/map_indices
new file mode 100644
index 0000000..de3b15f
--- /dev/null
+++ b/doc/efun/map_indices
@@ -0,0 +1,75 @@
+map_indices(E)
+
+FUNKTION:
+     mapping map_indices(mapping m, string fun, object ob [, mixed extra])
+     mapping map_indices(mapping m, closure cl [, mixed extra])
+
+PARAMETER:
+     arr	- zu mappendes Array
+     fun/cl	- zu rufende Methode/Closure
+     ob		- Objekt/Dateiname, an dem Methode gerufen werden soll
+     extra	- weitere Parameter fuer Methode/Closure
+
+BESCHREIBUNG:
+     Mapped die Elemente (jeweils Schluessel) aus 'map' durch die Methode
+     'fun' oder die Closure 'cl' in ein neues Mapping.
+     Fuer jedes Element aus 'm' wird 'fun' oder 'cl' mit dem Schluessel als
+     erstem Parameter [und folgend den optionalen Extra-Parametern] gerufen.
+
+     Der Rueckgabewert der Methode/Closure wird in fuer den Schluessel als
+     Datenwert in das neue Mapping eingetragen.
+
+     ACHTUNG: Alle anderen Daten bei Mapping mit Breite>1 verfallen!
+
+     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).
+
+RUeCKGABEWERT:
+     Mapping mit Schluessel:Rueckgabewerten der Methode/Closure.
+
+BEISPIELE:
+     // ersetze in einem Mapping die Datenwerte durch das Doppelte,
+     // nutze dabei die Datenwerte des Altmappings durch Uebergabe als
+     // extra-Parameter
+
+     // Anmerkung: Das geht mit walk_mapping() eleganter!
+
+     int do_double(string key, mapping m, int mult) {
+      return m[key]*mult;
+     }
+
+     mapping x, y;
+     x=(["a":2, "b":3]);
+     y=map_indices((["a":2, "b":3]), #'do_double, &x, 3);
+
+     y == (["a":6,"b":9])
+
+AeQUIVALENZCODE (nicht empfohlen, nur zum Verstaendnis!):
+     int i;
+     mapping ret; mapping input;
+     mixed *index;
+
+     ret=m_allocate(0, 1);
+     index=m_indices(input);
+     i=sizeof(index);
+     while(i--)
+       ret[index[i]]=ob->fun(index[i] [, extra1, extra2, ...]))
+       // ret[index[i]]=funcall(cl, index[i] [, extra1, extra2, ...]);
+
+SIEHE AUCH:
+     Arrays:		filter(E), map(E)
+     Objektarrays:	filter_objects(E), map_objects(E)
+     Mappings:		filter_indices(E)
+
+     Sonstiges:		walk_mapping(E), m_contains(E)
+			member()
+			m_indices(E), m_values(E)
+
+29.10.2006 Zesstra