A thought I just had about this comment in structs.h...
/*
* Eventually we want to be able to redefine the below to any arbitrary
* value. This will allow us to use unsigned data types to get more
* room and also remove the '< 0' checks all over that implicitly
* assume these values. -gg 12/17/99
*/
#define NOWHERE -1 /* nil reference for room-database */
#define NOTHING -1 /* nil reference for objects */
#define NOBODY -1 /* nil reference for mobiles */
Most places where these values are tested do so to avoid crashing the
MUD by indexing an array with a negative value. If, for some unknown
reason, the value being tested is not -1 but is another negative number
(for example, -2) than the '< 0' test would do what we really want while
the '== NO...' test will come back false and trick the MUD into thinking
that the value is good. As a solution I would recommend creating macros
to do the tests which will for now test for '< 0' but if the data type
is changed to unsigned the macro which does the test can easily be
changed to '== NO...' at that time, something like this...
#define IS_NOWHERE(nr) ((nr) < 0)
#define IS_NOTHING(nr) ((nr) < 0)
#define IS_NOBODY(nr) ((nr) < 0)
Which could later be changed to...
#define IS_NOWHERE(nr) ((nr) == NOWHERE)
...
If you really want to get fancy (mutters about how nice a mudlogf()
would be for this)...
#define IS_NOWHERE(nr) ((nr) == NOWHERE ? TRUE : \
((nr) >= 0 ? FALSE : \
log("%s: %d: SYSERR: %d passed to IS_NOWHERE().", \
__FILE__, __LINE__, (nr)), TRUE))
Regards, Peter
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/04/01 PST