
PreventLeave()
**************


FUNKTION
========

   int PreventLeave(object ob, mixed dest);


DEFINIERT IN
============

   /std/container/restrictions.c


ARGUMENTE
=========

   ob
        Das Objekt, das aus dem Behaelter genommen werden soll.
   dest
        Das Ziel in das das Objekt ob bewegt werden soll.


BESCHREIBUNG
============

   Mit dieser Funktion kann ein Behaelter pruefen, ob er das Objekt ob
   sich bewegen lassen moechte oder nicht.


RUeCKGABEWERT
=============

   0, wenn das Objekt bewegt werden kann; ein Wert groesser als 0
   zeigt an, dass das Objekt nicht bewegt werden soll.


BEMERKUNGEN
===========

   Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventLeave() zwar
   aufgerufen, das Objekt wird jedoch auf jeden Fall aus dem Behaelter
   bewegt, unabhaengig vom Rueckgabewert!


SIEHE AUCH
==========

   PreventInsert(), NotifyInsert(), NotifyLeave(),
   MayAddWeight(), move(), /std/container/restrictions.c
   PreventLeaveLiving(), PreventInsertLiving(), PreventMove(),
   NotifyMove(), MayAddObject(), NotifyRemove()

Last modified: 04.08.2007, Zesstra
