diff options
author | David Robillard <d@drobilla.net> | 2018-08-19 18:22:26 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-09-29 14:50:07 +0200 |
commit | ac65326242af579d6e1a7bd71730f1c78c8bde9b (patch) | |
tree | ae5225c4b9856b3e5d454378d00867d9b0c53d26 /chilbert/BitVecIterator.hpp | |
parent | 7567f77828ff9661f85eabe3b4cfb1876b307d42 (diff) | |
download | chilbert-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.hpp | 98 |
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 |