148 lines
2.5 KiB
C++
148 lines
2.5 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (c) 1997 Microsoft Corporation
|
||
|
All rights reserved.
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
bitarray.hxx
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Bit array
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Steve Kiraly (SteveKi) 1/12/97
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef _BITARRAY_HXX
|
||
|
#define _BITARRAY_HXX
|
||
|
|
||
|
class TBitArray {
|
||
|
|
||
|
public:
|
||
|
|
||
|
typedef UINT Type;
|
||
|
|
||
|
enum {
|
||
|
kBitsInType = sizeof( Type ) * 8,
|
||
|
kBitsInTypeMask = 0xFFFFFFFF,
|
||
|
};
|
||
|
|
||
|
TBitArray(
|
||
|
IN UINT uBits = kBitsInType,
|
||
|
IN UINT uGrowSize = kBitsInType
|
||
|
);
|
||
|
|
||
|
TBitArray(
|
||
|
IN const TBitArray &rhs
|
||
|
);
|
||
|
|
||
|
const TBitArray &
|
||
|
operator=(
|
||
|
IN const TBitArray &rhs
|
||
|
);
|
||
|
|
||
|
~TBitArray(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
bValid(
|
||
|
VOID
|
||
|
) const;
|
||
|
|
||
|
BOOL
|
||
|
bToString( // Return string representation of bit array
|
||
|
IN TString &strBits
|
||
|
) const;
|
||
|
|
||
|
BOOL
|
||
|
bRead(
|
||
|
IN UINT uBit // Range 0 to nBit - 1
|
||
|
) const;
|
||
|
|
||
|
BOOL
|
||
|
bSet(
|
||
|
IN UINT uBit // Range 0 to nBit - 1
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
bReset(
|
||
|
IN UINT uBit // Range 0 to nBit - 1
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
bToggle(
|
||
|
IN UINT uBit // Range 0 to nBit - 1
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
bAdd(
|
||
|
VOID // Add one bit to the array
|
||
|
);
|
||
|
|
||
|
UINT
|
||
|
uNumBits( // Return the total number of bits in the array
|
||
|
VOID
|
||
|
) const;
|
||
|
|
||
|
VOID
|
||
|
vSetAll( // Set all the bits in the array
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
vResetAll( // Reset all the bits in the array
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
bFindNextResetBit( // Locate first cleared bit in the array
|
||
|
IN UINT *puNextFreeBit
|
||
|
);
|
||
|
|
||
|
private:
|
||
|
|
||
|
BOOL
|
||
|
bClone( // Make a copy of the bit array
|
||
|
IN const TBitArray &rhs
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
bGrow( // Expand the bit array by x number of bits
|
||
|
IN UINT uGrowSize
|
||
|
);
|
||
|
|
||
|
UINT
|
||
|
nBitsToType(
|
||
|
IN UINT uBits // Range 1 to nBit
|
||
|
) const;
|
||
|
|
||
|
Type
|
||
|
BitToMask(
|
||
|
IN UINT uBit // Range 0 to nBit - 1
|
||
|
) const;
|
||
|
|
||
|
UINT
|
||
|
BitToIndex(
|
||
|
IN UINT uBit // Range 0 to nBit - 1
|
||
|
) const;
|
||
|
|
||
|
BOOL
|
||
|
bIsValidBit(
|
||
|
IN UINT uBit // Range 0 to nBit - 1
|
||
|
) const;
|
||
|
|
||
|
UINT _nBits; // Number of currently allocated bits, Range 1 to n
|
||
|
Type *_pBits; // Pointer to array which contains the bits
|
||
|
UINT _uGrowSize; // Default number of bits to grow by
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif
|