Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/doc/efun/unique_array b/doc/efun/unique_array
new file mode 100644
index 0000000..390c56e
--- /dev/null
+++ b/doc/efun/unique_array
@@ -0,0 +1,47 @@
+SYNOPSIS
+ mixed unique_array(object *obj, string|closure fun)
+ mixed unique_array(object *obj, string|closure fun, mixed skip)
+ mixed unique_array(object *obj, string|closure fun, mixed extra...
+ , mixed skip)
+
+BESCHREIBUNG
+ Gruppiert alle Objekte aus <*obj>, fuer die die Funktion <fun>
+ den gleichen Wert liefert. Wenn <*obj> etwas anderes als Objekte
+ enthaelt, werden diese ignoriert.
+
+ Ist die Funktion mit Namen angegeben, wird sie in jedem Objekt
+ in <*obj> einmal aufgerufen. Wurden <extra> Argumente
+ gegeben, werden diese an die Funktion bei jedem Aufruf als
+ Parameter uebergeben.
+
+ Ist die Funktion als Closure angegeben, wird sie fuer jedes Objekt
+ in <*obj> einmal aufgerufen, wobei das Objekt als erstes Argument
+ uebergeben wird, gefolgt von etwaiigen <extra> Argumenten.
+
+ Wird ein Argument <skip> angegeben (bei Verwendung von <extra>
+ Argumenten muss dies geschehen), und entspricht <skip> dem
+ Resultat von <separator> fuer ein Element aus <*obj>, so wird
+ dieses Element nicht in das Resultat von unique_array()
+ uebernommen.
+
+ Das Resultat von unique_array() hat die Form:
+
+ ({ ({same1:1, same1:2, ... same1:n}),
+ ({same2:1, same2:2, ... same2:n}),
+ ({samem:1, samem:2, ... samem:n}) })
+
+BEISPIEL
+ Um ein Array von Arrays zu erhalten, das alle Benutzer, nach Level
+ gruppiert, enthaelt:
+
+ mixed *arr;
+ arr=unique_array(users(), "_query_level", -1);
+
+ Goetter haben einen Level von -1. Sie werden nicht in arr aufgenommen,
+ weil <skip> == -1.
+
+SIEHE AUCH
+ Arrays: filter(E), map(E)
+ Objektarrays: filter_objects(E), map_objects(E)
+ Mappings: filter(E), map(E), filter_indices(E), map_indices(E)
+