Re: Expanding on the GET_ROOM_XXX macros

From: George (greerga@CIRCLEMUD.ORG)
Date: 06/05/98

On Fri, 5 Jun 1998, John Evans wrote:

>I spotted the GET_ROOM_VNUM() macro while hand patching in bp12->bpl13
>(AAAHHHH!!!!!) and decided that a GET_ROOM_NAME()  macro would fit nicely.
>There are probably some others that could be made, but I'm too tired to
>think of them at the moment.

I'll eventually add more to cover most array handling cases.

>Anyway, perhaps add this to bpl14?
>#define GET_ROOM_NAME(rnum) \
>        ((rnum) >= 0 && (rnum) <= top_of_world ? \
>         world[(rnum)].name : "NoWhere")

I like the more instrusive:

#define GET_ROOM_NAME(rnum)     (*(((rnum) < 0 || (rnum) > top_of_world) ?\
        (log("SYSERR: Out of range world index %d at %s:%d.", (rnum),   \
        __FILE__, __LINE__), &world[0].name) : &world[(rnum)].name))

(Not sure if balanced ()'s there.)

That allows:

GET_ROOM_NAME(rnum) = str_dup("string");


fprintf(file, "%s\n", GET_ROOM_NAME(rnum));

Although the macro above might be (rightfully) called 'scary'...

George Greer, | Genius may have its limitations, but          | stupidity is not thus handicapped.    |                  -- Elbert Hubbard

     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | |

This archive was generated by hypermail 2b30 : 12/15/00 PST