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