diff --git a/doc/sphinx/man/lfun/PreventInsert b/doc/sphinx/man/lfun/PreventInsert
new file mode 100644
index 0000000..3635142
--- /dev/null
+++ b/doc/sphinx/man/lfun/PreventInsert
@@ -0,0 +1,71 @@
+
+PreventInsert()
+***************
+
+
+FUNKTION
+========
+
+   int PreventInsert(object ob);
+
+
+DEFINIERT IN
+============
+
+   /std/container/restrictions.c
+
+
+ARGUMENTE
+=========
+
+   ob
+        Das Objekt, das in den Behaelter eingefuegt werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann ein Behaelter pruefen, ob er das Objekt ob
+   aufnehmen moechte oder nicht.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn das Objekt aufgenommen werden kann; ein Wert groesser als 0
+   zeigt an, dass das Objekt nicht aufgenommen werden soll.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventInsert() zwar
+   aufgerufen, das Objekt wird jedoch auf jeden Fall in den Behaelter
+   bewegt, unabhaengig vom Rueckgabewert!
+
+
+BEISPIELE
+=========
+
+   Um zu verhindern, dass man Geld in einen Behaelter stecken kann, sollte
+   man wie folgt vorgehen:
+
+   varargs int PreventInsert(object ob)
+   {
+     // Wenn es Geld ist, erheben wir sofort Einspruch
+     if (ob->id("geld"))
+       return 1;
+     // Ansonsten koennte ein ererbtes Objekt noch Einspruch erheben!
+     else
+       return ::PreventInsert(ob);
+   }
+
+
+SIEHE AUCH
+==========
+
+   PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
+   PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
+   PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+
+Last modified: Sat Dec 18 02:00:00 1999 by Tiamak
