Loading...
Searching...
No Matches
bitsetvector.hh
Go to the documentation of this file.
// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
#ifndef DUNE_BLOCK_BITFIELD_HH
#define DUNE_BLOCK_BITFIELD_HH
#include <vector>
#include <bitset>
#include <iostream>
#include <algorithm>
#include <dune/common/boundschecking.hh>
#include <dune/common/genericiterator.hh>
#include <dune/common/exceptions.hh>
namespace Dune {
template <int block_size, class Alloc> class BitSetVector;
template <int block_size, class Alloc> class BitSetVectorReference;
template <int block_size, class Alloc>
class BitSetVectorConstReference
{
protected:
typedef Dune::BitSetVector<block_size, Alloc> BitSetVector;
friend class Dune::BitSetVector<block_size, Alloc>;
BitSetVectorConstReference(const BitSetVector& blockBitField_, int block_number_) :
blockBitField(blockBitField_),
block_number(block_number_)
{
DUNE_ASSERT_BOUNDS(blockBitField_.size() > static_cast<size_t>(block_number_));
}
BitSetVectorConstReference& operator=(const BitSetVectorConstReference & b) = delete;
public:
typedef std::bitset<block_size> bitset;
// bitset interface typedefs
typedef typename std::vector<bool, Alloc>::const_reference reference;
typedef typename std::vector<bool, Alloc>::const_reference const_reference;
typedef size_t size_type;
bitset operator<<(size_type n) const
{
bitset b = *this;
b <<= n;
return b;
}
bitset operator>>(size_type n) const
{
bitset b = *this;
b >>= n;
return b;
}
bitset operator~() const
{
bitset b = *this;
b.flip();
return b;
}
size_type size() const
{
return block_size;
}
size_type count() const
{
size_type n = 0;
for(size_type i=0; i<block_size; ++i)
n += getBit(i);
return n;
}
bool any() const
{
return count();
}
bool none() const
{
return ! any();
}
bool all() const
{
for(size_type i=0; i<block_size; ++i)
if(not test(i))
return false;
return true;
}
bool test(size_type n) const
{
return getBit(n);
}
const_reference operator[](size_type i) const
{
return getBit(i);
}
operator bitset() const
{
return blockBitField.getRepr(block_number);
}
bool operator== (const bitset& bs) const
{
return equals(bs);
}
bool operator== (const BitSetVectorConstReference& bs) const
{
return equals(bs);
}
bool operator!= (const bitset& bs) const
{
return ! equals(bs);
}
bool operator!= (const BitSetVectorConstReference& bs) const
{
return ! equals(bs);
}
friend std::ostream& operator<< (std::ostream& s, const BitSetVectorConstReference& v)
{
s << "(";
for(int i=0; i<block_size; ++i)
s << v[i];
s << ")";
return s;
}
protected:
const BitSetVector& blockBitField;
int block_number;
const_reference getBit(size_type i) const
{
return blockBitField.getBit(block_number,i);
}
template<class BS>
bool equals(const BS & bs) const
{
bool eq = true;
for(int i=0; i<block_size; ++i)
eq &= (getBit(i) == bs[i]);
return eq;
}
private:
void operator & () = delete;
friend class BitSetVectorReference<block_size, Alloc>;
};
template <int block_size, class Alloc>
class BitSetVectorReference : public BitSetVectorConstReference<block_size,Alloc>
{
protected:
typedef Dune::BitSetVector<block_size, Alloc> BitSetVector;
friend class Dune::BitSetVector<block_size, Alloc>;
typedef Dune::BitSetVectorConstReference<block_size,Alloc> BitSetVectorConstReference;
BitSetVectorReference(BitSetVector& blockBitField_, int block_number_) :
BitSetVectorConstReference(blockBitField_, block_number_),
blockBitField(blockBitField_)
{}
public:
typedef std::bitset<block_size> bitset;
typedef typename std::vector<bool, Alloc>::reference reference;
typedef typename std::vector<bool, Alloc>::const_reference const_reference;
typedef size_t size_type;
BitSetVectorReference& operator=(bool b)
{
for(int i=0; i<block_size; ++i)
getBit(i) = b;
return (*this);
}
BitSetVectorReference& operator=(const bitset & b)
{
for(int i=0; i<block_size; ++i)
getBit(i) = b.test(i);
return (*this);
}
BitSetVectorReference& operator=(const BitSetVectorConstReference & b)
{
for(int i=0; i<block_size; ++i)
getBit(i) = b.test(i);
return (*this);
}
BitSetVectorReference& operator=(const BitSetVectorReference & b)
{
for(int i=0; i<block_size; ++i)
getBit(i) = b.test(i);
return (*this);
}
BitSetVectorReference& operator&=(const bitset& x)
{
return (*this) = bitset(*this) & x;
}
BitSetVectorReference& operator&=(const BitSetVectorConstReference& x)
{
return (*this) &= bitset(x);
}
BitSetVectorReference& operator|=(const bitset& x)
{
return (*this) = bitset(*this) | x;
}
BitSetVectorReference& operator|=(const BitSetVectorConstReference& x)
{
return (*this) |= bitset(x);
}
BitSetVectorReference& operator^=(const bitset& x)
{
return (*this) = bitset(*this) ^ x;
}
BitSetVectorReference& operator^=(const BitSetVectorConstReference& x)
{
return (*this) ^= bitset(x);
}
BitSetVectorReference& operator<<=(size_type n)
{
return (*this) = bitset(*this) << n;
}
BitSetVectorReference& operator>>=(size_type n)
{
return (*this) = bitset(*this) >> n;
}
BitSetVectorReference& set()
{
for (size_type i=0; i<block_size; i++)
set(i);
return *this;
}
BitSetVectorReference& flip()
{
for (size_type i=0; i<block_size; i++)
flip(i);
return *this;
}
BitSetVectorReference& reset()
{
*this = false;
return *this;
}
BitSetVectorReference& set(size_type n, int val = 1)
{
getBit(n) = val;
return *this;
}
BitSetVectorReference& reset(size_type n)
{
set(n, false);
return *this;
}
BitSetVectorReference& flip(size_type n)
{
getBit(n).flip();
return *this;
}
using BitSetVectorConstReference::test;
using BitSetVectorConstReference::operator[];
reference operator[](size_type i)
{
return getBit(i);
}
protected:
BitSetVector& blockBitField;
using BitSetVectorConstReference::getBit;
reference getBit(size_type i)
{
return blockBitField.getBit(this->block_number,i);
}
};
template<int block_size, class Alloc>
struct const_reference< BitSetVectorReference<block_size,Alloc> >
{
typedef BitSetVectorConstReference<block_size,Alloc> type;
};
template<int block_size, class Alloc>
struct const_reference< BitSetVectorConstReference<block_size,Alloc> >
{
typedef BitSetVectorConstReference<block_size,Alloc> type;
};
template<int block_size, class Alloc>
struct mutable_reference< BitSetVectorReference<block_size,Alloc> >
{
typedef BitSetVectorReference<block_size,Alloc> type;
};
template<int block_size, class Alloc>
struct mutable_reference< BitSetVectorConstReference<block_size,Alloc> >
{
typedef BitSetVectorReference<block_size,Alloc> type;
};
template <int block_size, class Allocator=std::allocator<bool> >
class BitSetVector : private std::vector<bool, Allocator>
{
typedef std::vector<bool, Allocator> BlocklessBaseClass;
public:
typedef std::bitset<block_size> value_type;
typedef BitSetVectorReference<block_size,Allocator> reference;
typedef BitSetVectorConstReference<block_size,Allocator> const_reference;
typedef BitSetVectorReference<block_size,Allocator>* pointer;
typedef BitSetVectorConstReference<block_size,Allocator>* const_pointer;
typedef typename std::vector<bool, Allocator>::size_type size_type;
typedef Allocator allocator_type;
typedef Dune::GenericIterator<BitSetVector<block_size,Allocator>, value_type, reference, std::ptrdiff_t, ForwardIteratorFacade> iterator;
typedef Dune::GenericIterator<const BitSetVector<block_size,Allocator>, const value_type, const_reference, std::ptrdiff_t, ForwardIteratorFacade> const_iterator;
iterator begin(){
return iterator(*this, 0);
}
const_iterator begin() const {
return const_iterator(*this, 0);
}
iterator end(){
return iterator(*this, size());
}
const_iterator end() const {
return const_iterator(*this, size());
}
BitSetVector() :
BlocklessBaseClass()
{}
BitSetVector(const BlocklessBaseClass& blocklessBitField) :
BlocklessBaseClass(blocklessBitField)
{
if (blocklessBitField.size()%block_size != 0)
DUNE_THROW(RangeError, "Vector size is not a multiple of the block size!");
}
explicit BitSetVector(int n) :
BlocklessBaseClass(n*block_size)
{}
BitSetVector(int n, bool v) :
BlocklessBaseClass(n*block_size,v)
{}
void clear()
{
BlocklessBaseClass::clear();
}
void resize(int n, bool v = bool())
{
BlocklessBaseClass::resize(n*block_size, v);
}
size_type size() const
{
return BlocklessBaseClass::size()/block_size;
}
void setAll() {
this->assign(BlocklessBaseClass::size(), true);
}
void unsetAll() {
this->assign(BlocklessBaseClass::size(), false);
}
reference operator[](int i)
{
return reference(*this, i);
}
const_reference operator[](int i) const
{
return const_reference(*this, i);
}
reference back()
{
return reference(*this, size()-1);
}
const_reference back() const
{
return const_reference(*this, size()-1);
}
size_type count() const
{
return std::count(BlocklessBaseClass::begin(), BlocklessBaseClass::end(), true);
}
size_type countmasked(int j) const
{
size_type n = 0;
size_type blocks = size();
for(size_type i=0; i<blocks; ++i)
n += getBit(i,j);
return n;
}
friend std::ostream& operator<< (std::ostream& s, const BitSetVector& v)
{
for (size_t i=0; i<v.size(); i++)
s << v[i] << " ";
return s;
}
private:
value_type getRepr(int i) const
{
value_type bits;
for(int j=0; j<block_size; ++j)
bits.set(j, getBit(i,j));
return bits;
}
typename std::vector<bool>::reference getBit(size_type i, size_type j) {
DUNE_ASSERT_BOUNDS(j < block_size);
DUNE_ASSERT_BOUNDS(i < size());
return BlocklessBaseClass::operator[](i*block_size+j);
}
typename std::vector<bool>::const_reference getBit(size_type i, size_type j) const {
DUNE_ASSERT_BOUNDS(j < block_size);
DUNE_ASSERT_BOUNDS(i < size());
return BlocklessBaseClass::operator[](i*block_size+j);
}
friend class BitSetVectorReference<block_size,Allocator>;
friend class BitSetVectorConstReference<block_size,Allocator>;
};
} // namespace Dune
#endif
exceptions.hh
A few common exception classes.
boundschecking.hh
Macro for wrapping boundary checks.
genericiterator.hh
Implements a generic iterator class for writing stl conformant iterators.
DUNE_ASSERT_BOUNDS
#define DUNE_ASSERT_BOUNDS(cond)
If DUNE_CHECK_BOUNDS is defined: check if condition cond holds; otherwise, do nothing.
Definition boundschecking.hh:30
DUNE_THROW
#define DUNE_THROW(E,...)
Definition exceptions.hh:314
Dune
Dune namespace
Definition alignedallocator.hh:13
Dune::assign
void assign(T &dst, const T &src, bool mask)
masked Simd assignment (scalar version)
Definition simd.hh:447
Dune::BitSetVector
A dynamic array of blocks of booleans.
Definition bitsetvector.hh:425
Dune::BitSetVector::operator[]
const_reference operator[](int i) const
Return const reference to i-th block.
Definition bitsetvector.hh:541
Dune::BitSetVector::begin
iterator begin()
Returns a iterator pointing to the beginning of the vector.
Definition bitsetvector.hh:462
Dune::BitSetVector< block_size, Alloc >::const_pointer
BitSetVectorConstReference< block_size, Alloc > * const_pointer
Definition bitsetvector.hh:446
Dune::BitSetVector::end
const_iterator end() const
Returns a const_iterator pointing to the end of the vector.
Definition bitsetvector.hh:477
Dune::BitSetVector< block_size, Alloc >::reference
BitSetVectorReference< block_size, Alloc > reference
Definition bitsetvector.hh:437
Dune::BitSetVector::countmasked
size_type countmasked(int j) const
Returns the number of set bits, while each block is masked with 1<<i.
Definition bitsetvector.hh:565
Dune::BitSetVector< block_size, Alloc >::const_reference
BitSetVectorConstReference< block_size, Alloc > const_reference
Definition bitsetvector.hh:440
Dune::BitSetVector::end
iterator end()
Returns an iterator pointing to the end of the vector.
Definition bitsetvector.hh:472
Dune::BitSetVector::count
size_type count() const
Returns the number of bits that are set.
Definition bitsetvector.hh:559
Dune::BitSetVector::BitSetVector
BitSetVector()
Default constructor.
Definition bitsetvector.hh:482
Dune::BitSetVector::setAll
void setAll()
Sets all entries to true .
Definition bitsetvector.hh:525
Dune::BitSetVector< block_size, Alloc >::const_iterator
Dune::GenericIterator< const BitSetVector< block_size, Alloc >, const value_type, const_reference, std::ptrdiff_t, ForwardIteratorFacade > const_iterator
Definition bitsetvector.hh:458
Dune::BitSetVector< block_size, Alloc >::value_type
std::bitset< block_size > value_type
Definition bitsetvector.hh:434
Dune::BitSetVector::back
reference back()
Return reference to last block.
Definition bitsetvector.hh:547
Dune::BitSetVector::BitSetVector
BitSetVector(const BlocklessBaseClass &blocklessBitField)
Construction from an unblocked bitfield.
Definition bitsetvector.hh:487
Dune::BitSetVector::operator<<
friend std::ostream & operator<<(std::ostream &s, const BitSetVector &v)
Send bitfield to an output stream.
Definition bitsetvector.hh:575
Dune::BitSetVector::back
const_reference back() const
Return const reference to last block.
Definition bitsetvector.hh:553
Dune::BitSetVector::clear
void clear()
Erases all of the elements.
Definition bitsetvector.hh:507
Dune::BitSetVector< block_size, Alloc >::pointer
BitSetVectorReference< block_size, Alloc > * pointer
Definition bitsetvector.hh:443
Dune::BitSetVector::operator[]
reference operator[](int i)
Return reference to i-th block.
Definition bitsetvector.hh:535
Dune::BitSetVector::size
size_type size() const
Return the number of blocks.
Definition bitsetvector.hh:519
Dune::BitSetVector< block_size, Alloc >::size_type
std::vector< bool, Alloc >::size_type size_type
Definition bitsetvector.hh:449
Dune::BitSetVector::BitSetVector
BitSetVector(int n, bool v)
Constructor which initializes the field with true or false.
Definition bitsetvector.hh:502
Dune::BitSetVector::begin
const_iterator begin() const
Returns a const_iterator pointing to the beginning of the vector.
Definition bitsetvector.hh:467
Dune::BitSetVector< block_size, Alloc >::iterator
Dune::GenericIterator< BitSetVector< block_size, Alloc >, value_type, reference, std::ptrdiff_t, ForwardIteratorFacade > iterator
Definition bitsetvector.hh:457
Dune::BitSetVector::resize
void resize(int n, bool v=bool())
Resize field.
Definition bitsetvector.hh:513
Dune::BitSetVector< block_size, Alloc >::allocator_type
Alloc allocator_type
Definition bitsetvector.hh:452
Dune::BitSetVector::BitSetVector
BitSetVector(int n)
Definition bitsetvector.hh:497
Dune::BitSetVector::unsetAll
void unsetAll()
Sets all entries to false .
Definition bitsetvector.hh:530
Dune::BitSetVectorReference
A proxy class that acts as a mutable reference to a single bitset in a BitSetVector.
Definition bitsetvector.hh:222
Dune::BitSetVectorReference::test
bool test(size_type n) const
Returns true if bit n is set.
Definition bitsetvector.hh:124
Dune::BitSetVectorReference::operator=
BitSetVectorReference & operator=(const BitSetVectorConstReference &b)
Assignment from BitSetVectorConstReference.
Definition bitsetvector.hh:266
Dune::BitSetVectorReference::operator[]
reference operator[](size_type i)
Return reference to the i-th bit.
Definition bitsetvector.hh:377
Dune::BitSetVectorReference::reset
BitSetVectorReference & reset(size_type n)
Clears bit n.
Definition bitsetvector.hh:360
Dune::BitSetVectorReference::operator<<=
BitSetVectorReference & operator<<=(size_type n)
Left shift.
Definition bitsetvector.hh:318
Dune::BitSetVectorReference::BitSetVector
Dune::BitSetVector< block_size, Alloc > BitSetVector
Definition bitsetvector.hh:225
Dune::BitSetVectorReference::const_reference
std::vector< bool, Alloc >::const_reference const_reference
A proxy class that acts as a const reference to a single bit.
Definition bitsetvector.hh:243
Dune::BitSetVectorReference::operator=
BitSetVectorReference & operator=(const BitSetVectorReference &b)
Assignment from BitSetVectorReference.
Definition bitsetvector.hh:274
Dune::BitSetVectorReference::getBit
reference getBit(size_type i)
Definition bitsetvector.hh:387
Dune::BitSetVectorReference::operator&=
BitSetVectorReference & operator&=(const BitSetVectorConstReference &x)
Bitwise and (for BitSetVectorConstReference and BitSetVectorReference).
Definition bitsetvector.hh:288
Dune::BitSetVectorReference::BitSetVectorReference
BitSetVectorReference(BitSetVector &blockBitField_, int block_number_)
Definition bitsetvector.hh:230
Dune::BitSetVectorReference::size_type
size_t size_type
size_type typedef (an unsigned integral type)
Definition bitsetvector.hh:247
Dune::BitSetVectorReference::operator=
BitSetVectorReference & operator=(const bitset &b)
Assignment from bitset.
Definition bitsetvector.hh:258
Dune::BitSetVectorReference::BitSetVectorConstReference
Dune::BitSetVectorConstReference< block_size, Alloc > BitSetVectorConstReference
Definition bitsetvector.hh:228
Dune::BitSetVectorReference::reset
BitSetVectorReference & reset()
Clears every bit.
Definition bitsetvector.hh:346
Dune::BitSetVectorReference< block_size, Allocator >::blockBitField
BitSetVector & blockBitField
Definition bitsetvector.hh:383
Dune::BitSetVectorReference::operator|=
BitSetVectorReference & operator|=(const BitSetVectorConstReference &x)
Bitwise inclusive or (for BitSetVectorConstReference and BitSetVectorReference).
Definition bitsetvector.hh:300
Dune::BitSetVectorReference::set
BitSetVectorReference & set(size_type n, int val=1)
Sets bit n if val is nonzero, and clears bit n if val is zero.
Definition bitsetvector.hh:353
Dune::BitSetVectorReference::bitset
std::bitset< block_size > bitset
Definition bitsetvector.hh:236
Dune::BitSetVectorReference::operator^=
BitSetVectorReference & operator^=(const bitset &x)
Bitwise exclusive or (for bitset).
Definition bitsetvector.hh:306
Dune::BitSetVectorReference::reference
std::vector< bool, Alloc >::reference reference
Definition bitsetvector.hh:241
Dune::BitSetVectorReference::operator|=
BitSetVectorReference & operator|=(const bitset &x)
Bitwise inclusive or (for bitset).
Definition bitsetvector.hh:294
Dune::BitSetVectorReference::operator>>=
BitSetVectorReference & operator>>=(size_type n)
Right shift.
Definition bitsetvector.hh:324
Dune::BitSetVectorReference::operator^=
BitSetVectorReference & operator^=(const BitSetVectorConstReference &x)
Bitwise exclusive or (for BitSetVectorConstReference and BitSetVectorReference).
Definition bitsetvector.hh:312
Dune::BitSetVectorReference::flip
BitSetVectorReference & flip(size_type n)
Flips bit n.
Definition bitsetvector.hh:367
Dune::BitSetVectorReference::flip
BitSetVectorReference & flip()
Flips the value of every bit.
Definition bitsetvector.hh:338
Dune::BitSetVectorReference::set
BitSetVectorReference & set()
Sets every bit.
Definition bitsetvector.hh:330
Dune::BitSetVectorReference::operator&=
BitSetVectorReference & operator&=(const bitset &x)
Bitwise and (for bitset).
Definition bitsetvector.hh:282
Dune::BitSetVectorReference::operator=
BitSetVectorReference & operator=(bool b)
Assignment from bool, sets each bit in the bitset to b.
Definition bitsetvector.hh:250
Dune::BitSetVectorConstReference
A proxy class that acts as a const reference to a single bitset in a BitSetVector.
Definition bitsetvector.hh:38
Dune::BitSetVectorConstReference::operator==
bool operator==(const bitset &bs) const
Equality of reference and std::bitset.
Definition bitsetvector.hh:142
Dune::BitSetVectorConstReference::test
bool test(size_type n) const
Returns true if bit n is set.
Definition bitsetvector.hh:124
Dune::BitSetVectorConstReference::operator[]
const_reference operator[](size_type i) const
Return reference to the i-th bit.
Definition bitsetvector.hh:130
Dune::BitSetVectorConstReference::operator<<
bitset operator<<(size_type n) const
Returns a copy of *this shifted left by n bits.
Definition bitsetvector.hh:64
Dune::BitSetVectorConstReference::BitSetVectorConstReference
BitSetVectorConstReference(const BitSetVector &blockBitField_, int block_number_)
Definition bitsetvector.hh:44
Dune::BitSetVectorConstReference< block_size, Allocator >::blockBitField
const BitSetVector & blockBitField
Definition bitsetvector.hh:181
Dune::BitSetVectorConstReference::operator>>
bitset operator>>(size_type n) const
Returns a copy of *this shifted right by n bits.
Definition bitsetvector.hh:72
Dune::BitSetVectorConstReference::getBit
const_reference getBit(size_type i) const
Definition bitsetvector.hh:184
Dune::BitSetVectorConstReference::operator!=
bool operator!=(const bitset &bs) const
Inequality of reference and std::bitset.
Definition bitsetvector.hh:154
Dune::BitSetVectorConstReference::equals
bool equals(const BS &bs) const
Definition bitsetvector.hh:190
Dune::BitSetVectorConstReference::BitSetVector
Dune::BitSetVector< block_size, Alloc > BitSetVector
Definition bitsetvector.hh:41
Dune::BitSetVectorConstReference::bitset
std::bitset< block_size > bitset
Definition bitsetvector.hh:56
Dune::BitSetVectorConstReference::all
bool all() const
Returns true if all bits are set.
Definition bitsetvector.hh:115
Dune::BitSetVectorConstReference::size_type
size_t size_type
Definition bitsetvector.hh:61
Dune::BitSetVectorConstReference::operator~
bitset operator~() const
Returns a copy of *this with all of its bits flipped.
Definition bitsetvector.hh:80
Dune::BitSetVectorConstReference::reference
std::vector< bool, Alloc >::const_reference reference
Definition bitsetvector.hh:59
Dune::BitSetVectorConstReference::size
size_type size() const
Returns block_size.
Definition bitsetvector.hh:88
Dune::BitSetVectorConstReference::count
size_type count() const
Returns the number of bits that are set.
Definition bitsetvector.hh:94
Dune::BitSetVectorConstReference::none
bool none() const
Returns true if no bits are set.
Definition bitsetvector.hh:109
Dune::BitSetVectorConstReference::any
bool any() const
Returns true if any bits are set.
Definition bitsetvector.hh:103
Dune::BitSetVectorConstReference< block_size, Allocator >::block_number
int block_number
Definition bitsetvector.hh:182
Dune::BitSetVectorConstReference::const_reference
std::vector< bool, Alloc >::const_reference const_reference
Definition bitsetvector.hh:60
Dune::BitSetVectorConstReference::operator=
BitSetVectorConstReference & operator=(const BitSetVectorConstReference &b)=delete
disable assignment operator
Dune::const_reference< BitSetVectorReference< block_size, Alloc > >::type
BitSetVectorConstReference< block_size, Alloc > type
Definition bitsetvector.hh:399
Dune::const_reference< BitSetVectorConstReference< block_size, Alloc > >::type
BitSetVectorConstReference< block_size, Alloc > type
Definition bitsetvector.hh:405
Dune::mutable_reference< BitSetVectorReference< block_size, Alloc > >::type
BitSetVectorReference< block_size, Alloc > type
Definition bitsetvector.hh:411
Dune::mutable_reference< BitSetVectorConstReference< block_size, Alloc > >::type
BitSetVectorReference< block_size, Alloc > type
Definition bitsetvector.hh:417
Dune::RangeError
Default exception class for range errors.
Definition exceptions.hh:348
Dune::const_reference
Get the 'const' version of a reference to a mutable object.
Definition genericiterator.hh:87
Dune::mutable_reference
get the 'mutable' version of a reference to a const object
Definition genericiterator.hh:116
Dune::GenericIterator
Generic class for stl-conforming iterators for container classes with operator[].
Definition genericiterator.hh:153
Dune::ForwardIteratorFacade
Base class for stl conformant forward iterators.
Definition iteratorfacades.hh:142