bitarray.cc #1

  • //
  • guest/
  • perforce_software/
  • p4/
  • 2016-1/
  • support/
  • bitarray.cc
  • View
  • Commits
  • Open Download .zip Download (828 B)
# 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 19472 Liz Lam Initial add of the 2016.1 p4/p4api source code.