symbian-qemu-0.9.1-12/libsdl-trunk/src/main/symbian/EKA2/vectorbuffer.cpp
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 /*
       
     2     vectorbuffer.cpp
       
     3     yet another circle buffer
       
     4 
       
     5     Markus Mertama
       
     6 */
       
     7 
       
     8 #include"vectorbuffer.h"
       
     9 
       
    10 
       
    11 
       
    12 void VectorPanic(TInt aErr, TInt aLine)
       
    13     {
       
    14     TBuf<64> b;
       
    15     b.Format(_L("vector buffer at % d "), aLine);
       
    16     User::Panic(b, aErr);
       
    17     }
       
    18 
       
    19 void TNodeBuffer::TNode::Terminator(TNodeBuffer::TNode* aNode)
       
    20     {
       
    21     Mem::Copy(iSucc, &aNode, sizeof(TNode*));
       
    22     }
       
    23 
       
    24 TInt TNodeBuffer::TNode::Size() const
       
    25     {
       
    26     return reinterpret_cast<const TUint8*>(iSucc) - Ptr();
       
    27     }
       
    28 
       
    29 const TUint8*  TNodeBuffer::TNode::Ptr() const
       
    30     {
       
    31     return reinterpret_cast<const TUint8*>(this) + sizeof(TNode);
       
    32     }
       
    33 
       
    34 TNodeBuffer::TNode*  TNodeBuffer::TNode::Empty(TUint8* aBuffer)
       
    35     {
       
    36     TNode* node = reinterpret_cast<TNode*>(aBuffer);
       
    37     node->iSucc = node + 1;
       
    38     return node;
       
    39     }
       
    40 
       
    41  TNodeBuffer::TNode*  TNodeBuffer::TNode::New(TNode* aPred, const TDesC8& aData)
       
    42     {
       
    43     TNode* node = aPred->Size() == 0 ? aPred : aPred->iSucc;
       
    44 
       
    45     
       
    46     TUint8* start = reinterpret_cast<TUint8*>(node) + sizeof(TNode);
       
    47     node->iSucc = reinterpret_cast<TNode*>(start + aData.Size());
       
    48     node->iSucc->iSucc = NULL; //terminator
       
    49 
       
    50     __ASSERT_DEBUG(node->Size() == aData.Size(), VECPANIC(KErrCorrupt));
       
    51 
       
    52     Mem::Copy(start, aData.Ptr(), aData.Size());
       
    53     return node;
       
    54     }
       
    55     
       
    56 
       
    57 
       
    58 
       
    59 
       
    60 
       
    61 
       
    62