#include #include "bitarray.hpp" using namespace std; bitarray::bitarray(int l=8) { if (l<8) len=8; else len=l; numbytes=l/8+1; b=new unsigned char[numbytes]; zero(); } bitarray::~bitarray() { delete [] b; } bool bitarray::bitpos(int i, int& bytenum, int& bitmask) { if(i<0||i>len-1) return 0; bytenum=i/8; bitmask=1<<(i%8); return 1; } int bitarray::size() { return len; } bool bitarray::get(int i) { int bytepos, bitmask; if(!bitpos(i,bytepos,bitmask)) return 0; else return b[numbytes-bytepos-1]&bitmask; } bool bitarray::set(int i,bool val) { bool rv; int bytepos,bitmask; if(!bitpos(i,bytepos,bitmask)) return 0; rv=b[numbytes-bytepos-1]&bitmask; if(val) b[numbytes-bytepos-1]|=bitmask; else b[numbytes-bytepos-1]&=(~bitmask); return rv; } void bitarray::zero() { for(int i=0;i