P_INTERNAL_EXTRA_LOOK-Dokumentation und Konstanten
* Dokumentation ueberarbeitet und praezisiert
* magic numbers fuer Rueckgabewerte und Schluessel durch
Konstanten in Header/im Code ersetzt
Change-Id: I3d38867f24510ef4fc97d7f3cdf350e169a63ccd
diff --git a/std/living/description.c b/std/living/description.c
index b6f63c2..af3bd94 100644
--- a/std/living/description.c
+++ b/std/living/description.c
@@ -24,6 +24,13 @@
#include <class.h>
#include <sys_debug.h>
+#define XL_DURATION "xlduration"
+#define XL_LOOKSTR "xllook"
+#define XL_FUN "xlfun"
+#define XL_ENDMSG "xlende"
+#define XL_ENDFUN "xlendefun"
+#define XL_OBJNAME "xlobjectname"
+
public string _query_internal_extralook() {
mixed xl;
int zeit;
@@ -34,7 +41,7 @@
return(0);
foreach(string key, mapping xld: xl) {
- if (intp(zeit=xld["xlduration"])) {
+ if (intp(zeit=xld[XL_DURATION])) {
//hat offenbar nen Ablaufdatum
if ( (zeit > 0 && zeit < time()) ||
(zeit < 0 && abs(zeit) < object_time(ME)) ) {
@@ -45,12 +52,12 @@
m_delete(xl,key);
// ggf. Meldung ausgeben
if (interactive(ME)) {
- if (sizeof(xld["xlende"])) {
- tell_object(ME,xld["xlende"]);
+ if (sizeof(xld[XL_ENDMSG])) {
+ tell_object(ME,xld[XL_ENDMSG]);
}
//kein einfacher String, aber Objekt+Funktion gegeben?
- else if (sizeof(xld["xlendefun"]) && sizeof(xld["xlobjectname"]) &&
- (!catch(res=call_other(xld["xlobjectname"],xld["xlendefun"],ME)
+ else if (sizeof(xld[XL_ENDFUN]) && sizeof(xld[XL_OBJNAME]) &&
+ (!catch(res=call_other(xld[XL_OBJNAME],xld[XL_ENDFUN],ME)
;publish))) {
if (stringp(res) && sizeof(res))
tell_object(ME,res);
@@ -61,11 +68,11 @@
}
// Der Eintrag ist offenbar noch gueltig, Meldung anhaengen, bzw. via
// Funktionsaufruf beschaffen.
- if (sizeof(xld["xllook"]))
- look+=xld["xllook"];
- else if (sizeof(xld["xlfun"]) && sizeof(xld["xlobjectname"])) {
+ if (sizeof(xld[XL_LOOKSTR]))
+ look+=xld[XL_LOOKSTR];
+ else if (sizeof(xld[XL_FUN]) && sizeof(xld[XL_OBJNAME])) {
closure cl;
- if (catch(cl=symbol_function(xld["xlfun"],xld["xlobjectname"]);publish)
+ if (catch(cl=symbol_function(xld[XL_FUN],xld[XL_OBJNAME]);publish)
|| !cl) {
// wenn Fehler beim Laden/Closure erstellen, dann Eintrag loeschen
// -> Annahme, dass dieser Fehler permanent sein wird, z.B. Eintrag
@@ -90,6 +97,7 @@
return(0);
}
+
public varargs int AddExtraLook(string look, int duration, string key,
string lookende, object ob) {
mapping xl;
@@ -98,22 +106,22 @@
// Automatisch erzeugen, wenn moeglich
if (!objectp(previous_object()) ||
!stringp(key=object_name(previous_object())) || !sizeof(key))
- return(-1);
+ return XL_NOKEY;
}
if (!stringp(look) || !sizeof(look))
- return(-2);
+ return XL_INVALIDEXTRALOOK;
if (!intp(duration))
- return(-3);
+ return XL_INVALIDDURATION;;
xl=Query(P_INTERNAL_EXTRA_LOOK,F_VALUE); // dran denken: liefert referenz zurueck
if (!mappingp(xl)) {
- Set(P_INTERNAL_EXTRA_LOOK, xl=([]) );
+ Set(P_INTERNAL_EXTRA_LOOK, xl=([]));
}
// kein Automatisches Ueberschreiben.
if (member(xl,key))
- return(-4);
+ return XL_KEYEXISTS;
// neg. Werte: "bis Ende/reboot", abs(duration) == Eintragzeit
// 0: "fuer ewig", >0: Zeitdauer in Sekunden
@@ -135,30 +143,30 @@
"permanente Extralooks durch Clone (%s) nicht registrierbar.\n",
duration, object_name(ob)));
- xl[key]=(["xlobjectname":object_name(ob),
- "xlfun": look,
+ xl[key]=([XL_OBJNAME:object_name(ob),
+ XL_FUN: look,
]);
// ggf. Name der Funktion speichern, die bei Ablauf aufgerufen wird.
if (stringp(lookende) && sizeof(lookende))
- xl[key]["xlendefun"]=lookende;
+ xl[key][XL_ENDFUN]=lookende;
}
else {
// Einfacher Eintrag, nur den bearbeiteten String merken. ;-)
- xl[key]=(["xllook": break_string(replace_personal(look,({ME}),1),78,
+ xl[key]=([XL_LOOKSTR: break_string(replace_personal(look,({ME}),1),78,
"",BS_LEAVE_MY_LFS),
]);
// ggf. Meldung speichern, die bei Ablauf ausgegeben werden soll.
if (stringp(lookende) && sizeof(lookende)) {
- xl[key]["xlende"]=break_string(replace_personal(lookende,({ME}),1),78,
+ xl[key][XL_ENDMSG]=break_string(replace_personal(lookende,({ME}),1),78,
"",BS_LEAVE_MY_LFS);
}
}
// Endezeit vermerken.
if (duration != 0)
- xl[key]["xlduration"]=duration;
+ xl[key][XL_DURATION]=duration;
// Kein Set noetig, weil Query das Mapping ja als Referenz lieferte.
- return(1);
+ return XL_OK;
}
public int RemoveExtraLook(string key) {
@@ -167,17 +175,17 @@
// Automatisch erzeugen, wenn moeglich
if (!objectp(previous_object()) ||
!stringp(key=object_name(previous_object())) || !sizeof(key))
- return(-1);
+ return XL_NOKEY;
}
xl=Query(P_INTERNAL_EXTRA_LOOK,F_VALUE); // dran denken: liefert referenz zurueck
if (!mappingp(xl))
- return (-2);
+ return XL_KEYDOESNOTEXIST;
if (!member(xl,key))
- return(-2);
+ return XL_KEYDOESNOTEXIST;
m_delete(xl,key);
// Kein Set noetig, weil Query das Mapping ja als Referenz lieferte.
- return(1);
+ return XL_OK;
}
void create()