Utility.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "utils/Utility.h"
  2. int Core::popcount(int i) {
  3. int count = 0;
  4. static constexpr int map[16] = {
  5. 0, // 0000
  6. 1, // 0001
  7. 1, // 0010
  8. 2, // 0011
  9. 1, // 0100
  10. 2, // 0101
  11. 2, // 0110
  12. 3, // 0111
  13. 1, // 1000
  14. 2, // 1001
  15. 2, // 1010
  16. 3, // 1011
  17. 2, // 1100
  18. 3, // 1101
  19. 3, // 1110
  20. 4, // 1111
  21. };
  22. for(int k = 0; k < static_cast<int>(sizeof(int) * 8); k += 4) {
  23. count += map[(i >> k) & 0xF];
  24. }
  25. return count;
  26. }
  27. void* operator new(size_t bytes) noexcept {
  28. return malloc(bytes);
  29. }
  30. void* operator new[](size_t bytes) noexcept {
  31. return malloc(bytes);
  32. }
  33. void operator delete(void* p) noexcept {
  34. free(p);
  35. }
  36. void operator delete[](void* p) noexcept {
  37. free(p);
  38. }
  39. void operator delete(void* p, size_t bytes) noexcept {
  40. (void)bytes;
  41. free(p);
  42. }
  43. void operator delete[](void* p, size_t bytes) noexcept {
  44. (void)bytes;
  45. free(p);
  46. }
  47. void* operator new(size_t bytes, void* p) noexcept {
  48. (void)bytes;
  49. return p;
  50. }
  51. void* operator new[](size_t bytes, void* p) noexcept {
  52. (void)bytes;
  53. return p;
  54. }