summaryrefslogtreecommitdiff
path: root/src/misc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/misc.cpp')
-rw-r--r--src/misc.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/misc.cpp b/src/misc.cpp
index 2dd2750d0..d143980c4 100644
--- a/src/misc.cpp
+++ b/src/misc.cpp
@@ -270,6 +270,21 @@ int FindFirstBit(uint32 value)
return i;
}
+int CountBitsSet(uint32 value)
+{
+ int num;
+
+ /* This loop is only called once for every bit set by clearing the lowest
+ * bit in each loop. The number of bits is therefore equal to the number of
+ * times the loop was called. It was found at the following website:
+ * http://graphics.stanford.edu/~seander/bithacks.html */
+
+ for (num = 0; value != 0; num++) {
+ value &= value - 1;
+ }
+
+ return num;
+}
static void Save_NAME()
{