aboutsummaryrefslogtreecommitdiffstats
path: root/include/chilbert/detail
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2022-09-16 21:45:27 -0400
committerDavid Robillard <d@drobilla.net>2022-09-16 22:31:06 -0400
commite2f9d0e2bcacdedc6669b4e5cbeaac7692910091 (patch)
tree6cc5d70cc30f3927682c4ea57a8ededf4f9cc2ae /include/chilbert/detail
parent311c12ad2ef63109ff73c4dc8ccf6912eb41ba7b (diff)
downloadchilbert-e2f9d0e2bcacdedc6669b4e5cbeaac7692910091.tar.gz
chilbert-e2f9d0e2bcacdedc6669b4e5cbeaac7692910091.tar.bz2
chilbert-e2f9d0e2bcacdedc6669b4e5cbeaac7692910091.zip
Remove unnecessary inheritance
Diffstat (limited to 'include/chilbert/detail')
-rw-r--r--include/chilbert/detail/BitVecIterator.hpp21
1 files changed, 11 insertions, 10 deletions
diff --git a/include/chilbert/detail/BitVecIterator.hpp b/include/chilbert/detail/BitVecIterator.hpp
index 43af2ee..bcc5582 100644
--- a/include/chilbert/detail/BitVecIterator.hpp
+++ b/include/chilbert/detail/BitVecIterator.hpp
@@ -27,26 +27,26 @@ namespace chilbert {
namespace detail {
template<class BitVec>
-class BitVecIteratorBase : public BitVecMask<typename BitVec::Rack>
+class BitVecIteratorBase
{
public:
using Mask = typename BitVec::Mask;
BitVecIteratorBase& operator++()
{
- Mask::operator++();
+ ++m_mask;
return *this;
}
BitVecIteratorBase& operator--()
{
- Mask::operator--();
+ --m_mask;
return *this;
}
bool operator==(const BitVecIteratorBase& rhs) const
{
- return m_vec == rhs.m_vec && Mask::operator==(rhs);
+ return m_vec == rhs.m_vec && m_mask == rhs.m_mask;
}
bool operator!=(const BitVecIteratorBase& rhs) const
@@ -54,23 +54,24 @@ public:
return !operator==(rhs);
}
- bool operator*() const { return m_vec->test(*this); }
+ bool operator*() const { return m_vec->test(m_mask); }
protected:
BitVecIteratorBase(BitVec& vec, const size_t index)
- : Mask{index}
- , m_vec{&vec}
+ : m_vec{&vec}
+ , m_mask{index}
{}
- BitVec* m_vec;
+ BitVec* m_vec;
+ BitVecMask<typename BitVec::Rack> m_mask;
};
template<class BitVec>
class BitVecIterator : public BitVecIteratorBase<BitVec>
{
public:
- void set() { this->m_vec->set(*this); }
- void reset() { this->m_vec->reset(*this); }
+ void set() { this->m_vec->set(this->m_mask); }
+ void reset() { this->m_vec->reset(this->m_mask); }
private:
friend BitVec;