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
