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
