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

examples/Base/BufsAndStrings/Desc/Pointer/Pointer.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 // Examples to demonstrate the basic ideas of
-00015 // pointer descriptors. 
-00016 //
-00017 
-00018 #include "CommonFramework.h"
-00019 
-00020 //
-00021 // Common literal text
-00022 //
-00023 _LIT(KTxtHiTHere,"Hi there");
-00024 _LIT(KTxtHaveNiceDay,"Have a nice day!");
-00025 
-00026 //
-00027 // Common format strings
-00028 //
-00029 _LIT(KCommonFormat1,"\"%s\"\n");
-00030 _LIT(KCommonFormat3,"length=%d; size=%d;\n");
-00031 _LIT(KCommonFormat5,"Ptr()=%x; Length()=%d; Size()=%d\n");
-00032 _LIT(KCommonFormat16,"MaxLength()=%d\n");
-00033 _LIT(KCommonFormat17,"\"%S\"; ");
-00034 _LIT(KCommonFormat18,"Length()=%d; Size()=%d; ");
-00035 
-00036 // Do the example
-00037 LOCAL_C void doExampleL()
-00038     {
-00039                                 // Define a constant C style (ASCII) string
-00040         const TText8* cstr8 = (TText8*)"Hello World!";
-00041 
-00042                                 // Look at it.
-00043 
-00044         TBuf<12> temp;
-00045         temp.Copy(TPtrC8(cstr8));
-00046         console->Printf(temp);
-00047 
-00048                                 // A TPtrC8 descriptor represents the
-00049                         // ASCII text; contrast this with the
-00050                         // basic C string  
-00051         TPtrC8 ptrC8(cstr8);
-00052 
-00053                                 // Look at:
-00054                                 //   1. Address of C string
-00055                                 //   2. Length of the C string
-00056                                 //   3. Size of the string.
-00057                                 // Size is 13 bytes to allow for 
-00058                                 // the terminating NULL.
-00059                     // 
-00060         _LIT(KFormat2,"\nNarrow C string at %x; ");
-00061         console->Printf(KFormat2,cstr8);
-00062         console->Printf(KCommonFormat3,12,sizeof("Hello World!"));
-00063 
-00064                                 // Look at:
-00065                                 //   1. Address of descriptor
-00066                                 //   2. Address of descriptor data area
-00067                                 //   3. Length  of descriptor
-00068                                 //   4. Size of descriptor
-00069                                 // Address of descriptor data area is the 
-00070                                 // same as the address of the C string. 
-00071                                 // The Size of the descriptor data is only
-00072                                 // 12 bytes (1 byte for each character).
-00073         _LIT(KFormat4,"8-bit pointer-descriptor at %x; ");
-00074         console->Printf(KFormat4,&ptrC8);
-00075         console->Printf(KCommonFormat5,ptrC8.Ptr(),ptrC8.Length(),ptrC8.Size());                
-00076                                                                 
-00077                 
-00078                                 // Define a constant C style (Wide) string
-00079         const TText16*  cstr16 = (TText16*)L"Hello World!";
-00080 
-00081                                 // A TPtrC16 descriptor represents the
-00082                         // wide (i.e. double-byte character) text;
-00083                         // contrast this with the basic C string.  
-00084         TPtrC16 ptrC16(cstr16);
-00085         
-00086         _LIT(KFormat7,"\nWide C string at %x; ");
-00087         console->Printf(KFormat7,cstr16);
-00088         console->Printf(KCommonFormat3,12,sizeof(L"Hello World!"));
-00089         
-00090                                 // Look at:
-00091                                 //   1. Address of descriptor
-00092                                 //   2. Address of descriptor data area
-00093                                 //   3. Length  of descriptor
-00094                                 //   4. Size of descriptor
-00095                                 // Address of descriptor data area is the
-00096                                 // same as the address of the C string.
-00097                                 // The size of descriptor data is only
-00098                                 // 24 bytes (2 bytes for each character).
-00099         _LIT(KFormat6,"16-bit pointer-descriptor at %x; ");
-00100         console->Printf(KFormat6,&ptrC16);
-00101         console->Printf(KCommonFormat5,ptrC16.Ptr(),ptrC16.Length(),ptrC16.Size());             
-00102         
-00103                 
-00104                                 // Use the _S macro to define a constant 
-00105                                 // C style string of the appropriate width.
-00106                                 // The TText variant is defined at build
-00107                                 // time as  TText16 
-00108                                 // (In earlier times this could also have been TText8,
-00109                                 //  but in all current versions, TText16 is the standard).
-00110         const TText* cstr = _S("Hello World!"); 
-00111 
-00112                                 // TPtrC descriptor represents the text;
-00113                                 // the TPtrC variant is defined at build 
-00114                                 // time as TPtrC16.
-00115         TPtrC ptrc(cstr);
-00116         
-00117         _LIT(KFormat8,"\nBuild-dependent TText at %x; ");
-00118         console->Printf(KFormat8,cstr);
-00119         console->Printf(KCommonFormat3,12,sizeof( 
-00120                                                                   #ifdef _UNICODE
-00121                                                                   L"Hello world!"
-00122                                                                   #else
-00123                                                                   "Hello world!"
-00124                                                                   #endif
-00125                                                   )
-00126                                    );
-00127         
-00128                                 // Look at descriptor basics.
-00129         _LIT(KTxtBuildDependentptdesc,"Build-dependent pointer-descriptor");
-00130         console->Printf(KTxtBuildDependentptdesc);
-00131         
-00132         _LIT(KFormat9," at %x; ");
-00133         console->Printf(KFormat9,&ptrc);
-00134         _LIT(KFormat10,"Ptr()=%x;\n");
-00135         console->Printf(KFormat10,ptrc.Ptr());
-00136         _LIT(KFormat11," Length()=%d; Size()=%d\n");
-00137         console->Printf(KFormat11,ptrc.Length(),ptrc.Size());
-00138 
-00139                                 // The _LIT macro is most useful. It constructs
-00140                     // a family of constant descriptor classes TLitC<Tint>. 
-00141                     // The constant generated by the _LIT macro:
-00142                     //   1. can be passed as 'const TDesC&' type
-00143                     //   2. has an address-of operator 'operator&()' which returns a 'const TDesC*' type
-00144                     //   3. can be passed as a TRefByValue<const TDesC>
-00145                                 //
-00146                                 // The _L macro constructs a TPtrC but should be avoided 
-00147                     // where possible on the grounds of efficiency.
-00148                     // Use the _LIT macro instead.
-00149                                 
-00150         console->Printf(_L("\nThe _L macro constructs a TPtrC"));
-00151         // * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-00152         // * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-00153         
-00154         _LIT(KTxtTPtrBasicConcepts,"\n-->TPtr basic concepts");
-00155         console->Printf(KTxtTPtrBasicConcepts);
-00156         _LIT(KTxtPressToContinue," (press any key to continue)\n");
-00157         console->Printf(KTxtPressToContinue);
-00158         console->Getch();
-00159                                         
-00160                                 // Set up an area and initialise to a 
-00161                                 // C style string (including the NULL).
-00162                                 // The need for the NULL forces cstr to
-00163                                 // have a length of 16.
-00164         TText str[16] =  {'H', 'a', 'v', 'e', ' ', 'a',
-00165                                           ' ', 'n', 'i', 'c', 'e',
-00166                                           ' ', 'd', 'a', 'y', '\0'};
-00167 
-00168                                 // Look at it.
-00169         console->Printf(KCommonFormat1,&str[0]);
-00170 
-00171                                 // TPtr descriptor represents the text.
-00172                                 // Descriptor length is 15 but max length
-00173                                 // is 16. The descriptor does not need the
-00174                                 // terminating NULL, so in this example,
-00175                                 // the last data position is spare. 
-00176         TPtr  ptr(&str[0],15,16);
-00177 
-00178                                 // Look at:
-00179                                 //   1. Address of the C string
-00180                                 //   2. Length of the C string
-00181                                 //   3. Size of the string
-00182                                 // Size is 16 bytes to allow for
-00183                                 // the terminating NULL.
-00184         _LIT(KFormat12,"C string at %x; ");
-00185         console->Printf(KFormat12,str);
-00186         _LIT(KFormat13,"length=%d; size=%d\n");
-00187         console->Printf(KFormat13,15,sizeof(str));
-00188 
-00189                         // Look at:
-00190                                 //   1. Address of descriptor
-00191                                 //   2. Address of descriptor area
-00192                                 //   3. Length of descriptor
-00193                                 //   4. Size of descriptor
-00194                                 //   5. Max length of descriptor 
-00195                                 // Address of descriptor data area is the 
-00196                                 // same as the address of cstr[]. The
-00197                                 // descriptor length is 15 but the maximum
-00198                                 // length is 16.
-00199         _LIT(KFormat14,"Descriptor at %x; ");
-00200         console->Printf(KFormat14,&ptr);
-00201         _LIT(KFormat15,"Ptr()=%x; Length()=%d; Size()=%d; ");
-00202         console->Printf(KFormat15,ptr.Ptr(),ptr.Length(),ptr.Size());
-00203         console->Printf(KCommonFormat16,ptr.MaxLength());
-00204 
-00205                                 // The data can be replaced using the 
-00206                                 // assignment operator. Note the reference to
-00207                     // the TLitC<> KTxtHiTHere constructed using the _LIT macro.
-00208         ptr = KTxtHiTHere;                       
-00209 
-00210                                 // Length of descriptor is now 8 but maximum
-00211                                 // length remains at 16.
-00212                                 // Size is 16 
-00213                                 // Text in ptr's data area (i.e. in the area 
-00214                                 // defined by str[]) is 
-00215                                 // now "Hi there")
-00216         console->Printf(KCommonFormat17,&ptr);
-00217         console->Printf(KCommonFormat18,ptr.Length(),ptr.Size());
-00218         console->Printf(KCommonFormat16,ptr.MaxLength());
-00219                                         
-00220                                 // Length can be changed; data represented 
-00221                                 // by the descriptor is now "Hi"
-00222         ptr.SetLength(2);
-00223                     
-00224         console->Printf(KCommonFormat17,&ptr);
-00225         console->Printf(KCommonFormat18,ptr.Length(),ptr.Size());
-00226         console->Printf(KCommonFormat16,ptr.MaxLength());
-00227 
-00228                                 // Length can be set to zero; NO data 
-00229                                 // is now represented by the
-00230                                 // descriptor but maximum length is still 16
-00231         ptr.Zero();
-00232         console->Printf(KCommonFormat17,&ptr);
-00233         console->Printf(KCommonFormat18,ptr.Length(),ptr.Size());
-00234         console->Printf(KCommonFormat16,ptr.MaxLength());
-00235 
-00236                                 // Replace text with text of length 16, 
-00237                                 // the maximum. 
-00238         ptr = KTxtHaveNiceDay;
-00239         console->Printf(KCommonFormat17,&ptr);
-00240         console->Printf(KCommonFormat18,ptr.Length(),ptr.Size());
-00241         console->Printf(KCommonFormat16,ptr.MaxLength());
-00242 
-00243                                 // adding another character causes panic !!
-00244                                 // length would be > maximum.
-00245                                 // 
-00246                                 // Remove the "//" marks on the next line
-00247                                 // to see this happen
-00248         //ptr.Append('@');
-00249     }
-00250 
-00251 
-00252     
-00253 
-00254 
-00255 
-00256 
-00257         
-00258         
-

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