From 06127927ffb4eb8459523f6c07bf8f22390c31b9 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Fri, 15 Jun 2018 11:13:45 -0300 Subject: [PATCH] new macro 'ispow2' --- llimits.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/llimits.h b/llimits.h index 725d7c8b..715d55b8 100644 --- a/llimits.h +++ b/llimits.h @@ -1,5 +1,5 @@ /* -** $Id: llimits.h,v 1.149 2018/01/28 15:13:26 roberto Exp roberto $ +** $Id: llimits.h,v 1.150 2018/05/30 14:25:52 roberto Exp roberto $ ** Limits, basic types, and some other 'installation-dependent' definitions ** See Copyright Notice in lua.h */ @@ -59,6 +59,12 @@ typedef signed char ls_byte; #define log2maxs(t) (sizeof(t) * 8 - 2) +/* +** test whether an unsigned value is a power of 2 (or zero) +*/ +#define ispow2(x) (((x) & ((x) - 1)) == 0) + + /* ** conversion of pointer to unsigned integer: ** this is for hashing only; there is no problem if the integer