# include <stdhdrs.h>
# include "bitarray.h"
#define NBW (8 * sizeof(BitArray::BitBlock))
#define MASK (NBW-1)
BitArray::BitArray( BitArray::Index nBits )
: w(new BitBlock[1+nBits/NBW])
{
BitBlock *s, *e;
e = w + 1+nBits/NBW;
for (s = w; s < e; ++s)
*s = 0;
}
int
BitArray::operator []( BitArray::Index p ) const
{
BitBlock *bp = w + (p / NBW);
return ((((BitBlock)1) << (p & MASK)) & *bp) != 0;
}
int
BitArray::tas( BitArray::Index p )
{
BitBlock *bp = w + (p / NBW);
BitBlock bit = (((BitBlock)1) << (p & MASK));
if ((bit & *bp) != 0)
return 1;
*bp |= bit;
return 0;
}
int
BitArray::clear( BitArray::Index p )
{
BitBlock *bp = w + (p / NBW);
BitBlock bit = (((BitBlock)1) << (p & MASK));
int ret;
ret = ((bit & *bp) != 0);
*bp &= ~bit;
return ret;
}
# |
Change |
User |
Description |
Committed |
|
#1
|
22561 |
rlranft |
Populate -o //guest/perforce_software/p4/2016-2/...
//guest/rlranft/p4/2016-2/.... |
|
|
//guest/perforce_software/p4/2016-2/support/bitarray.cc |
#1
|
22283 |
mark_mears |
Initial add of the 2016.2 p4/p4api source code. |
|
|