Enable clang tidy/warnings for tests
[alexxy/gromacs.git] / src / gromacs / utility / bitmask.h
index 40b897bff3521adf2a502cc47aa0d361e0d47ad5..d0e3c095726a060771321157c7d885ca5d5bc715 100644 (file)
@@ -48,6 +48,8 @@
 
 #include <string.h>
 
+#include <array>
+
 #include "gromacs/utility/basedefinitions.h"
 
 /*! \brief Size of bitmask. Has to be 32 or multiple of 64. */
@@ -121,34 +123,34 @@ inline static void bitmask_union(gmx_bitmask_t* a, gmx_bitmask_t b)
 }
 #else
 #define BITMASK_ALEN (BITMASK_SIZE/64)
-typedef uint64_t gmx_bitmask_t[BITMASK_ALEN];
+using gmx_bitmask_t = std::array<uint64_t, BITMASK_ALEN>;
 
 inline static void bitmask_clear(gmx_bitmask_t* m)
 {
-    memset(*m, 0, BITMASK_SIZE/8);
+    m->fill(0);
 }
 
 inline static void bitmask_set_bit(gmx_bitmask_t* m, int b)
 {
-    (*m)[b/64] |= ((uint64_t)1 << (b%64));
+    (*m)[b/64] |= (static_cast<uint64_t>(1) << (b%64));
 }
 
 inline static void bitmask_init_bit(gmx_bitmask_t* m, int b)
 {
     bitmask_clear(m);
-    (*m)[b/64] = ((uint64_t)1 << (b%64));
+    (*m)[b/64] = (static_cast<uint64_t>(1) << (b%64));
 }
 
 inline static void bitmask_init_low_bits(gmx_bitmask_t* m, int b)
 {
-    memset(*m, 255, b/64*8);
-    (*m)[b/64] = ((uint64_t)1 << (b%64)) - 1;
-    memset(&(*m)[b/64+1], 0, (BITMASK_ALEN-b/64-1)*8);
+    memset(m->data(), 255, b/64*8);
+    (*m)[b/64] = (static_cast<uint64_t>(1) << (b%64)) - 1;
+    memset(&(m->data())[b/64+1], 0, (BITMASK_ALEN-b/64-1)*8);
 }
 
 inline static bool bitmask_is_set(gmx_bitmask_t m, int b)
 {
-    return (m[b/64] & ((uint64_t)1 << (b%64))) != 0;
+    return (m[b/64] & (static_cast<uint64_t>(1) << (b%64))) != 0;
 }
 
 inline static bool bitmask_is_disjoint(gmx_bitmask_t a, gmx_bitmask_t b)