diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_dynamic_buffers_8cpp-source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_dynamic_buffers_8cpp-source.html Tue Mar 30 11:56:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,212 +0,0 @@ - - -TB10.1 Example Applications: examples/Base/BufsAndStrings/DynamicBuffers/DynamicBuffers.cpp Source File - - - - -

examples/Base/BufsAndStrings/DynamicBuffers/DynamicBuffers.cpp

00001 // Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
-00002 // All rights reserved.
-00003 // This component and the accompanying materials are made available
-00004 // under the terms of "Eclipse Public License v1.0"
-00005 // which accompanies this distribution, and is available
-00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
-00007 //
-00008 // Initial Contributors:
-00009 // Nokia Corporation - initial contribution.
-00010 //
-00011 // Contributors:
-00012 //
-00013 // Description:
-00014 //
-00015 
-00016 #include "CommonFramework.h"
-00017 
-00018 //
-00019 // Common literal text
-00020 //
-00021 _LIT(KTxtNewLine,"\n");
-00022 
-00023 LOCAL_C void writeBuf(CBufBase* aBuf);
-00024 LOCAL_C void standardBufferStuffL(CBufBase* aBuf);
-00025 LOCAL_C void showExpandL();
-00026 LOCAL_C void waitForKey();
-00027 //
-00028 // do the example
-00029 //
-00030 LOCAL_C void doExampleL()
-00031     {
-00032         //
-00033         // do flat buffer demonstration
-00034         //
-00035         _LIT(KTxtFlatBufDemo,"Flat buffer demonstration\n");
-00036         console->Printf(KTxtFlatBufDemo);
-00037         CBufFlat* flatBuf=CBufFlat::NewL(4);
-00038         CleanupStack::PushL(flatBuf);
-00039         flatBuf->SetReserveL(32);
-00040         _LIT(KTxtFlatBufCapacity,"flat buffer capacity=%d\n");
-00041         console->Printf(KTxtFlatBufCapacity,flatBuf->Capacity());
-00042         standardBufferStuffL(flatBuf);
-00043         CleanupStack::PopAndDestroy();
-00044         waitForKey();
-00045         //
-00046         // do segmented buffer demonstration
-00047         //
-00048         _LIT(KTxtSegBufDemo,"Segmented buffer demonstration\n");
-00049         console->Printf(KTxtSegBufDemo);
-00050         CBufSeg* segBuf=CBufSeg::NewL(4);
-00051         CleanupStack::PushL(segBuf);
-00052         standardBufferStuffL(segBuf);
-00053         CleanupStack::PopAndDestroy();
-00054         waitForKey();
-00055         //
-00056         // show ExpandL() and ResizeL()
-00057         //
-00058         showExpandL();
-00059         }
-00060 
-00061 
-00062 LOCAL_C void standardBufferStuffL(CBufBase* aBuf)
-00063         {
-00064         //
-00065         // insert text into buffer (6 chars)
-00066         //
-00067         _LIT(KTxtHello,"Hello!");
-00068         aBuf->InsertL(0,(TAny*)(&KTxtHello)->Ptr(),(&KTxtHello)->Size());
-00069         writeBuf(aBuf);
-00070         //
-00071         // append more text into buffer (another 6 chars)
-00072         //
-00073         //
-00074         _LIT(KTxtWorld," world");
-00075         aBuf->InsertL(10,(TAny*)(&KTxtWorld)->Ptr(),(&KTxtWorld)->Size());
-00076         writeBuf(aBuf);
-00077         //
-00078         // read the 5 characters starting at character
-00079         // position 3 from the buffer into a descriptor.
-00080         //
-00081         //
-00082         TBuf<5> des;
-00083         aBuf->Read(6,(TAny*)des.Ptr(),des.Size());
-00084         _LIT(KTxtRead,"read: %S\n");
-00085         console->Printf(KTxtRead,&des);
-00086         //
-00087         // [over]write 5 characters at character position 6
-00088         //
-00089         //
-00090         _LIT(KTxtFolks,"folks");
-00091         aBuf->Write(12,(TAny*)(&KTxtFolks)->Ptr(),(&KTxtFolks)->Size());
-00092         writeBuf(aBuf);
-00093         //
-00094         // delete characters
-00095         //
-00096         TInt startpos = 5;
-00097         TInt length   = 6;
-00098         startpos <<= 1;
-00099         length   <<= 1;
-00100         aBuf->Delete(startpos,length);
-00101         writeBuf(aBuf);
-00102         //
-00103         // compress
-00104         //
-00105         aBuf->Compress();
-00106         writeBuf(aBuf);
-00107         }
-00108 
-00109 LOCAL_C void writeBuf(CBufBase* aBuf)
-00110         {
-00111         //
-00112         // print, segment by segment
-00113         //
-00114         _LIT(KTxtBuffer,"buffer:");
-00115         console->Printf(KTxtBuffer);
-00116         TInt  bufpos=0;
-00117         TPtrC8 bufptr=aBuf->Ptr(bufpos);
-00118         while (bufptr.Length()>0)
-00119                 {
-00120                 //
-00121                 // write out this segment of the buffer.
-00122                 // Note that the descriptor 'display' is built differently
-00123                 // for Unicode; it also assumes an even number of bytes;
-00124                 // this is valid because the granularity of the buffer is 4.
-00125                 //
-00126                 TPtrC display;
-00127                 display.Set((TUint16*)bufptr.Ptr(),(bufptr.Length()>>1));
-00128                 _LIT(KFormat1," [%d,%d] %S");
-00129                 console->Printf(KFormat1, bufpos, bufptr.Length(), &display);
-00130                 //
-00131                 // update position within the buffer
-00132                 // and the pointer-descriptor.
-00133                 //
-00134                 bufpos+=bufptr.Length();       // update position
-00135                 bufptr.Set(aBuf->Ptr(bufpos)); // should be the next segment
-00136                 }
-00137         console->Printf(KTxtNewLine);
-00138         }
-00139 
-00140         
-00141 
-00142 LOCAL_C void showExpandL()
-00143         {
-00144         _LIT(KTxtShowExpand,"Showing ExpandL()\n");
-00145         console->Printf(KTxtShowExpand);
-00146         //
-00147         // allocate the segmented buffer with 
-00148         // a granularity of 4
-00149         //
-00150         CBufBase* buf=CBufSeg::NewL(4);
-00151         CleanupStack::PushL(buf);
-00152         //
-00153         // insert text into buffer (12 UNICODE chars)
-00154         //
-00155         _LIT(KTxtHelloWorld,"Hello world!");
-00156         buf->InsertL(0,(TAny*)(&KTxtHelloWorld)->Ptr(),(&KTxtHelloWorld)->Size());
-00157         //
-00158         // reserve space for (or 16 16-bit chars (32 bytes))
-00159         //
-00160         buf->ExpandL(12,32); // expand by 32 - may fail
-00161         _LIT(KTxtBufExpanded,"Buffer expanded with uninitialized space: ");
-00162         console->Printf(KTxtBufExpanded);
-00163         writeBuf(buf);
-00164         //
-00165         // now insert 16 16-bit characters
-00166         // one at time.
-00167         //
-00168         // This is CLEARLY INEFFICIENT but shows
-00169         // how successive calls to Write() can be done
-00170         // without risk of failing for lack of memory.
-00171         //
-00172         _LIT(KTxtAtoP,"abcdefghijklmnop");
-00173         TBufC<16> source(KTxtAtoP);
-00174         for (TInt i=0; i<16; i++)
-00175                 {
-00176                 buf->Write((i+6)<<1,(TAny*)&source[i],2);
-00177                 }
-00178         _LIT(KTxtExpandedFilled,"expanded space filled: ");
-00179         console->Printf(KTxtExpandedFilled);
-00180         writeBuf(buf);
-00181         //
-00182         // now adjust size down to 18
-00183         //
-00184         buf->ResizeL(18);
-00185         _LIT(KTxtResized,"resized:");
-00186         console->Printf(KTxtResized);
-00187         writeBuf(buf);
-00188         //
-00189         // destroy buffer
-00190         //
-00191         CleanupStack::PopAndDestroy();
-00192         }
-00193 
-00194 LOCAL_C void waitForKey()
-00195         {
-00196         _LIT(KTxtPressAnyKey,"[press any key]");
-00197         console->Printf(KTxtPressAnyKey);
-00198         console->Getch();
-00199         console->Printf(KTxtNewLine);
-00200         }
-

Generated on Thu Jan 21 10:32:55 2010 for TB10.1 Example Applications by  - -doxygen 1.5.3
- -