comparison base/ResizeableBitset.h @ 546:95391b480e17

* Make use of peak cache in spectrogram
author Chris Cannam
date Wed, 04 Feb 2009 15:03:42 +0000
parents 146eb9e35baa
children 1469caaa8e67
comparison
equal deleted inserted replaced
545:c603d9439b37 546:95391b480e17
22 class ResizeableBitset { 22 class ResizeableBitset {
23 23
24 public: 24 public:
25 ResizeableBitset() : m_bits(0) { 25 ResizeableBitset() : m_bits(0) {
26 } 26 }
27 ResizeableBitset(size_t size) : m_bits(new std::vector<uint8_t>) { 27 ResizeableBitset(size_t size) : m_bits(new std::vector<uint8_t>), m_size(size) {
28 m_bits->assign((size >> 3) + 1, 0); 28 m_bits->assign((size >> 3) + 1, 0);
29 } 29 }
30 ResizeableBitset(const ResizeableBitset &b) { 30 ResizeableBitset(const ResizeableBitset &b) {
31 m_bits = new std::vector<uint8_t>(*b.m_bits); 31 m_bits = new std::vector<uint8_t>(*b.m_bits);
32 } 32 }
44 if (!m_bits || bits < m_bits->size()) { 44 if (!m_bits || bits < m_bits->size()) {
45 delete m_bits; 45 delete m_bits;
46 m_bits = new std::vector<uint8_t>; 46 m_bits = new std::vector<uint8_t>;
47 } 47 }
48 m_bits->assign((bits >> 3) + 1, 0); 48 m_bits->assign((bits >> 3) + 1, 0);
49 m_size = bits;
49 } 50 }
50 51
51 bool get(size_t column) const { 52 bool get(size_t column) const {
52 return ((*m_bits)[column >> 3]) & (1u << (column & 0x07)); 53 return ((*m_bits)[column >> 3]) & (1u << (column & 0x07));
53 } 54 }
61 } 62 }
62 63
63 void copy(size_t source, size_t dest) { 64 void copy(size_t source, size_t dest) {
64 get(source) ? set(dest) : reset(dest); 65 get(source) ? set(dest) : reset(dest);
65 } 66 }
67
68 size_t size() const {
69 return m_size;
70 }
66 71
67 private: 72 private:
68 std::vector<uint8_t> *m_bits; 73 std::vector<uint8_t> *m_bits;
74 size_t m_size;
69 }; 75 };
70 76
71 77
72 #endif 78 #endif
73 79