aboutsummaryrefslogtreecommitdiffstats
path: root/chilbert/BitVecIterator.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-08-19 18:22:26 +0200
committerDavid Robillard <d@drobilla.net>2018-09-29 14:50:07 +0200
commitac65326242af579d6e1a7bd71730f1c78c8bde9b (patch)
treeae5225c4b9856b3e5d454378d00867d9b0c53d26 /chilbert/BitVecIterator.hpp
parent7567f77828ff9661f85eabe3b4cfb1876b307d42 (diff)
downloadchilbert-ac65326242af579d6e1a7bd71730f1c78c8bde9b.tar.gz
chilbert-ac65326242af579d6e1a7bd71730f1c78c8bde9b.tar.bz2
chilbert-ac65326242af579d6e1a7bd71730f1c78c8bde9b.zip
Reorganize headers to make a clear public/private distinction
Diffstat (limited to 'chilbert/BitVecIterator.hpp')
-rw-r--r--chilbert/BitVecIterator.hpp98
1 files changed, 0 insertions, 98 deletions
diff --git a/chilbert/BitVecIterator.hpp b/chilbert/BitVecIterator.hpp
deleted file mode 100644
index bbafd42..0000000
--- a/chilbert/BitVecIterator.hpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- Copyright (C) 2018 David Robillard <d@drobilla.net>
- Copyright (C) 2006-2007 Chris Hamilton <chamilton@cs.dal.ca>
-
- This program is free software: you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation, either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program. If not, see <https://www.gnu.org/licenses/>.
-*/
-
-#ifndef CHILBERT_BITVECITERATOR_HPP
-#define CHILBERT_BITVECITERATOR_HPP
-
-#include "chilbert/BitVecMask.hpp"
-
-#include <cstddef>
-
-namespace chilbert {
-
-template <class BitVec>
-class BitVecIteratorBase : public BitVecMask<typename BitVec::Rack>
-{
-public:
- using Mask = typename BitVec::Mask;
-
- BitVecIteratorBase& operator++()
- {
- Mask::operator++();
- return *this;
- }
-
- BitVecIteratorBase& operator--()
- {
- Mask::operator--();
- return *this;
- }
-
- bool operator==(const BitVecIteratorBase& rhs) const
- {
- return m_vec == rhs.m_vec && Mask::operator==(rhs);
- }
-
- bool operator!=(const BitVecIteratorBase& rhs) const
- {
- return !operator==(rhs);
- }
-
- bool operator*() const { return m_vec->test(*this); }
-
-protected:
- BitVecIteratorBase(BitVec& vec, const size_t index)
- : Mask{index}
- , m_vec{&vec}
- {
- }
-
- BitVec* m_vec;
-};
-
-template <class BitVec>
-class BitVecIterator : public BitVecIteratorBase<BitVec>
-{
-public:
- void set() { this->m_vec->set(*this); }
- void reset() { this->m_vec->reset(*this); }
-
-private:
- friend BitVec;
-
- BitVecIterator(BitVec& vec, const size_t index)
- : BitVecIteratorBase<BitVec>{vec, index}
- {
- }
-};
-
-template <class BitVec>
-class ConstBitVecIterator : public BitVecIteratorBase<const BitVec>
-{
-private:
- friend BitVec;
-
- ConstBitVecIterator(const BitVec& vec, const size_t index)
- : BitVecIteratorBase<const BitVec>{vec, index}
- {
- }
-};
-
-} // namespace chilbert
-
-#endif