]> granicus.if.org Git - nethack/commitdiff
zeroany [trunk only]
authornethack.allison <nethack.allison>
Sun, 9 Jul 2006 16:25:39 +0000 (16:25 +0000)
committernethack.allison <nethack.allison>
Sun, 9 Jul 2006 16:25:39 +0000 (16:25 +0000)
Avoid function call when clearing 'anything' union.

include/decl.h
src/decl.c
src/hack.c
src/light.c
src/region.c
src/timeout.c

index 984d3f097f224f3ad1396ba11527b059c68f49af..511e67c2baf5ba3642ecfbbf8a070d2d4286bbdc 100644 (file)
@@ -250,6 +250,7 @@ E NEARDATA struct obj *uball;
 E NEARDATA struct obj *migrating_objs;
 E NEARDATA struct obj *billobjs;
 E NEARDATA struct obj zeroobj;         /* init'd and defined in decl.c */
+E NEARDATA anything zeroany;           /* init'd and defined in decl.c */
 
 #include "you.h"
 E NEARDATA struct you u;
index 8d1fbfbec794d1fe5d26273104bac68fa13571be..4640d3534a57fa761765b41215d0301ff5db746f 100644 (file)
@@ -194,6 +194,8 @@ NEARDATA struct obj *billobjs = (struct obj *)0;
 
 /* used to zero all elements of a struct obj */
 NEARDATA struct obj zeroobj = DUMMY;
+/* used to zero out union any*/
+NEARDATA anything zeroany = DUMMY;
 
 /* originally from dog.c */
 NEARDATA char dogname[PL_PSIZ] = DUMMY;
index 2d2474847419237f2a18ecc5a664e946965a0b59..df33a4e84e12339b7b336754b04a88098c4d853a 100644 (file)
@@ -25,7 +25,7 @@ anything *
 uint_to_any(ui)
 unsigned ui;
 {
-    zero_anything(&tmp_anything);
+    tmp_anything = zeroany;
     tmp_anything.a_uint = ui;
     return &tmp_anything;
 }
@@ -34,7 +34,7 @@ anything *
 long_to_any(lng)
 unsigned lng;
 {
-    zero_anything(&tmp_anything);
+    tmp_anything = zeroany;
     tmp_anything.a_long = lng;
     return &tmp_anything;
 }
@@ -43,7 +43,7 @@ anything *
 monst_to_any(mtmp)
 struct monst *mtmp;
 {
-    zero_anything(&tmp_anything);
+    tmp_anything = zeroany;
     tmp_anything.a_monst = mtmp;
     return &tmp_anything;
 }
@@ -52,7 +52,7 @@ anything *
 obj_to_any(obj)
 struct obj *obj;
 {
-    zero_anything(&tmp_anything);
+    tmp_anything = zeroany;
     tmp_anything.a_obj = obj;
     return &tmp_anything;
 }
index 2770ed20956c29b4db09133f811909b2707b0082..1940a84349186e873c9ef17d92a3ab1597837be1 100644 (file)
@@ -92,8 +92,7 @@ del_light_source(type, id)
     light_source *curr, *prev;
     anything tmp_id;
 
-    zero_anything(&tmp_id);
-
+    tmp_id = zeroany;
     /* need to be prepared for dealing a with light source which
        has only been partially restored during a level change
        (in particular: chameleon vs prot. from shape changers) */
@@ -390,7 +389,7 @@ write_ls(fd, ls)
            arg_save = ls->id;
            if (ls->type == LS_OBJECT) {
                otmp = ls->id.a_obj;
-               zero_anything(&ls->id);
+               ls->id = zeroany;
                ls->id.a_uint = otmp->o_id;
 #ifdef DEBUG
                if (find_oid((unsigned)ls->id) != otmp)
@@ -398,7 +397,7 @@ write_ls(fd, ls)
 #endif
            } else { /* ls->type == LS_MONSTER */
                mtmp = (struct monst *)ls->id.a_monst;
-               zero_anything(&ls->id);
+               ls->id = zeroany;
                ls->id.a_uint = mtmp->m_id;
 #ifdef DEBUG
                if (find_mid((unsigned)ls->id, FM_EVERYWHERE) != mtmp)
index b719cdce4fcb957f2ca02dbd6f284a287797cffd..4aa3761ab24861a798cb0b5edb2aeaa7967ddc30 100644 (file)
@@ -131,7 +131,7 @@ int nrect;
     reg->n_monst = 0;
     reg->max_monst = 0;
     reg->monsters = (unsigned int *)0;
-    zero_anything(&reg->arg);
+    reg->arg = zeroany;
     return reg;
 }
 
@@ -901,7 +901,7 @@ genericptr_t p2;    /* unused here */
     /* If it was a thick cloud, it dissipates a little first */
     if (damage >= 5) {
        damage /= 2;            /* It dissipates, let's do less damage */
-       zero_anything(&reg->arg);
+       reg->arg = zeroany;
        reg->arg.a_int = damage;
        reg->ttl = 2L;          /* Here's the trick : reset ttl */
        return FALSE;           /* THEN return FALSE, means "still there" */
@@ -995,7 +995,7 @@ int damage;
        set_heros_fault(cloud);         /* assume player has created it */
     cloud->inside_f = INSIDE_GAS_CLOUD;
     cloud->expire_f = EXPIRE_GAS_CLOUD;
-    zero_anything(&cloud->arg);
+    cloud->arg = zeroany;
     cloud->arg.a_int = damage;
     cloud->visible = TRUE;
     cloud->glyph = cmap_to_glyph(S_cloud);
index beb5c37641c81563c7e518c38da64d81db5c77a1..70d3215371b7b6d89762fdbd93dfbe06fdc46698 100644 (file)
@@ -1723,8 +1723,7 @@ write_timer(fd, timer)
 {
     anything arg_save;
 
-    zero_anything(&arg_save);
-
+    arg_save = zeroany;
     switch (timer->kind) {
        case TIMER_GLOBAL:
        case TIMER_LEVEL:
@@ -1738,7 +1737,7 @@ write_timer(fd, timer)
            else {
                /* replace object pointer with id */
                arg_save.a_obj = timer->arg.a_obj;
-               zero_anything(&timer->arg);
+               timer->arg = zeroany;
                timer->arg.a_uint = (arg_save.a_obj)->o_id;
                timer->needs_fixup = 1;
                bwrite(fd, (genericptr_t)timer, sizeof(timer_element));
@@ -1753,7 +1752,7 @@ write_timer(fd, timer)
            else {
                /* replace monster pointer with id */
                arg_save.a_monst = timer->arg.a_monst;
-               zero_anything(&timer->arg);
+               timer->arg = zeroany;
                timer->arg.a_uint = (arg_save.a_monst)->m_id;
                timer->needs_fixup = 1;
                bwrite(fd, (genericptr_t)timer, sizeof(timer_element));