inc/BitStream.inl
changeset 0 95b198f216e5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/BitStream.inl	Thu Dec 17 08:52:27 2009 +0200
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  ?Description
+*
+*/
+
+
+// -----------------------------------------------------------------------------
+// TBitStream::
+// 
+// -----------------------------------------------------------------------------
+//
+template<TInt S>
+void TBitStream<S>::Clear()
+    {
+    iData.SetLength(iData.MaxLength());
+    iData.FillZ();
+    }
+
+template<TInt S>
+void TBitStream<S>::SetBit(
+    const TInt aBit)
+    {
+    iData[aBit / 8] |= (1 << (7 - aBit % 8));
+    }
+    
+template<TInt S>
+void TBitStream<S>::ClearBit(
+    const TInt aBit)
+    {
+    iData[aBit / 8] &= ~(1 << (7 - aBit % 8));
+    }
+    
+template<TInt S>
+void TBitStream<S>::SetBitValue(
+    const TInt aBit,
+    const TInt aValue)
+    {
+    if (aValue)
+        {
+        SetBit(aBit);
+        }
+    else
+        {
+        ClearBit(aBit);
+        }
+    }
+    
+template<TInt S>
+TInt TBitStream<S>::GetBit(
+    const TInt aBit) const
+    {
+    return (iData[aBit / 8] & (1 << (7 - aBit % 8))) ? 1 : 0;
+    }
+    
+template<TInt S>
+void TBitStream<S>::XorBit(
+    const TInt aBit,
+    const TInt aValue)
+    {
+    iData[aBit / 8] ^= (1 << (7 - aBit % 8));
+    }
+    
+template<TInt S>
+TPtrC8 TBitStream<S>::Des() const
+    {
+    return TPtrC8(iData.Ptr(), iData.Length());
+    }
+
+template<TInt S>
+void TBitStream<S>::Set(
+    const TDesC8& aInput)
+    {
+    TInt i;
+    
+    iData.SetLength(aInput.Length());
+    for (i = 0; i < S / 8; i++)
+        {
+        iData[i] = aInput[i];
+        }
+    }
+
+template<TInt S>
+void TBitStream<S>::Copy(
+    TBitStream<S> aBitStream)
+    {
+    iData.Copy(aBitStream.Des());
+    }
+    
+template<TInt S>
+void TBitStream<S>::Xor(
+    TBitStream<S> aBitStream)
+    {
+    TPtrC8 des(aBitStream.Des());
+    TInt i;
+    
+    for (i = 0; i < S / 8; i++)
+        {
+        iData[i] ^= des[i];
+        }
+    }
+    
+template<TInt S>
+void TBitStream<S>::Or(
+    TBitStream<S> aBitStream)
+    {
+    TPtrC8 des(aBitStream.Des());
+    TInt i;
+    
+    for (i = 0; i < S / 8; i++)
+        {
+        iData[i] |= des[i];
+        }
+    }
+    
+template<TInt S>
+void TBitStream<S>::And(
+    TBitStream<S> aBitStream)
+    {
+    TPtrC8 des(aBitStream.Des());
+    TInt i;
+    
+    for (i = 0; i < S / 8; i++)
+        {
+        iData[i] &= des[i];
+        }
+    }
+    
+template<TInt S>
+void TBitStream<S>::Not()
+    {
+    TInt i;
+    
+    for (i = 0; i < S / 8; i++)
+        {
+        iData[i] = ~iData[i];
+        }
+    }
+    
+template<TInt S>
+TInt TBitStream<S>::operator[](
+    const TInt aBit) const
+    {
+    return GetBit(aBit);
+    }
+    
+//  End of File