readd a couple of members not in tests

git-svn-id: https://zxing.googlecode.com/svn/trunk@2607 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
smparkes@smparkes.net 2013-04-01 06:00:21 +00:00
parent 913f87b1ce
commit b323e601b7

View file

@ -120,16 +120,16 @@ void BitArray::reverse() {
bits = newBits; bits = newBits;
} }
/* BitArray::Reverse::Reverse(Ref<BitArray> array_) : array(array_) {
BitArray::Reverse::Reverse(Ref<BitArray> array_) : array(array_) {
array->reverse(); array->reverse();
} }
BitArray::Reverse::~Reverse() { BitArray::Reverse::~Reverse() {
array->reverse(); array->reverse();
} }
namespace { namespace {
// N.B.: This only works for 32 bit ints ...
int numberOfTrailingZeros(int i) { int numberOfTrailingZeros(int i) {
// HD, Figure 5-14 // HD, Figure 5-14
int y; int y;
@ -141,41 +141,40 @@ void BitArray::reverse() {
y = i << 2; if (y != 0) { n = n - 2; i = y; } y = i << 2; if (y != 0) { n = n - 2; i = y; }
return n - (((unsigned int)(i << 1)) >> 31); return n - (((unsigned int)(i << 1)) >> 31);
} }
} }
int BitArray::getNextSet(int from) { int BitArray::getNextSet(int from) {
if (from >= size_) { if (from >= size) {
return size_; return size;
} }
int bitsOffset = from >> 5; int bitsOffset = from >> logBits;
int currentBits = bits_[bitsOffset]; int currentBits = bits[bitsOffset];
// mask off lesser bits first // mask off lesser bits first
currentBits &= ~((1 << (from & 0x1F)) - 1); currentBits &= ~((1 << (from & bitsMask)) - 1);
while (currentBits == 0) { while (currentBits == 0) {
if (++bitsOffset == (int)bits_.size()) { if (++bitsOffset == (int)bits.size()) {
return size_; return size;
} }
currentBits = bits_[bitsOffset]; currentBits = bits[bitsOffset];
}
int result = (bitsOffset << 5) + numberOfTrailingZeros(currentBits);
return result > size_ ? size_ : result;
} }
int result = (bitsOffset << logBits) + numberOfTrailingZeros(currentBits);
return result > size ? size : result;
}
int BitArray::getNextUnset(int from) { int BitArray::getNextUnset(int from) {
if (from >= size_) { if (from >= size) {
return size_; return size;
} }
int bitsOffset = from >> 5; int bitsOffset = from >> logBits;
int currentBits = ~bits_[bitsOffset]; int currentBits = ~bits[bitsOffset];
// mask off lesser bits first // mask off lesser bits first
currentBits &= ~((1 << (from & 0x1F)) - 1); currentBits &= ~((1 << (from & bitsMask)) - 1);
while (currentBits == 0) { while (currentBits == 0) {
if (++bitsOffset == (int)bits_.size()) { if (++bitsOffset == (int)bits.size()) {
return size_; return size;
} }
currentBits = ~bits_[bitsOffset]; currentBits = ~bits[bitsOffset];
} }
int result = (bitsOffset << 5) + numberOfTrailingZeros(currentBits); int result = (bitsOffset << logBits) + numberOfTrailingZeros(currentBits);
return result > size_ ? size_ : result; return result > size ? size : result;
} }
*/