Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/doc/efun/map b/doc/efun/map
new file mode 100644
index 0000000..808f065
--- /dev/null
+++ b/doc/efun/map
@@ -0,0 +1,93 @@
+SYNOPSIS
+ mixed * map(mixed *arg, string func, string|object ob, mixed extra...)
+ mixed * map(mixed *arg, closure cl, mixed extra...)
+ mixed * map(mixed *arg, mapping m [, int idx])
+
+ mixed * map(struct arg, string func, string|object ob, mixed extra...)
+ mixed * map(struct arg, closure cl, mixed extra...)
+ mixed * map(struct arg, mapping m [, int idx])
+
+ mapping map(mapping arg, string func, string|object ob, mixed extra...)
+ mapping map(mapping arg, closure cl, mixed extra...)
+
+ string map(string arg, string func, string|object ob, mixed extra...)
+ string map(string arg, closure cl, mixed extra...)
+ string map(string arg, mapping m [, int idx])
+
+BESCHREIBUNG
+ Ruft die Funktion <ob>-><func>() bzw. die Closure <cl> fuer jedes
+ Element des Strings, Arrays, Mappings oder der Struktur <arg> auf
+ und liefert ein Resultat, das aus den verschiedenen Rueckgabewerten
+ erstellt wurde.
+
+ Wurde <ob> nicht angegeben, oder ist es weder ein String noch ein
+ Objekt, wird stattdessen this_object() verwendet.
+
+ Ist <arg> ein Array, ein String oder eine Struktur, wird die Funktion
+ mit jedem Element des Arrays als erstem Parameter aufgerufen, gefolgt
+ von den <extra> Argumenten. Das Resultat der Efun ist ein Array, das
+ die Rueckgabewerte der Funktionsaufrufe enthaelt. Man koennte die
+ Operation map() deshalb umschreiben als:
+
+ foreach(index) result[index] = ob->func(arg[index], extra...)
+
+ Ist <arg> ein Array, ein String oder eine Struktur, und wurde statt
+ einer Funktion ein Mapping angegeben, so liefert map() ein Array mit
+ den Werten, die im Mapping an Stelle der urspruenglichen Werte stehen,
+ bzw. mit den Originalwerten, wenn fuer sie kein Mappingeintrag
+ existiert. Ist <idx> angegeben, so wird die entsprechende Spalte des
+ Mappings verwendet. Mit anderen Worten:
+
+ foreach(index)
+ if (arg[index] ist ein Key in <arg>)
+ result[index] = map[arg[index]] oder map[arg[index]]
+ else
+ result[index] = arg[index]
+
+ Ist <arg> ein Mapping, wird die Funktion fuer jeden Key des Mappings
+ als erstem Parameter und den Datenwerten (sofern vorhanden) als
+ zusaetzliche Argumente aufgerufen, gefolgt von den <extra> Argumenten.
+ Die <extra> Argumente duerfen keine geschuetzten Referenzen enthalten
+ (wie z.B. &(i[0])). Das Ergebnis der Efun ist ein Mapping, das die
+ Resultate der Funktionsaufrufe als Zuordnung zum jeweiligen Key
+ enthaelt.
+
+ Abhaengig von der Breite des Mappings <arg>, kann die Operation
+ umschrieben werden als:
+
+ foreach (key in arg)
+ switch (widthof(arg))
+ case 0:
+ result[key] = ob->func(key, 0, extra...)
+ case 1:
+ result[key] = ob->func(key, arg[key], extra...)
+ else :
+ result[key] = ob->func( key
+ , ({ arg[key,0] ...arg[key,width-1] })
+ , extra...)
+
+ Der Vorteil dieses Ansatzes ist, dass beide Arten von mehrdimensionalen
+ Mappings (Mappings mit mehreren Werten pro Key und Mappings von Arrays)
+ gleich behandelt werden koennen.
+
+BEISPIELE
+ arr = ({ 1, 2, 3, 4 });
+ m = ([ 1:-1, 3:-3 ]);
+
+ map(arr, #'%, 2) --> liefert ({ 1, 0, 1, 0 })
+ map(arr, m) --> liefert ([ -1, 2, -3, 4 })
+
+ANMERKUNGEN
+ map() auf Arrays angewandt verhaelt sich wie map_array(), auf Mappings
+ angewandt hingegen verhaelt es sich wie eine Verallgemeinerung von
+ map_indices().
+
+GESCHICHTE
+ Eingefuehrt in LDMud 3.2.6, loest map_array() ab.
+ LDMud 3.2.8 fuehrt neu die Moeglichkeit ein, ein Array durch ein
+ Mapping zu mappen.
+ LDMud 3.3.439 fuehrt map() fuer Strings ein.
+ LDMud 3.3.719 fuehrt den <idx>-Parameter fuer mappen mit Mappings ein.
+
+SIEHE AUCH
+ filter(E), filter_indices(E), map_indices(E), map_objects(E)