fix: some file didn't have the svn:eol-style native yet
This commit is contained in:
@@ -1,82 +1,82 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* Contains code for bit arrays.
|
||||
* \file IceBitArray.h
|
||||
* \author Pierre Terdiman
|
||||
* \date February, 5, 2000
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Include Guard
|
||||
#ifndef ICEBITARRAY_H
|
||||
#define ICEBITARRAY_H
|
||||
|
||||
inline_ udword BitsToBytes(udword nb_bits)
|
||||
{
|
||||
return (nb_bits>>3) + ((nb_bits&7) ? 1 : 0);
|
||||
}
|
||||
|
||||
inline_ udword BitsToDwords(udword nb_bits)
|
||||
{
|
||||
return (nb_bits>>5) + ((nb_bits&31) ? 1 : 0);
|
||||
}
|
||||
|
||||
// Use that one instead of an array of bools. Takes less ram, nearly as fast [no bounds checkings and so on].
|
||||
class ICECORE_API BitArray
|
||||
{
|
||||
public:
|
||||
//! Constructor
|
||||
BitArray();
|
||||
BitArray(udword nb_bits);
|
||||
//! Destructor
|
||||
~BitArray();
|
||||
|
||||
bool Init(udword nb_bits);
|
||||
|
||||
// Data management
|
||||
inline_ void SetBit(udword bit_number) { mBits[bit_number>>5] |= 1<<(bit_number&31); }
|
||||
inline_ void ClearBit(udword bit_number) { mBits[bit_number>>5] &= ~(1<<(bit_number&31)); }
|
||||
inline_ void ToggleBit(udword bit_number) { mBits[bit_number>>5] ^= 1<<(bit_number&31); }
|
||||
|
||||
inline_ void ClearAll() { ZeroMemory(mBits, mSize*4); }
|
||||
inline_ void SetAll() { FillMemory(mBits, mSize*4, 0xff); }
|
||||
|
||||
// Data access
|
||||
inline_ BOOL IsSet(udword bit_number) const { return mBits[bit_number>>5] & (1<<(bit_number&31)); }
|
||||
|
||||
inline_ const udword* GetBits() const { return mBits; }
|
||||
inline_ udword GetSize() const { return mSize; }
|
||||
|
||||
protected:
|
||||
udword* mBits; //!< Array of bits
|
||||
udword mSize; //!< Size of the array in dwords
|
||||
};
|
||||
|
||||
// - We consider square symmetric N*N matrices
|
||||
// - A N*N symmetric matrix has N(N+1)/2 elements
|
||||
// - A boolean version needs N(N+1)/16 bytes
|
||||
// N NbBits NbBytes
|
||||
// 4 10 -
|
||||
// 8 36 4.5
|
||||
// 16 136 17 <= the one we select
|
||||
// 32 528 66
|
||||
static ubyte BitMasks[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };
|
||||
static ubyte NegBitMasks[] = { 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F };
|
||||
class ICECORE_API BoolSquareSymmetricMatrix16
|
||||
{
|
||||
public:
|
||||
inline_ udword Index(udword x, udword y) const { if(x>y) Swap(x,y); return x + (y ? ((y-1)*y)>>1 : 0); }
|
||||
|
||||
inline_ void Set(udword x, udword y) { udword i = Index(x, y); mBits[i>>3] |= BitMasks[i&7]; }
|
||||
inline_ void Clear(udword x, udword y) { udword i = Index(x, y); mBits[i>>3] &= NegBitMasks[i&7]; }
|
||||
inline_ void Toggle(udword x, udword y) { udword i = Index(x, y); mBits[i>>3] ^= BitMasks[i&7]; }
|
||||
inline_ bool IsSet(udword x, udword y) const { udword i = Index(x, y); return (mBits[i>>3] & BitMasks[i&7])!=0; }
|
||||
|
||||
inline_ void ClearAll() { ZeroMemory(mBits, 17); }
|
||||
inline_ void SetAll() { FillMemory(mBits, 17, 0xff); }
|
||||
|
||||
ubyte mBits[17];
|
||||
};
|
||||
|
||||
#endif // ICEBITARRAY_H
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* Contains code for bit arrays.
|
||||
* \file IceBitArray.h
|
||||
* \author Pierre Terdiman
|
||||
* \date February, 5, 2000
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Include Guard
|
||||
#ifndef ICEBITARRAY_H
|
||||
#define ICEBITARRAY_H
|
||||
|
||||
inline_ udword BitsToBytes(udword nb_bits)
|
||||
{
|
||||
return (nb_bits>>3) + ((nb_bits&7) ? 1 : 0);
|
||||
}
|
||||
|
||||
inline_ udword BitsToDwords(udword nb_bits)
|
||||
{
|
||||
return (nb_bits>>5) + ((nb_bits&31) ? 1 : 0);
|
||||
}
|
||||
|
||||
// Use that one instead of an array of bools. Takes less ram, nearly as fast [no bounds checkings and so on].
|
||||
class ICECORE_API BitArray
|
||||
{
|
||||
public:
|
||||
//! Constructor
|
||||
BitArray();
|
||||
BitArray(udword nb_bits);
|
||||
//! Destructor
|
||||
~BitArray();
|
||||
|
||||
bool Init(udword nb_bits);
|
||||
|
||||
// Data management
|
||||
inline_ void SetBit(udword bit_number) { mBits[bit_number>>5] |= 1<<(bit_number&31); }
|
||||
inline_ void ClearBit(udword bit_number) { mBits[bit_number>>5] &= ~(1<<(bit_number&31)); }
|
||||
inline_ void ToggleBit(udword bit_number) { mBits[bit_number>>5] ^= 1<<(bit_number&31); }
|
||||
|
||||
inline_ void ClearAll() { ZeroMemory(mBits, mSize*4); }
|
||||
inline_ void SetAll() { FillMemory(mBits, mSize*4, 0xff); }
|
||||
|
||||
// Data access
|
||||
inline_ BOOL IsSet(udword bit_number) const { return mBits[bit_number>>5] & (1<<(bit_number&31)); }
|
||||
|
||||
inline_ const udword* GetBits() const { return mBits; }
|
||||
inline_ udword GetSize() const { return mSize; }
|
||||
|
||||
protected:
|
||||
udword* mBits; //!< Array of bits
|
||||
udword mSize; //!< Size of the array in dwords
|
||||
};
|
||||
|
||||
// - We consider square symmetric N*N matrices
|
||||
// - A N*N symmetric matrix has N(N+1)/2 elements
|
||||
// - A boolean version needs N(N+1)/16 bytes
|
||||
// N NbBits NbBytes
|
||||
// 4 10 -
|
||||
// 8 36 4.5
|
||||
// 16 136 17 <= the one we select
|
||||
// 32 528 66
|
||||
static ubyte BitMasks[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };
|
||||
static ubyte NegBitMasks[] = { 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F };
|
||||
class ICECORE_API BoolSquareSymmetricMatrix16
|
||||
{
|
||||
public:
|
||||
inline_ udword Index(udword x, udword y) const { if(x>y) Swap(x,y); return x + (y ? ((y-1)*y)>>1 : 0); }
|
||||
|
||||
inline_ void Set(udword x, udword y) { udword i = Index(x, y); mBits[i>>3] |= BitMasks[i&7]; }
|
||||
inline_ void Clear(udword x, udword y) { udword i = Index(x, y); mBits[i>>3] &= NegBitMasks[i&7]; }
|
||||
inline_ void Toggle(udword x, udword y) { udword i = Index(x, y); mBits[i>>3] ^= BitMasks[i&7]; }
|
||||
inline_ bool IsSet(udword x, udword y) const { udword i = Index(x, y); return (mBits[i>>3] & BitMasks[i&7])!=0; }
|
||||
|
||||
inline_ void ClearAll() { ZeroMemory(mBits, 17); }
|
||||
inline_ void SetAll() { FillMemory(mBits, 17, 0xff); }
|
||||
|
||||
ubyte mBits[17];
|
||||
};
|
||||
|
||||
#endif // ICEBITARRAY_H
|
||||
|
||||
Reference in New Issue
Block a user