Re: [CIRCLE][CODE][32 bit array]

From: Daniel Koepke (dkoepke@california.com)
Date: 12/19/96


On Thu, 19 Dec 1996, The Dark One wrote:

> could I do this?
> #define AFF_FLAGS(ch) ((ch)->char_specials.save.affected_by[4])

You wouldn't want to, since that'd still just give you 32 bits.  You
want the following two macros:

  #define FIELD(x)	((x) < 32 ? 1 : (x) / 32)
  #define BIT(x)        ((x) < 32 ? (x) : (x) % 32)

Now we change AFF_FLAGS(ch) to:

  #define AFF_FLAGS(ch, v) ((ch)->char_specials.saved.affected_by[(v)])

And AFF_FLAGGED(ch) to:

  #define AFF_FLAGGED(ch, bit) \
    IS_SET(AFF_FLAGS((ch), FIELD(bit)), (1 << BIT(bit)))

Note that I changed the original posters FIELD/BIT [whatever he named
them] macros.  BIT(x) was original defined as ((x) % 32) which, when the
number was under 32 would return a decimal value [and always equate to
1].  I've still yet to test this, but it seems feasible from where I'm
sitting...


--
Daniel Koepke
dkoepke@california.com
Forgive me father, for I am sin.


+-----------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
|   http://cspo.queensu.ca/~fletcher/Circle/list_faq.html   |
+-----------------------------------------------------------+



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