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 siehe init().

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

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


Last modified: 21.05.2012, Zesstra

