Added bitset macro ops

pull/2463/head
David Garcia Quintas 10 years ago
parent 58ff670f03
commit 305e3bd635
  1. 9
      include/grpc/support/useful.h
  2. 7
      test/core/support/useful_test.c

@ -52,4 +52,13 @@
b = x; \ b = x; \
} while (0) } while (0)
/** Set the \a n-th bit of \a i */
#define GPR_BITSET(i, n) (i |= (1u << n))
/** Clear the \a n-th bit of \a i */
#define GPR_BITCLEAR(i, n) (i &= ~(1u << n))
/** Get the \a n-th bit of \a i */
#define GPR_BITGET(i, n) ((i & (1u << n)) != 0)
#endif /* GRPC_SUPPORT_USEFUL_H */ #endif /* GRPC_SUPPORT_USEFUL_H */

@ -39,6 +39,7 @@
int main(int argc, char **argv) { int main(int argc, char **argv) {
int four[4]; int four[4];
int five[5]; int five[5];
gpr_uint32 bitset = 0;
grpc_test_init(argc, argv); grpc_test_init(argc, argv);
GPR_ASSERT(GPR_MIN(1, 2) == 1); GPR_ASSERT(GPR_MIN(1, 2) == 1);
@ -55,5 +56,11 @@ int main(int argc, char **argv) {
GPR_ASSERT(GPR_ARRAY_SIZE(four) == 4); GPR_ASSERT(GPR_ARRAY_SIZE(four) == 4);
GPR_ASSERT(GPR_ARRAY_SIZE(five) == 5); GPR_ASSERT(GPR_ARRAY_SIZE(five) == 5);
GPR_ASSERT(GPR_BITSET(bitset, 3) == 8);
GPR_ASSERT(GPR_BITGET(bitset, 3) == 1);
GPR_ASSERT(GPR_BITSET(bitset, 1) == 10);
GPR_ASSERT(GPR_BITCLEAR(bitset, 3) == 2);
GPR_ASSERT(GPR_BITGET(bitset, 3) == 0);
return 0; return 0;
} }

Loading…
Cancel
Save