1 #ifndef DUNE_BLOCK_BITFIELD_HH
2 #define DUNE_BLOCK_BITFIELD_HH
31 template <
int block_size,
class Alloc>
40 blockBitField(blockBitField),
41 block_number(block_number)
49 typedef std::bitset<block_size>
bitset;
52 typedef typename std::vector<bool, Alloc>::const_reference
reference;
157 for(
int i=0; i<block_size; ++i)
176 for(
int i=0; i<block_size; ++i)
177 eq &= (
getBit(i) == bs[i]);
203 template <
int block_size,
class Alloc>
215 blockBitField(blockBitField)
219 typedef std::bitset<block_size>
bitset;
224 typedef typename std::vector<bool, Alloc>::reference
reference;
235 for(
int i=0; i<block_size; ++i)
243 for(
int i=0; i<block_size; ++i)
251 for(
int i=0; i<block_size; ++i)
259 for(
int i=0; i<block_size; ++i)
371 using BitSetVectorConstReference::operator[];
392 template<
int block_size,
class Alloc>
398 template<
int block_size,
class Alloc>
404 template<
int block_size,
class Alloc>
410 template<
int block_size,
class Alloc>
419 template <
int block_size,
class Allocator=std::allocator<
bool> >
420 class BitSetVector :
private std::vector<bool, Allocator>
423 typedef std::vector<bool, Allocator> BlocklessBaseClass;
445 typedef typename std::vector<bool, Allocator>::size_type
size_type;
484 BlocklessBaseClass(blocklessBitField)
486 if (blocklessBitField.size()%block_size != 0)
494 BlocklessBaseClass(n*block_size)
499 BlocklessBaseClass(n*block_size,v)
505 BlocklessBaseClass::clear();
511 BlocklessBaseClass::resize(n*block_size, v);
517 return BlocklessBaseClass::size()/block_size;
522 this->assign(BlocklessBaseClass::size(),
true);
527 this->assign(BlocklessBaseClass::size(),
false);
557 return std::count(BlocklessBaseClass::begin(), BlocklessBaseClass::end(),
true);
573 for (
size_t i=0; i<v.
size(); i++)
584 for(
int j=0; j<block_size; ++j)
585 bits.set(j, getBit(i,j));
590 return BlocklessBaseClass::operator[](i*block_size+j);
594 return BlocklessBaseClass::operator[](i*block_size+j);