comparison src/main/symbian/EKA2/vectorbuffer.cpp @ 3975:e85e65aec22f SDL-1.2

Added S60 port.
author Ryan C. Gordon <icculus@icculus.org>
date Sun, 24 Jun 2007 18:26:35 +0000
parents
children
comparison
equal deleted inserted replaced
3974:42578e98a295 3975:e85e65aec22f
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