Validate()
**********


FUNKTION
========

   string Validate(string oname);


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

   /std/virtual/v_compiler.c


ARGUMENTE
=========

   oname
       Objektname, der geprueft werden soll


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


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

   Diese Funktion hat die Aufgabe zu ueberpruefen ob ein Objekt welches
   geladen werden soll, in dem VC  ueberhaupt erlaubt ist. Dieser
   Funktion wird nur der reine Filename uebergeben, ohne Pfad!
   Diese Funktion macht im Standard-VC in /std/ nichts weiter, als
   das '.c' am File Namen abzuschneiden.
   Sollte der Dateiname gueltig sein liefert die Funktion als Rueckgabewert
   den Filenamen ohne .c und sonst 0.


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

   Am besten ruft man in seinem Validate() das ::Validate(), was einem die
   Arbeit abnimmt, ein .c am Ende zu entfernen.


BEISPIEL
========

   string Validate(string oname) {
     string raum, spieler;
     //.c abschneiden
     oname=::Validate(oname);



     // folgt der Raum dem Muster "arena|name"? Wenn nein -> ungueltig,
     // 0 zureckgeben, sonst den Filenamen.
     if(sscanf(oname,"%s|%s",raum,spieler)<2 || raum!="arena")
        return 0;
     return oname;
   }


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

   virtual_compiler
   CustomizeObject(), Validate(), NoParaObjects(),
   P_COMPILER_PATH, P_PARA
   /std/virtual/v_compiler.c

27.10.2007, Zesstra
