
NotifyLeave()
*************


FUNKTION
========

   void NotifyLeave(object ob, object dest);


ARGUMENTE
=========

   ob
        Das Objekt, das aus dem Behaelter entfernt wurde.
   dest
        Das Objekt, in das <ob> bewegt wurde.


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

   Diese Funktion wird im Behaelter aufgerufen, nachdem ein Objekt aus
   besagten Behaelter entfernt wurde.


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

   keiner


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

   Diese Funktion wird nur im Falle unbelebter Objekte gerufen. Fuer
   Lebewesen s. bitte. exit().


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

   NotifyRemove(), NotifyInsert(), PreventInsert(), PreventLeave(), move(),
   exit(), init(), NotifyMove(), PreventMove()

Last modified: 21.05.2012, Zesstra
