CustomizeObject()

FUNKTION:
   string CustomizeObject();

DEFINIERT IN:
   /std/virtual/v_compiler.c

ARGUMENTE:
   keine

RUeCKGABEWERT:
   Den Objektnamen, den das zuletzt erzeugte Objekt (welches gerade die
   Funktion aufruft) spaeter vom Driver bekommen wird.

BESCHREIBUNG:
   Diese Funktion ist aus dem Grunde da, da zum Zeitpunkt des Clonens des
   VC-Objektes (P_STD_OBJECT) dieses Objekt ja noch nicht weiss Wer
   oder Was es spaeter mal sein wird.
   Deshalb kann dieses VC-Objekt im create() (und nur da!) die Funktion
   CustomizeObject() in dem virtual_compiler aufrufen, welches das Objekt
   geclont hat und bekommt von diesem den Objektnamen zureck, welches es
   spaeter mal bekommen wird.
   Da das VC-Objekt vom VC geclont wurde, ist previous_object() im create()
   des VC-Objektes der VC, in dem man CustomizeObject() ruft.

BEMERKUNGEN:
   Das CustomizeObject() im Standard-VC gibt nur den zukuenftigen Objektnamen
   zurueck und macht sonst nix.

BEISPIELE:
   create() eines VC-Objektes:
   
   protected void create() {
     ...
     
     // wer bin ich denn eigentlich?
     string myname = previous_object()->CustomizeObject();
     switch(myname) {
       // Kram konfigurier, ja nach myname... 
     }
     
     ...
   }

SIEHE AUCH:
     virtual_compiler
     CustomizeObject(), Validate(), NoParaObjects(), 
     P_COMPILER_PATH, P_PARA
     /std/virtual/v_compiler.c
----------------------------------------------------------------------------
21.10.2007, Zesstra
