Okay, with that info and if you could make the macro something like this: #define BitIsOn(ptr, bit) (!!(((BYTE *) (ptr))[(bit)>>3] & (1 << ((bit) & 7)))) /* !! converts to boolean */
then: Reviewed: Pat Kane <[email protected]> Pat ---- P.S. I love C, it is my favorite assembly code. -- PEK On Wed, Nov 24, 2010 at 4:28 PM, Peter Hutterer <[email protected]> wrote: > On Wed, Nov 24, 2010 at 12:18:16PM -0600, Pat Kane wrote: >> What the deal with the "!!" operator? I read it as a double logical >> negation. >> A NOOP, does it have some useful side effect? > > http://stackoverflow.com/questions/1406604/what-does-the-operator-double-exclamation-point-mean-in-javascript > is the first link I found. > > yes, I used to think it was dirty too, but I've grown to like it. > > Cheers, > Peter >> >> On Wed, Nov 24, 2010 at 10:30 AM, walter harms <[email protected]> wrote: >> > >> > >> > Am 24.11.2010 07:25, schrieb Keith Packard: >> >> On Wed, 24 Nov 2010 14:40:11 +1000, Peter Hutterer >> >> <[email protected]> wrote: >> >> >> >>> -#define BitIsOn(ptr, bit) (((BYTE *) (ptr))[(bit)>>3] & (1 << ((bit) & >> >>> 7))) >> >>> +#define BitIsOn(ptr, bit) !!(((BYTE *) (ptr))[(bit)>>3] & (1 << ((bit) >> >>> & 7))) >> >> >> > >> > bit is checked to be less than 8 with "(bit) & 7" but only in the second >> > statement. >> > the linux kernel specifies them as inline code. maybe this is the way to >> > go here also. >> > >> > re, >> > wh > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
