|
|
|
@ -34,8 +34,6 @@ |
|
|
|
|
#ifndef GRPC_SUPPORT_USEFUL_H |
|
|
|
|
#define GRPC_SUPPORT_USEFUL_H |
|
|
|
|
|
|
|
|
|
#include <grpc/support/port_platform.h> |
|
|
|
|
|
|
|
|
|
/* useful macros that don't belong anywhere else */ |
|
|
|
|
|
|
|
|
|
#define GPR_MIN(a, b) ((a) < (b) ? (a) : (b)) |
|
|
|
@ -63,11 +61,12 @@ |
|
|
|
|
/** Get the \a n-th bit of \a i */ |
|
|
|
|
#define GPR_BITGET(i, n) (((i) & (1u << n)) != 0) |
|
|
|
|
|
|
|
|
|
#define HEXDIGIT_BITCOUNT_(x) \ |
|
|
|
|
((x) - (((x) >> 1) & 0x77777777) - (((x) >> 2) & 0x33333333) - \
|
|
|
|
|
(((x) >> 3) & 0x11111111)) |
|
|
|
|
|
|
|
|
|
/** Returns number of bits set in bitset \a i */ |
|
|
|
|
static int gpr_bitcount(gpr_uint32 i) { |
|
|
|
|
i = i - ((i >> 1) & 0x55555555); |
|
|
|
|
i = (i & 0x33333333) + ((i >> 2) & 0x33333333); |
|
|
|
|
return (((i + (i >> 4)) & 0xF0F0F0F) * 0x1010101) >> 24; |
|
|
|
|
} |
|
|
|
|
#define GPR_BITCOUNT(x) \ |
|
|
|
|
(((HEXDIGIT_BITCOUNT_(x) + (HEXDIGIT_BITCOUNT_(x) >> 4)) & 0x0F0F0F0F) % 255) |
|
|
|
|
|
|
|
|
|
#endif /* GRPC_SUPPORT_USEFUL_H */ |
|
|
|
|