27 #ifndef NIDAS_UTIL_BITARRAY_H
28 #define NIDAS_UTIL_BITARRAY_H
32 namespace nidas {
namespace util {
84 if (value)
bits[num/8] |= 0x1 << (num%8);
85 else bits[num/8] &= ~(0x1 << (num%8));
99 void setBits(
int begin,
int end,
unsigned int bitmask);
101 void setBits64(
int begin,
int end,
unsigned long long bitmask);
111 return (
bits[num/8] & (0x1 << (num%8))) != 0;
118 unsigned int getBits(
int begin,
int end);
141 if (
getBit(i) != 0)
return true;
148 if (
getBit(i) == 0)
return false;
152 bool any(
int begin,
int end)
const
154 for (
int i = begin; i < std::min(end,
getLength()); i++)
155 if (
getBit(i) != 0)
return true;
159 bool all(
int begin,
int end)
const
161 for (
int i = begin; i < std::min(end,
getLength()); i++)
162 if (
getBit(i) == 0)
return false;
192 BitArray
operator | (
const BitArray& x,
const BitArray& y);
194 BitArray
operator & (
const BitArray& x,
const BitArray& y);
196 BitArray
operator ^ (
const BitArray& x,
const BitArray& y);
198 bool operator == (
const BitArray& x,
const BitArray& y);
200 bool operator != (
const BitArray& x,
const BitArray& y);
unsigned char * getPtr()
Return pointer to first byte of BitArray.
Definition: BitArray.h:130
BitArray(int lenbits)
Constructor, all bits will be initialized to 0.
Definition: BitArray.cc:37
BitArray operator|(const BitArray &x, const BitArray &y)
Definition: BitArray.cc:202
void setBit(int num, bool value)
Set a bit, in range 0:(length()-1) to 1 if value is true, otherwise false.
Definition: BitArray.h:81
A class for holding bits.
Definition: BitArray.h:39
BitArray operator&(const BitArray &x)
Definition: BitArray.cc:291
int lenBits
Definition: BitArray.h:50
BitArray operator^(const BitArray &x)
Definition: BitArray.cc:357
bool any(int begin, int end) const
Definition: BitArray.h:152
std::string toString() const
Definition: BitArray.cc:164
BitArray operator^(const BitArray &x, const BitArray &y)
Definition: BitArray.cc:333
int lenBytes
Definition: BitArray.h:51
BitArray & operator=(const BitArray &ba)
Assignment operator.
Definition: BitArray.cc:59
BitArray & operator^=(const BitArray &x)
Definition: BitArray.cc:379
bool operator!=(const BitArray &x, const BitArray &y)
Definition: BitArray.cc:197
BitArray & operator|=(const BitArray &x)
Definition: BitArray.cc:248
BitArray operator|(const BitArray &x)
Definition: BitArray.cc:225
void setBits64(int begin, int end, unsigned long long bitmask)
Definition: BitArray.cc:98
bool operator==(const BitArray &x, const BitArray &y)
Definition: BitArray.cc:176
const unsigned char * getConstPtr() const
Return const pointer to first byte of BitArray.
Definition: BitArray.h:136
~BitArray()
Definition: BitArray.cc:51
long long getBits64(int begin, int end)
Return a long long of bits.
Definition: BitArray.cc:137
unsigned char * bits
To make things portable across different machine endiannesses we represent the bits in an array of ch...
Definition: BitArray.h:49
BitArray operator&(const BitArray &x, const BitArray &y)
Definition: BitArray.cc:268
void setBits(bool value)
Set all bits to 1 if value is true, otherwise set all to 0.
Definition: BitArray.cc:75
bool all(int begin, int end) const
Definition: BitArray.h:159
int getLengthInBytes() const
Length of array, in bytes.
Definition: BitArray.h:174
int getLength() const
Length of array, in bits.
Definition: BitArray.h:169
bool getBit(int num) const
Get value of a bit.
Definition: BitArray.h:108
bool any() const
Definition: BitArray.h:138
BitArray & operator&=(const BitArray &x)
Definition: BitArray.cc:313
unsigned int getBits(int begin, int end)
Return a integer of bits.
Definition: BitArray.cc:110
bool all() const
Definition: BitArray.h:145