
create_super()
**************


FUNKTION
========

   protected void create_super();


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

   allen Standardobjekten


ARGUMENTE
=========

   keine


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

   Diese Funktion wird immer dann aufgerufen, wenn ein Objekt implizit durch
   ein 'inherit' in einem erbenden Objekte geladen wird.
   Normalweise muss man dieses so geladene Objekte nicht konfigurieren, weil
   nur das Programm dieses Objektes fuer die erbenden Objekte interessant
   ist, nicht seine Daten.
   Was hier aber z.B. sinnvoll ist, ist das Abschalten des Resets, denn ein
   Objekt, was nur dazu dient, dass es von anderen geerbt wird, braucht
   keinen Reset, auch wenn es ein reset() definiert (was in erbenden Objekte
   benutzt wird).
   Die create_super() in den Standardobjekten tun momentan genau dieses.


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

   keiner


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

   Wenn ihr von /std/ erbt, braucht ihr euch in aller Regel um diese
   Funktion keine Gedanken machen.
   Ihr koennt diese Funktion aber in Objekten selber definieren, die nur zum
   Erben gedacht sind. Dies kann sinnvoll ein, wenn ihr nicht von /std/ erbt
   und ein reset() im Objekt habt oder was machen wollt, was ueber das
   Abschalten des Resets hinausgeht.


BEISPIELE
=========

   Gegeben sei folgende Vererbungskette:
   /std/room -> /d/inseln/zesstra/stdraum -> /d/inseln/zesstra/raum

   Wird nun 'raum' geladen und 'stdraum' ist noch nicht geladen, wird der
   Driver implizit von selbst 'stdraum' laden (weil 'raum' das Programm von
   'stdraum' braucht). Bei diesem Laden wird das create() in 'stdraum' nicht
   ausgefuehrt, sondern stattdessen create_super().


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

   create(L), reset(L)
   hook(C), create(H), create_ob(H), create_super(H, reset(H)
   create(A), reset(A)

22.10.2007, Zesstra
