27#ifndef NIDAS_UTIL_BITARRAY_H
28#define NIDAS_UTIL_BITARRAY_H
32namespace nidas {
namespace util {
83 if (num < 0 || num >=
getLength())
return;
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;
192BitArray
operator | (
const BitArray& x,
const BitArray& y);
194BitArray
operator & (
const BitArray& x,
const BitArray& y);
196BitArray
operator ^ (
const BitArray& x,
const BitArray& y);
198bool operator == (
const BitArray& x,
const BitArray& y);
200bool operator != (
const BitArray& x,
const BitArray& y);
A class for holding bits.
Definition BitArray.h:39
BitArray & operator|=(const BitArray &x)
Definition BitArray.cc:248
int getLength() const
Length of array, in bits.
Definition BitArray.h:169
unsigned char * getPtr()
Return pointer to first byte of BitArray.
Definition BitArray.h:130
const unsigned char * getConstPtr() const
Return const pointer to first byte of BitArray.
Definition BitArray.h:136
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
long long getBits64(int begin, int end)
Return a long long of bits.
Definition BitArray.cc:137
int lenBytes
Definition BitArray.h:51
BitArray(int lenbits)
Constructor, all bits will be initialized to 0.
Definition BitArray.cc:37
bool any() const
Definition BitArray.h:138
BitArray operator|(const BitArray &x)
Definition BitArray.cc:225
bool any(int begin, int end) const
Definition BitArray.h:152
BitArray operator&(const BitArray &x)
Definition BitArray.cc:291
bool getBit(int num) const
Get value of a bit.
Definition BitArray.h:108
void setBits64(int begin, int end, unsigned long long bitmask)
Definition BitArray.cc:98
unsigned int getBits(int begin, int end)
Return a integer of bits.
Definition BitArray.cc:110
bool all() const
Definition BitArray.h:145
~BitArray()
Definition BitArray.cc:51
BitArray operator^(const BitArray &x)
Definition BitArray.cc:357
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 &ba)
Assignment operator.
Definition BitArray.cc:59
void setBits(bool value)
Set all bits to 1 if value is true, otherwise set all to 0.
Definition BitArray.cc:75
BitArray & operator^=(const BitArray &x)
Definition BitArray.cc:379
int lenBits
Definition BitArray.h:50
BitArray & operator&=(const BitArray &x)
Definition BitArray.cc:313
bool all(int begin, int end) const
Definition BitArray.h:159
int getLengthInBytes() const
Length of array, in bytes.
Definition BitArray.h:174
std::string toString() const
Definition BitArray.cc:164
bool operator!=(const BitArray &x, const BitArray &y)
Definition BitArray.cc:197
BitArray operator&(const BitArray &x, const BitArray &y)
Definition BitArray.cc:268
bool operator==(const BitArray &x, const BitArray &y)
Definition BitArray.cc:176
BitArray operator^(const BitArray &x, const BitArray &y)
Definition BitArray.cc:333
BitArray operator|(const BitArray &x, const BitArray &y)
Definition BitArray.cc:202
Root namespace for the NCAR In-Situ Data Acquisition Software.
Definition A2DConverter.h:31