Skip to content
Snippets Groups Projects
Commit ef0f8d6c authored by Christian Engwer's avatar Christian Engwer
Browse files

* add missing methods to make test pass

* use test(i) to get the value of a bit instead of getBit(i), this
  method work for bitset and BitSetVectorConstReference

[[Imported from SVN: r5801]]
parent 67dda93c
No related branches found
No related tags found
No related merge requests found
......@@ -236,7 +236,6 @@ namespace Dune {
{
for(int i=0; i<block_size; ++i)
getBit(i) = b;
return (*this);
}
......@@ -244,8 +243,7 @@ namespace Dune {
BitSetVectorReference& operator=(const bitset & b)
{
for(int i=0; i<block_size; ++i)
getBit(i) = b[i];
getBit(i) = b.test(i);
return (*this);
}
......@@ -253,8 +251,7 @@ namespace Dune {
BitSetVectorReference& operator=(const BitSetVectorConstReference & b)
{
for(int i=0; i<block_size; ++i)
getBit(i) = b[i];
getBit(i) = b.test(i);
return (*this);
}
......@@ -262,32 +259,55 @@ namespace Dune {
BitSetVectorReference& operator=(const BitSetVectorReference & b)
{
for(int i=0; i<block_size; ++i)
getBit(i) = b.getBit(i);
getBit(i) = b.test(i);
return (*this);
}
//! Bitwise and.
//! Bitwise and (for bitset).
BitSetVectorReference& operator&=(const bitset& x)
{
for (size_type i=0; i<block_size; i++)
getBit(i) = (test(i) & x.test(i));
return *this;
}
//! Bitwise and (for BitSetVectorConstReference and BitSetVectorReference)
BitSetVectorReference& operator&=(const BitSetVectorConstReference& x)
{
for (size_type i=0; i<block_size; i++)
set(i, getBit(i) & x.getBit(i));
getBit(i) = (test(i) & x.test(i));
return *this;
}
//! Bitwise inclusive or.
//! Bitwise inclusive or (for bitset)
BitSetVectorReference& operator|=(const bitset& x)
{
for (size_type i=0; i<block_size; i++)
getBit(i) = (test(i) | x.test(i));
return *this;
}
//! Bitwise inclusive or (for BitSetVectorConstReference and BitSetVectorReference)
BitSetVectorReference& operator|=(const BitSetVectorConstReference& x)
{
for (size_type i=0; i<block_size; i++)
set(i, getBit(i) | x.getBit(i));
getBit(i) = (test(i) | x.test(i));
return *this;
}
//! Bitwise exclusive or (for bitset).
BitSetVectorReference& operator^=(const bitset& x)
{
for (size_type i=0; i<block_size; i++)
getBit(i) = (test(i) ^ x.test(i));
return *this;
}
//! Bitwise exclusive or.
//! Bitwise exclusive or (for BitSetVectorConstReference and BitSetVectorReference)
BitSetVectorReference& operator^=(const BitSetVectorConstReference& x)
{
for (size_type i=0; i<block_size; i++)
set(i, getBit(i) ^ x.getBit(i));
getBit(i) = (test(i) ^ x.test(i));
return *this;
}
......@@ -295,7 +315,7 @@ namespace Dune {
BitSetVectorReference& operator<<=(size_type n)
{
for (size_type i=0; i<block_size-n; i++)
set(i, getBit(i+n));
getBit(i) = test(i+n);
return *this;
}
......@@ -303,7 +323,7 @@ namespace Dune {
BitSetVectorReference& operator>>=(size_type n)
{
for (size_type i=0; i<block_size-n; i++)
set(i+n, getBit(i));
getBit(i+n) = test(i);
return *this;
}
......@@ -348,6 +368,7 @@ namespace Dune {
return *this;
}
using BitSetVectorConstReference::test;
using BitSetVectorConstReference::operator[];
reference operator[](size_type i)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment