Query()
FUNKTION:
     public varargs mixed Query(string name, int Type);

DEFINIERT IN:
     /std/thing/properties.c

ARGUMENTE:
     string name - Property, deren Wert(e) ausgelesen werden
     int type  - Art der gewuenschten Information.

BESCHREIBUNG:
     Der Wert einer der inneren Eigenschaften der Property 'name' wird
     zurueckgegeben.  'Type' ist dabei einer der in /sys/thing/properties.h
     und folgend aufgelisteten F_XXX-Werte:

     F_VALUE (==0, Default)
         Unter Umgehung einer eventuell vorhandenen Abfragemethode oder
         _query_'name'() wird der Datenwert der Property 'name'
         zurueckgegeben.
     F_MODE
          Die internen Flags der Property werden zurueckgegeben.Dies koennen
          (logisch mit & verknuepft) sein:
          SAVE  - Property soll bei save_object() gespeichert werden
          PROTECTED - Objekt selbst/EM/Root kann Property manipulieren
          SECURED  - wie PROTECTED, das Flag kann aber nicht
                     zurueckgesetzt werden (immer SECURED)
          NOSETMETHOD - niemand kann Property manipulieren
                        (auch kein F_SET_METHOD oder _set_'name'())
     F_SET_METHOD
          Ein eventuell fuer die Property eingetragene F_SET_METHOD wird
          zurueckgegeben.
          (_set_'name'()-Methoden werden so nicht aufgefuehrt!)
     F_QUERY_METHOD
          Ein eventuell fuer die Property eingetragene F_QUERY_METHOD wird
          zurueckgegeben.
          (_query_'name'()-Methoden werden so nicht aufgefuehrt!)

RUeCKGABEWERT:
     Die gewuenschte Eigenschaft, abhaengig von 'Type'.

BEMERKUNGEN:
     - Query() sollte nicht zum regulaeren Auslesen des Inhalt einer
       Property verwendet werden, da sowohl F_QUERY_METHOD als auch
       libinterne _query_'name'()-Methoden umgangen werden und das Ergebnis
       fuer so veraenderte Propertys undefiniert ist
     - _set_'name'() und _query_'name'() sind alte Propertymethoden und
       sollten nicht in normalen Objekten benutzt werden ->
       F_SET_METHOD/F_QUERY_METHOD (ggf. mit PROTECTED) nutzen
     - F_SET/F_QUERY_METHODs koennen 'protected' (empfohlen) oder 'static'
       sein. _set_/_query_ duerfen momentan _nicht_ 'protected' sein, fuer
       diese geht nur 'static' (in diesem Fall empfohlen).

BEISPIELE:
     // Auslesen des Wertes unter Umgehung einer Abfragemethode
     Query(P_XYZ, F_VALUE);

     // Auslesen der Flags erfaehrt man mit:
     Query(P_XYZ, F_MODE);

     // sauberes Programmieren, wir wollen eine F_QUERY_METHOD setzen,
     // pruefen vorher auf Existenz:
     if(this_player()->Query(P_FROG, F_QUERY_METHOD) {
      write(break_string(
       "Ich kann dich nicht weiter vor Froschsein schuetzen!",
       "Der Magier winkt ab: ", 78));
      say(break_string(
       "Ich kann dich nicht weiter vor Froschsein schuetzen!",
       "Der Magier sagt zu "+this_player()->name(WEM)+": ", 78));
     } else {
      this_player()->Set(P_FROG, #'query_protect_frog, F_QUERY_METHOD);
      ...
     }

SIEHE AUCH:
     Aehnliches: SetProp(L), QueryProp(L), Set(L)
     Generell:  SetProperties(L), QueryProperties(L)
     Konzept:  properties, /std/thing/properties.c
     Sonstiges:  P_AUTOLOADOBJ

28.03.2008, Zesstra
