74 lines
3.5 KiB
C++
74 lines
3.5 KiB
C++
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/**
|
|
* Contains code for bit arrays.
|
|
* \file IceBitArray.cpp
|
|
* \author Pierre Terdiman
|
|
* \date February, 5, 2000
|
|
*/
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/**
|
|
* A simple array of bits stored as bytes.
|
|
*
|
|
* \class Container
|
|
* \author Pierre Terdiman
|
|
* \version 1.0
|
|
* \date February, 5, 2000
|
|
*/
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Precompiled Header
|
|
#include "StdAfx.h"
|
|
|
|
using namespace Opcode;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/**
|
|
* Constructor.
|
|
*/
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
BitArray::BitArray() : mSize(0), mBits(null)
|
|
{
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/**
|
|
* Constructor.
|
|
*/
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
BitArray::BitArray(udword nb_bits) : mSize(0), mBits(null)
|
|
{
|
|
Init(nb_bits);
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/**
|
|
* Destructor.
|
|
*/
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
BitArray::~BitArray()
|
|
{
|
|
ICE_FREE(mBits);
|
|
mSize = 0;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/**
|
|
* Initializes the bit array for a given number of entries
|
|
* \param nb_bits [in] max number of entries in the array
|
|
* \return true if success
|
|
*/
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
bool BitArray::Init(udword nb_bits)
|
|
{
|
|
mSize = BitsToDwords(nb_bits);
|
|
// Get ram for n bits
|
|
ICE_FREE(mBits);
|
|
mBits = (udword*)ICE_ALLOC(sizeof(udword)*mSize);
|
|
// Set all bits to 0
|
|
ClearAll();
|
|
return true;
|
|
}
|