aboutsummaryrefslogtreecommitdiffstats
path: root/emulator/qtools/bitvector.h
diff options
context:
space:
mode:
Diffstat (limited to 'emulator/qtools/bitvector.h')
-rw-r--r--emulator/qtools/bitvector.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/emulator/qtools/bitvector.h b/emulator/qtools/bitvector.h
new file mode 100644
index 0000000..d3f5cf1
--- /dev/null
+++ b/emulator/qtools/bitvector.h
@@ -0,0 +1,40 @@
+// Copyright 2006 The Android Open Source Project
+
+#ifndef BITVECTOR_H
+#define BITVECTOR_H
+
+#include <inttypes.h>
+#include <assert.h>
+
+class Bitvector {
+ public:
+ explicit Bitvector(int num_bits) {
+ num_bits_ = num_bits;
+
+ // Round up to a multiple of 32
+ num_bits = (num_bits + 31) & ~31;
+ vector_ = new uint32_t[num_bits >> 5];
+ }
+ ~Bitvector() {
+ delete[] vector_;
+ }
+
+ void SetBit(int bitnum) {
+ assert(bitnum < num_bits_);
+ vector_[bitnum >> 5] |= 1 << (bitnum & 31);
+ }
+ void ClearBit(int bitnum) {
+ assert(bitnum < num_bits_);
+ vector_[bitnum >> 5] &= ~(1 << (bitnum & 31));
+ }
+ bool GetBit(int bitnum) {
+ assert(bitnum < num_bits_);
+ return (vector_[bitnum >> 5] >> (bitnum & 31)) & 1;
+ }
+
+ private:
+ int num_bits_;
+ uint32_t *vector_;
+};
+
+#endif // BITVECTOR_H