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

