mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Extend size_t support in pg_bitutils.h.
Use a more compact notation that allows us to add more size_t variants as required. This will be used by a later commit. Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/CA%2BhUKG%2B7dSX1XF8yFGmYk-%3D48dbjH2kmzZj16XvhbrWP-9BzRg%40mail.gmail.com
This commit is contained in:
parent
a4f09ef229
commit
3225399021
@ -175,16 +175,6 @@ pg_nextpower2_64(uint64 num)
|
|||||||
return ((uint64) 1) << (pg_leftmost_one_pos64(num) + 1);
|
return ((uint64) 1) << (pg_leftmost_one_pos64(num) + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* pg_nextpower2_size_t
|
|
||||||
* Returns the next higher power of 2 above 'num', for a size_t input.
|
|
||||||
*/
|
|
||||||
#if SIZEOF_SIZE_T == 4
|
|
||||||
#define pg_nextpower2_size_t(num) pg_nextpower2_32(num)
|
|
||||||
#else
|
|
||||||
#define pg_nextpower2_size_t(num) pg_nextpower2_64(num)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pg_prevpower2_32
|
* pg_prevpower2_32
|
||||||
* Returns the next lower power of 2 below 'num', or 'num' if it's
|
* Returns the next lower power of 2 below 'num', or 'num' if it's
|
||||||
@ -211,16 +201,6 @@ pg_prevpower2_64(uint64 num)
|
|||||||
return ((uint64) 1) << pg_leftmost_one_pos64(num);
|
return ((uint64) 1) << pg_leftmost_one_pos64(num);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* pg_prevpower2_size_t
|
|
||||||
* Returns the next lower power of 2 below 'num', for a size_t input.
|
|
||||||
*/
|
|
||||||
#if SIZEOF_SIZE_T == 4
|
|
||||||
#define pg_prevpower2_size_t(num) pg_prevpower2_32(num)
|
|
||||||
#else
|
|
||||||
#define pg_prevpower2_size_t(num) pg_prevpower2_64(num)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pg_ceil_log2_32
|
* pg_ceil_log2_32
|
||||||
* Returns equivalent of ceil(log2(num))
|
* Returns equivalent of ceil(log2(num))
|
||||||
@ -299,4 +279,16 @@ pg_rotate_left32(uint32 word, int n)
|
|||||||
return (word << n) | (word >> (32 - n));
|
return (word << n) | (word >> (32 - n));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* size_t variants of the above, as required */
|
||||||
|
|
||||||
|
#if SIZEOF_SIZE_T == 4
|
||||||
|
#define pg_leftmost_one_pos_size_t pg_leftmost_one_pos32
|
||||||
|
#define pg_nextpower2_size_t pg_nextpower2_32
|
||||||
|
#define pg_prevpower2_size_t pg_prevpower2_32
|
||||||
|
#else
|
||||||
|
#define pg_leftmost_one_pos_size_t pg_leftmost_one_pos64
|
||||||
|
#define pg_nextpower2_size_t pg_nextpower2_64
|
||||||
|
#define pg_prevpower2_size_t pg_prevpower2_64
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* PG_BITUTILS_H */
|
#endif /* PG_BITUTILS_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user