blob: 0a27959682b468d944b9314d6969e84560d240d6 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001Query()
2=======
3
4FUNKTION
5--------
6::
7
8 public varargs mixed Query(string name, int Type);
9
10DEFINIERT IN
11------------
12::
13
14 /std/thing/properties.c
15
16ARGUMENTE
17---------
18::
19
20 string name - Property, deren Wert(e) ausgelesen werden
21 int type - Art der gewuenschten Information.
22
23BESCHREIBUNG
24------------
25::
26
27 Der Wert einer der inneren Eigenschaften der Property 'name' wird
28 zurueckgegeben. 'Type' ist dabei einer der in /sys/thing/properties.h
29 und folgend aufgelisteten F_XXX-Werte:
30
31 F_VALUE (==0, Default)
32 Unter Umgehung einer eventuell vorhandenen Abfragemethode oder
33 _query_'name'() wird der Datenwert der Property 'name'
34 zurueckgegeben.
35 F_MODE
36 Die internen Flags der Property werden zurueckgegeben.Dies koennen
37 (logisch mit & verknuepft) sein:
38 SAVE - Property soll bei save_object() gespeichert werden
39 PROTECTED - Objekt selbst/EM/Root kann Property manipulieren
40 SECURED - wie PROTECTED, das Flag kann aber nicht
41 zurueckgesetzt werden (immer SECURED)
42 NOSETMETHOD - niemand kann Property manipulieren
43 (auch kein F_SET_METHOD oder _set_'name'())
44 F_SET_METHOD
45 Ein eventuell fuer die Property eingetragene F_SET_METHOD wird
46 zurueckgegeben.
47 (_set_'name'()-Methoden werden so nicht aufgefuehrt!)
48 F_QUERY_METHOD
49 Ein eventuell fuer die Property eingetragene F_QUERY_METHOD wird
50 zurueckgegeben.
51 (_query_'name'()-Methoden werden so nicht aufgefuehrt!)
52
53RUeCKGABEWERT
54-------------
55::
56
57 Die gewuenschte Eigenschaft, abhaengig von 'Type'.
58
59BEMERKUNGEN
60-----------
61::
62
63 - Query() sollte nicht zum regulaeren Auslesen des Inhalt einer
64 Property verwendet werden, da sowohl F_QUERY_METHOD als auch
65 libinterne _query_'name'()-Methoden umgangen werden und das Ergebnis
66 fuer so veraenderte Propertys undefiniert ist
67 - _set_'name'() und _query_'name'() sind alte Propertymethoden und
68 sollten nicht in normalen Objekten benutzt werden ->
69 F_SET_METHOD/F_QUERY_METHOD (ggf. mit PROTECTED) nutzen
70 - F_SET/F_QUERY_METHODs koennen 'protected' (empfohlen) oder 'static'
71 sein. _set_/_query_ duerfen momentan _nicht_ 'protected' sein, fuer
72 diese geht nur 'static' (in diesem Fall empfohlen).
73
74BEISPIELE
75---------
76::
77
78 // Auslesen des Wertes unter Umgehung einer Abfragemethode
79 Query(P_XYZ, F_VALUE);
80
81 // Auslesen der Flags erfaehrt man mit:
82 Query(P_XYZ, F_MODE);
83
84 // sauberes Programmieren, wir wollen eine F_QUERY_METHOD setzen,
85 // pruefen vorher auf Existenz:
86 if(this_player()->Query(P_FROG, F_QUERY_METHOD) {
87 write(break_string(
88 "Ich kann dich nicht weiter vor Froschsein schuetzen!",
89 "Der Magier winkt ab: ", 78));
90 say(break_string(
91 "Ich kann dich nicht weiter vor Froschsein schuetzen!",
92 "Der Magier sagt zu "+this_player()->name(WEM)+": ", 78));
93 } else {
94 this_player()->Set(P_FROG, #'query_protect_frog, F_QUERY_METHOD);
95 ...
96 }
97
98SIEHE AUCH
99----------
100::
101
102 Aehnliches: SetProp(L), QueryProp(L), Set(L)
103 Generell: SetProperties(L), QueryProperties(L)
104 Konzept: properties, /std/thing/properties.c
105 Sonstiges: P_AUTOLOADOBJ
106
10728.03.2008, Zesstra
108