diff options
Diffstat (limited to 'emulator/qtools/bitvector.h')
-rw-r--r-- | emulator/qtools/bitvector.h | 40 |
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 |