public Or ( |
||
bits |
/// A |
|
Результат |
public virtual BitStream Or(BitStream bits)
{
if(!_blnIsOpen)
throw new ObjectDisposedException(BitStreamResources.GetString("ObjectDisposed_BitStreamClosed"));
if(bits == null)
throw new ArgumentNullException("bits", BitStreamResources.GetString("ArgumentNull_BitStream"));
if(bits.Length != _uiBitBuffer_Length)
throw new ArgumentException(BitStreamResources.GetString("Argument_DifferentBitStreamLengths"));
// Create the new BitStream
BitStream bstrmNew = new BitStream(_uiBitBuffer_Length);
uint uiWholeUInt32Lengths = _uiBitBuffer_Length >> BitBuffer_SizeOfElement_Shift;
uint uiCounter = 0;
for(uiCounter = 0; uiCounter < uiWholeUInt32Lengths; uiCounter++)
bstrmNew._auiBitBuffer[uiCounter] = _auiBitBuffer[uiCounter] | bits._auiBitBuffer[uiCounter];
// Are there any further bits in the buffer?
if((_uiBitBuffer_Length & BitBuffer_SizeOfElement_Mod) > 0)
{
uint uiBitMask = uint.MaxValue << (int)(BitBuffer_SizeOfElement - (_uiBitBuffer_Length & BitBuffer_SizeOfElement_Mod));
bstrmNew._auiBitBuffer[uiCounter] = _auiBitBuffer[uiCounter] | bits._auiBitBuffer[uiCounter] & uiBitMask;
}
return bstrmNew;
}