NotifyInsert()
==============

FUNKTION
--------
::

     void NotifyInsert(object ob, object oldenv);

ARGUMENTE
---------
::

     ob
          Das Objekt, das in den Behaelter eingefuegt wurde.
     oldenv
          Das Objekt, aus dem <ob> kam.

BESCHREIBUNG
------------
::

     Diese Funktion wird im Behaelter aufgerufen, nachdem ein Objekt in
     besagten Behaelter hinein bewegt wurde. 

RUeCKGABEWERT
-------------
::

     keiner

BEMERKUNGEN
-----------
::

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

SIEHE AUCH
----------
::

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


Last modified: 21.05.2012, Zesstra

