12.06.2011, 20:18
pawn Код:
#define DOB:: \
DOB_
#define DOB_GetCells(%0) \
(((%0) + cellbits) / cellbits) // Round up
#define BitArray:%0[%1] \
Bits:%0[DOB_GetCells(%1)]
stock DOB::GetBit (Bits: bitarray [], index)
return _: ((bitarray [index / cellbits] & Bits: (1 << (index % cellbits))) != Bits: 0);
stock DOB::SetBit (Bits: bitarray [], index, bool: set)
{
if (set)
bitarray [index / cellbits] |= Bits: (1 << (index % cellbits));
else
bitarray [index / cellbits] &= Bits: ~(1 << (index % cellbits));
}
stock DOB::SetAllBits (Bits: bitarray [], bool: set, cells = sizeof (bitarray))
{
if (set)
for (new i = 0; i < cells; ++i)
bitarray [i] = Bit: 0xFFFFFFFF; // bitarray [i] |= Bit: 0xFFFFFFFF;
else
for (new i = 0; i < cells; ++i)
bitarray [i] = Bit: 0; // bitarray [i] &= Bit: 0;
}