21 #ifndef __XNBITSET_H__
22 #define __XNBITSET_H__
35 return m_array.
Reserve((nBits >> 5) + 1);
41 return m_array.
SetSize((nBits >> 5) + 1, 0);
47 XnUInt32 nArrayIndex = (nIndex >> 5);
48 XnUInt32 nMask = (1 << ((~nIndex) & 0x1F));
49 XnUInt32 nOldVal = nArrayIndex < m_array.
GetSize() ? m_array[nArrayIndex] : 0;
50 XnUInt32 nNewVal = bValue ? (nOldVal | nMask) : (nOldVal & (~nMask));
51 XnStatus nRetVal = m_array.
Set(nArrayIndex, nNewVal, 0);
53 m_nSize =
XN_MAX(m_nSize, nIndex + 1);
58 XnBool
IsSet(XnUInt32 nIndex)
const
60 XnUInt32 nArrayIndex = (nIndex >> 5);
61 if (nArrayIndex >= m_array.
GetSize())
65 return (m_array[nArrayIndex] & (1 << ((~nIndex) & 0x1F))) ?
TRUE :
FALSE;
73 m_nSize = (nSizeInDwords << 5);
81 XnUInt32 nSizeInDwords =
XN_MAX(1, nSizeInBytes >> 2);
84 for (XnUInt32 nDwordIdx = 0, nByteIdx = 0; nDwordIdx < nSizeInDwords; nDwordIdx++, nByteIdx += 4)
86 m_array[nDwordIdx] = ((pData[nByteIdx] << 24) | (pData[nByteIdx + 1] << 16) | (pData[nByteIdx + 2] << 8) | pData[nByteIdx + 3] );
88 m_nSize = (nSizeInBytes << 3);
134 #endif // __XNBITSET_H__