On 11/02/2011 05:13 PM, Peter Hutterer wrote: > On Wed, Nov 02, 2011 at 02:31:33PM +0100, walter harms wrote: >> >> >> Am 02.11.2011 14:15, schrieb Chase Douglas: >>> On 11/02/2011 07:29 AM, walter harms wrote: >>>> >>>> >>>> Am 02.11.2011 00:52, schrieb Peter Hutterer: >>>>> Introduced in xf86-input-evdev-2.6.0-26-g4969389 >>>>> >>>>> Signed-off-by: Peter Hutterer <[email protected]> >>>>> --- >>>>> Cutting long to int for the return value loses us some values, notably in >>>>> the ABS_MT ranges. >>>>> >>>>> src/evdev.c | 2 +- >>>>> 1 files changed, 1 insertions(+), 1 deletions(-) >>>>> >>>>> diff --git a/src/evdev.c b/src/evdev.c >>>>> index f593df0..6ab1a18 100644 >>>>> --- a/src/evdev.c >>>>> +++ b/src/evdev.c >>>>> @@ -190,7 +190,7 @@ static size_t EvdevCountBits(unsigned long *array, >>>>> size_t nlongs) >>>>> >>>>> static inline int EvdevBitIsSet(const unsigned long *array, int bit) >>>>> { >>>>> - return array[bit / LONG_BITS] & (1LL << (bit % LONG_BITS)); >>>>> + return !!(array[bit / LONG_BITS] & (1LL << (bit % LONG_BITS))); >>>>> } >>>>> >>>>> static inline void EvdevSetBit(unsigned long *array, int bit) >>>> >>>> hi, >>>> i have never seen that !! notation. perhaps (array == 0) would be more >>>> readable and >>>> not suprise to much people ? >>> >>> I would like to echo this. I actually don't know what the '!!' does >>> here. Since this is a one-off issue, can you add a comment to explain >>> what it is doing? >>> >> >> IMHO the following happens: >> >> The first ! translates 0 (type long) into !0 (type int) >> and translates !0 (type long) into 0 (type int) >> >> Now you have int but the logic is reversed, so you need a second ! > > That question has come up in the past: > http://lists.x.org/archives/xorg-devel/2010-November/015942.html > > for any numeric value x, !!x is the boolean equivalent of that > numeric value, 0 for x == 0 and 1 for x != 0 (technically !0 I guess but > practically it's 1). > > We're already using this in a few places, e.g. BitIsOn(). It's quite common > with plenty of instances in e.g. mesa or the kernel (the two repos I quickly > grepped for it).
Fair enough. I still like seeing a comment since even seasoned (at least I'd like to think so :) developers know what's going on without having to think about it. It's up to you though. Reviewed-by: Chase Douglas <[email protected]> _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
