On Sat, Jul 9, 2011 at 7:24 PM, Mark Wiebe <[email protected]> wrote: > On Sat, Jul 9, 2011 at 2:38 PM, Nathaniel Smith <[email protected]> wrote: >> >> On Sat, Jul 9, 2011 at 11:29 AM, Mark Wiebe <[email protected]> wrote: >> > typedef npy_uint8 npy_mask; >> > #define NPY_MASK NPY_UINT8 >> > #define NPY_MASK_ISEXPOSED(mask) (((mask)&0x01) != 0) >> > #define NPY_MASK_GETPAYLOAD(mask) (((npy_mask)mask) >> 1) >> > #define NPY_MASK_MAKEMASK(exposed, payload) ((npy_mask)(exposed&0x01) | >> > (npy_mask)(payload << 1)) >> >> Even better, these should be inline functions instead of macros... (or >> is there some horrible old compiler that we care about that that >> wouldn't work for?) > > That's a good idea, it's always worthwhile to use the little bit of type > checking the C compiler will let you. NumPy has a macro NPY_INLINE which is > used to define inline functions.
Well, type checking, plus avoiding some of the horrible bizarre pitfalls of using macros. Try running NPY_MASK_MAKEMASK(value > 2, payload1 || payload2) with the above definitions... It's a lot easier to just use functions and not have to spend energy checking for that sort of nonsense :-). -- Nathaniel _______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
