| |
| 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 |