diff --git a/ase/macros.h b/ase/macros.h index 17fd6a63..8e54200c 100644 --- a/ase/macros.h +++ b/ase/macros.h @@ -1,5 +1,5 @@ /* - * $Id: macros.h,v 1.15 2005-03-30 10:21:33 bacon Exp $ + * $Id: macros.h,v 1.16 2005-03-30 10:48:17 bacon Exp $ */ #ifndef _XP_MACROS_H_ @@ -24,12 +24,15 @@ #define xp_main main #endif -#define XP_TYPE_IS_SIGNED(type) (!(((type)0) < ((type)-1))) +#define XP_TYPE_IS_SIGNED(type) (((type)0) > ((type)-1)) +#define XP_TYPE_IS_UNSIGNED(type) (((type)0) < ((type)-1)) #define XP_TYPE_MAX(type) \ ((XP_TYPE_IS_SIGNED(type)? (type)~((type)1 << (xp_sizeof(type) * 8 - 1)): (type)(~(type)0))) #define XP_TYPE_MIN(type) \ ((XP_TYPE_IS_SIGNED(type)? (type)((type)1 << (xp_sizeof(type) * 8 - 1)): (type)0)) +#define XP_NUM_IS_POW2(x) (((x) & ((x) - 1)) == 0) + #define XP_LOOP_CONTINUE(id) goto __loop_ ## id ## _begin__; #define XP_LOOP_BREAK(id) goto __loop_ ## id ## _end__; #define XP_LOOP_BEGIN(id) __loop_ ## id ## _begin__: {