aboutsummaryrefslogtreecommitdiffstats
path: root/include/chilbert
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
parent311c12ad2ef63109ff73c4dc8ccf6912eb41ba7b (diff)
downloadchilbert-e2f9d0e2bcacdedc6669b4e5cbeaac7692910091.tar.gz
chilbert-e2f9d0e2bcacdedc6669b4e5cbeaac7692910091.tar.bz2
chilbert-e2f9d0e2bcacdedc6669b4e5cbeaac7692910091.zip
Remove unnecessary inheritance
Diffstat (limited to 'include/chilbert')
-rw-r--r--include/chilbert/SmallBitVec.hpp19
-rw-r--r--include/chilbert/detail/BitVecIterator.hpp21
2 files changed, 21 insertions, 19 deletions
diff --git a/include/chilbert/SmallBitVec.hpp b/include/chilbert/SmallBitVec.hpp
index 485ca9e..bd54855 100644
--- a/include/chilbert/SmallBitVec.hpp
+++ b/include/chilbert/SmallBitVec.hpp
@@ -247,44 +247,45 @@ public:
size_t num_racks() const { return 1; }
template<class BitVec>
- class iterator_base : public Mask
+ class iterator_base
{
public:
iterator_base& operator++()
{
- Mask::operator++();
+ ++m_mask;
return *this;
}
iterator_base& operator--()
{
- Mask::operator--();
+ --m_mask;
return *this;
}
bool operator==(const iterator_base& 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 iterator_base& rhs) const { return !operator==(rhs); }
- bool operator*() const { return m_vec->test(*this); }
+ bool operator*() const { return m_vec->test(m_mask); }
protected:
iterator_base(BitVec& vec, const size_t index)
- : Mask{index}
- , m_vec{&vec}
+ : m_vec{&vec}
+ , m_mask{index}
{}
BitVec* m_vec;
+ Mask m_mask;
};
class iterator : public iterator_base<SmallBitVec>
{
public:
- void set() { m_vec->set(*this); }
- void reset() { m_vec->reset(*this); }
+ void set() { m_vec->set(m_mask); }
+ void reset() { m_vec->reset(m_mask); }
private:
friend class SmallBitVec;
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;