
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
