
clean_up()
**********


FUNKTION
========

   int clean_up(int ref);


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

   /std/room.c
   man kann die Funktion jedoch auch in beliebigen Objekten selbst
   definieren.


ARGUMENTE
=========

   ref
           + 0 bei gecloneten Objekten
           + 1 bei einfachen geladenen Objekten
           + >1 bei Objekten, die geerbt wurden oder als Blueprint dienen
           + <0, wenn clean_up() von aussen aufgerufen wurde (das muss man
             selbst beachten!)


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

   Wenn ein Objekt seit langer Zeit nicht mehr benutzt wurde, kann es sich
   hier selbst zerstoeren. Das sollte das Objekt allerdings nur tun, wenn
   ref kleiner oder gleich 1 ist.


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

   Der Rueckgabewert hat nur dann eine Bedeutung, wenn sich das Objekt
   nicht selbst zerstoert hat. Wird 0 zurueckgegeben, so wird clean_up()
   erst dann wieder aufgerufen, nachdem das Objekt aus- und wieder
   eingeswappt wurde.

   Ein Rueckgabewert ungleich 0 zeigt an, dass das Objekt sich
   wahrscheinlich in der naechsten clean_up()-Runde zerstoeren kann, wenn
   in der Zwischenzeit zB. noch einmal reset() aufgerufen wurde.


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

   Standardmaessig definieren nur Raeume clean_up().

   Die Zeiten zwischen zwei Aufrufen von clean_up() betragen momentan
   einen Tag (86400 Sekunden).


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

   reset(), P_NEVER_CLEAN
   memory

21. Maerz 2004 Gloinson
