Exemplo n.º 1
0
        public virtual cBitStream Not()
        {
            if(!m_open)
                throw new ObjectDisposedException("ObjectDisposed_BitStreamClosed");

            // Create the new BitStream
            cBitStream bstrmNew = new cBitStream(m_buffer_length);

            uint uiWholeUInt32Lengths = m_buffer_length >> c_bit_buffer_unit_size_shift;
            uint uiCounter = 0;

            for(uiCounter = 0; uiCounter < uiWholeUInt32Lengths; uiCounter++)
                bstrmNew.m_buffer[uiCounter] = ~m_buffer[uiCounter];

            // Are there any further bits in the buffer?
            if((m_buffer_length & c_bit_buffer_unit_size_mod) > 0)
            {
                uint uiBitMask = uint.MaxValue << (int)(c_bit_buffer_unit_size - (m_buffer_length & c_bit_buffer_unit_size_mod));
                bstrmNew.m_buffer[uiCounter] = ~m_buffer[uiCounter] & uiBitMask;
            }

            return bstrmNew;
        }
Exemplo n.º 2
0
        public virtual cBitStream Or(cBitStream bits)
        {
            if(!m_open)
                throw new ObjectDisposedException("ObjectDisposed_BitStreamClosed");
            if(bits == null)
                throw new ArgumentNullException("bits", "ArgumentNull_BitStream");
            if(bits.Length != m_buffer_length)
                throw new ArgumentException("Argument_DifferentBitStreamLengths");

            // Create the new BitStream
            cBitStream bstrmNew = new cBitStream(m_buffer_length);

            uint uiWholeUInt32Lengths = m_buffer_length >> c_bit_buffer_unit_size_shift;
            uint uiCounter = 0;

            for(uiCounter = 0; uiCounter < uiWholeUInt32Lengths; uiCounter++)
                bstrmNew.m_buffer[uiCounter] = m_buffer[uiCounter] | bits.m_buffer[uiCounter];

            // Are there any further bits in the buffer?
            if((m_buffer_length & c_bit_buffer_unit_size_mod) > 0)
            {
                uint uiBitMask = uint.MaxValue << (int)(c_bit_buffer_unit_size - (m_buffer_length & c_bit_buffer_unit_size_mod));
                bstrmNew.m_buffer[uiCounter] = m_buffer[uiCounter] | bits.m_buffer[uiCounter] & uiBitMask;
            }

            return bstrmNew;
        }
Exemplo n.º 3
0
        public virtual cBitStream Copy()
        {
            cBitStream bstrmCopy = new cBitStream(this.Length);

            Buffer.BlockCopy(m_buffer, 0, bstrmCopy.m_buffer, 0, bstrmCopy.m_buffer.Length << 2);

            bstrmCopy.m_buffer_length = this.m_buffer_length;

            return bstrmCopy;
        }