diff -r 89d6a7a84779 -r 25a17d01db0c Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_modifier_8cpp-source.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_modifier_8cpp-source.html Fri Jan 22 18:26:19 2010 +0000 @@ -0,0 +1,1089 @@ + + +TB10.1 Example Applications: examples/Base/BufsAndStrings/Desc/Modifier/Modifier.cpp Source File + + + + +

examples/Base/BufsAndStrings/Desc/Modifier/Modifier.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 some of the modifying member
+00015 // functions of descriptors.
+00016 //
+00017 
+00018 #include "CommonFramework.h"
+00019 
+00020 //
+00021 // Common literal text 
+00022 //
+00023 _LIT(KPressAnyKeyToContinue," (press any key to continue)\n");
+00024 _LIT(KTextHelloWorld,"Hello World!");
+00025 _LIT(KTextHello,"Hello");
+00026 _LIT(KTextXYZ,"XYZ");
+00027 _LIT(KTextDinner,"D\214ner \205 la Fran\207ais");
+00028 
+00029 //
+00030 // Common format strings
+00031 //
+00032 
+00033 _LIT(KFormatfourex,"%4x");
+00034 _LIT(KFormatBufLenSizeMax,"\"%S\"; %d; %d; %d\n");
+00035 _LIT(KFormatLenSizeMax,"; %d; %d; %d\n");
+00036 _LIT(KFormatBufLen,"\"%S\"; Length()=%d; ");
+00037 _LIT(KFormatSizeMax,"Size()=%d; MaxLength()=%d\n");
+00038 _LIT(KFormatCommon,"0x%02x ");
+00039 
+00040                         // Define and implement
+00041                         // the overflow handler used
+00042                         // by the AppendFormat() example.
+00043 
+00044 class TestOverflow : public TDesOverflow
+00045         {
+00046         void Overflow(TDes& aDes);
+00047         };
+00048 
+00049 
+00050 void TestOverflow::Overflow(TDes& aDes)
+00051         {
+00052         _LIT(KTextDescOverflow,"Descriptor overflow - maxlength %d\n");
+00053         console->Printf(KTextDescOverflow,aDes.MaxLength());
+00054         }
+00055 
+00056 
+00057 // Do the example
+00058 LOCAL_C void doExampleL()
+00059     {                              
+00060 
+00061         TInt index;
+00062         TInt counter;
+00063 
+00064                                 // Use a TBuf to demonstrate some of these
+00065         TBuf<32> buf(KTextHelloWorld);
+00066                 
+00067                         //                              
+00068                         // Copy(),CopyF(), CopyUC() & CopyCP()  * * * 
+00069                         //
+00070                         // Note that CopyF() CopyUC() & CopyCP() are locale dependent
+00071 
+00072         _LIT(KTitleCopy,"\n--->Copy(),CopyF(),CopyUC() & CopyCP()\n");
+00073         _LIT(KNoteAboutLocale1,"\nNote that the behaviour of CopyF(), CopyUC() & CopyCP() is\n");
+00074         _LIT(KNoteAboutLocale2,"dependent on the locale.\n");
+00075         console->Printf(KTitleCopy);
+00076         console->Printf(KNoteAboutLocale1);
+00077         console->Printf(KNoteAboutLocale2);
+00078                                                 
+00079                                 // Show buf's content,length,size and
+00080                                 // maximum size.
+00081         console->Printf(KFormatBufLen,&buf,buf.Length());
+00082         console->Printf(KFormatSizeMax,buf.Size(),buf.MaxLength());
+00083 
+00084                                 // Copy normal
+00085         buf.Copy(KTextDinner);
+00086 
+00087                                 // Show buf's content,length,size and 
+00088                                 // maximum size.
+00089         console->Printf(KFormatBufLen,&buf,buf.Length());
+00090         console->Printf(KFormatSizeMax,buf.Size(),buf.MaxLength());
+00091         
+00092 
+00093                                 // Copy folded - accents are not preserved
+00094                                 //
+00095                                 // (NB the display may use a different code
+00096                                 // page to that used by the base, in which 
+00097                                 // case the accents will seem to be preserved)
+00098         buf.CopyF(KTextDinner);
+00099                                 
+00100                                 // Show buf's new content,length,size
+00101                                 // and max size
+00102         console->Printf(KFormatBufLen,&buf,buf.Length());
+00103         console->Printf(KFormatSizeMax,buf.Size(),buf.MaxLength());
+00104                                 // Copy uppercase
+00105                                 // Note that accents are preserved.
+00106         buf.CopyUC(KTextDinner);
+00107                                 
+00108                                 // Show buf's new content,length,size
+00109                                 // and maximum size
+00110         console->Printf(KFormatBufLen,&buf,buf.Length());
+00111         console->Printf(KFormatSizeMax,buf.Size(),buf.MaxLength());
+00112 
+00113                                 // Copy capitalised
+00114                                 // Note that accents are preserved.
+00115         _LIT(KTextCatOnMat,"tHe CaT sAt On ThE mAt - voil\205");
+00116         buf.CopyCP(KTextCatOnMat);
+00117                                 
+00118                                 // Show buf's new content,length,size
+00119                                 // and max size
+00120         console->Printf(KFormatBufLen,&buf,buf.Length());
+00121         console->Printf(KFormatSizeMax,buf.Size(),buf.MaxLength());
+00122                                                 
+00123                                 // Length of copied text > 32 causes panic !!
+00124                                 // 
+00125                                 // Remove the "//" marks on the next two lines
+00126                                 // to see this happen
+00127         //_LIT(KTxtCausePanic1,"Panic caused by an attempt to replace text.");
+00128         //buf.Copy(KTxtCausePanic1);
+00129     
+00130                         //
+00131                         // Append() & operator+=  * * * * * * * * * 
+00132                         //
+00133         _LIT(KTitleAppend,"\n--->Append & Operator+=");
+00134         console->Printf(KTitleAppend);
+00135         console->Printf(KPressAnyKeyToContinue);
+00136         console->Getch();
+00137 
+00138                                 // Show buf's content,length,size and
+00139                                 // maximum size.
+00140         buf = KTextHelloWorld;
+00141         console->Printf(KFormatBufLen,&buf,buf.Length());
+00142         console->Printf(KFormatSizeMax,buf.Size(),buf.MaxLength());
+00143 
+00144                                 // Append:
+00145                                 //     1. a single character
+00146                                 //     2. a descriptor
+00147                                 //     3. another descrptor using operator +=
+00148                                 //
+00149                                 // Generates the string
+00150                                 // "Hello World!@XYZ##" in buf
+00151         buf.Append('@');
+00152         buf.Append(KTextXYZ);
+00153         _LIT(KTextHashHash,"##");
+00154         buf += KTextHashHash;
+00155         console->Printf(KFormatBufLen,&buf,buf.Length());
+00156         console->Printf(KFormatSizeMax,buf.Size(),buf.MaxLength());
+00157 
+00158                         //                              
+00159                         // Swap()  * * * * * * * * * * * * * * * 
+00160                         //
+00161         _LIT(KTitleSwap,"\n--->Swap()");
+00162         console->Printf(KTitleSwap);
+00163         console->Printf(KPressAnyKeyToContinue);
+00164         console->Getch();
+00165         
+00166         _LIT(KWhatANiceDay,"What a nice day");
+00167         TBuf<16> altbuf1(KWhatANiceDay);
+00168         buf = KTextHelloWorld;
+00169 
+00170                                 // Show buf and altbuf BEFORE swap
+00171         _LIT(KTextBefore,"          BEFORE...\n");
+00172         console->Printf(KTextBefore);
+00173         console->Printf(KFormatBufLen,&buf,buf.Length());
+00174         console->Printf(KFormatSizeMax,buf.Size(),buf.MaxLength());
+00175         
+00176         console->Printf(KFormatBufLen,&altbuf1,altbuf1.Length());
+00177         console->Printf(KFormatSizeMax,altbuf1.Size(),altbuf1.MaxLength());
+00178         
+00179                                 // now swap the descriptors and look at
+00180                                 // buf and altbuf again;
+00181                                 // The content, length and size of the 
+00182                                 // descriptors have swapped; their maximum 
+00183                                 // lengths have NOT changed.
+00184         buf.Swap(altbuf1);
+00185 
+00186         _LIT(KTextAfter,"          AFTER...\n");
+00187         console->Printf(KTextAfter);
+00188         console->Printf(KFormatBufLen,&buf,buf.Length());
+00189         console->Printf(KFormatSizeMax,buf.Size(),buf.MaxLength());
+00190         
+00191         console->Printf(KFormatBufLen,&altbuf1,altbuf1.Length());
+00192         console->Printf(KFormatSizeMax,altbuf1.Size(),altbuf1.MaxLength()
+00193                                           );
+00194 
+00195                                 // Swap is ok provided the maximum length
+00196                                 // of each descriptor is big enough to 
+00197                                 // hold the other's data.
+00198         
+00199                                 // altbuf2 is too small to accommodate 
+00200                                 // buf's data !!
+00201                                 // 
+00202                                 // Remove the "//" marks on the next three lines
+00203                                 // to see this panic
+00204         //_LIT(KTxtxxx,"xxx");
+00205         //TBuf<8>  altbuf2(KTxtxxx);
+00206         //buf = KTextHelloWorld;
+00207         //buf.Swap(altbuf2);
+00208     
+00209         
+00210                         //                              
+00211                         // Repeat()  * * * * * * * * * * * * * * * 
+00212                         //
+00213         _LIT(KTitleRepeat,"\n--->Repeat()");
+00214         console->Printf(KTitleRepeat);
+00215         console->Printf(KPressAnyKeyToContinue);
+00216         console->Getch();
+00217 
+00218                                 // Set current length of buf to 16 and
+00219                                 // copy repeat the characters "Hello".
+00220                                 // The descriptor is filled up to 
+00221                                 // its CURRENT LENGTH.
+00222                                 // Result is the 16 charcters
+00223                                 // "HelloHelloHelloH"
+00224                                 //
+00225                                 // Note the truncation. 
+00226         buf.SetLength(16);
+00227         buf.Repeat(KTextHello);
+00228 
+00229                                 // Look at it.
+00230         console->Printf(KFormatBufLen,&buf,buf.Length());
+00231         console->Printf(KFormatSizeMax,buf.Size(),buf.MaxLength());
+00232 
+00233                                 // Now set the length to 8 characters
+00234                                 // and do Repeat again.
+00235                                 // Result is the 8 characters
+00236                                 // "HelloHel"
+00237 
+00238         buf.SetLength(8);
+00239         buf.Repeat(KTextHello);
+00240 
+00241                                 // Look at it
+00242         console->Printf(KFormatBufLen,&buf,buf.Length());
+00243         console->Printf(KFormatSizeMax,buf.Size(),buf.MaxLength());
+00244         
+00245                         //                              
+00246                         // Insert() & Delete()  * * * * * * * * *
+00247                         //
+00248         _LIT(KTitleInsert,"\n--->Insert() & Delete()");
+00249         console->Printf(KTitleInsert);
+00250         console->Printf(KPressAnyKeyToContinue);
+00251         console->Getch();
+00252 
+00253                                 // set buf to contain the text "abc" and 
+00254                                 // look at it
+00255         _LIT(KTextAbc,"abc");
+00256         buf = KTextAbc;
+00257         console->Printf(KFormatBufLenSizeMax,
+00258                                         &buf,
+00259                                         buf.Length(),
+00260                                         buf.Size(),
+00261                                         buf.MaxLength()
+00262                                    );
+00263 
+00264                                 // Insert the descriptor at the beginning
+00265                                 // of buf to give "XYZabc"
+00266                                 //
+00267         
+00268         buf.Insert(0,KTextXYZ);
+00269 
+00270                                 // Look at it
+00271         console->Printf(KFormatBufLenSizeMax,
+00272                                         &buf,
+00273                                         buf.Length(),
+00274                                         buf.Size(),
+00275                                         buf.MaxLength()
+00276                                    );
+00277         
+00278                                 // Now insert another descriptor at pos 2
+00279                                 // to give "XijklmnYZabc"
+00280                                 //
+00281         _LIT(KTextijklmn,"ijklmn");
+00282         buf.Insert(1,KTextijklmn);
+00283 
+00284                                 // Show result
+00285         console->Printf(KFormatBufLenSizeMax,
+00286                                         &buf,
+00287                                         buf.Length(),
+00288                                         buf.Size(),
+00289                                         buf.MaxLength()
+00290                                    );
+00291                                                                         
+00292         
+00293                                 // Insertion point out of range
+00294                                 // (> current length of descriptor)
+00295                                 // 
+00296                                 // Remove the "//" marks on the next line
+00297                                 // to see this panic
+00298         //_LIT(KTxtqwerty,"qwerty");
+00299         //buf.Insert(buf.Length()+1,KTxtqwerty);
+00300         
+00301         
+00302                                 // Resulting length of data
+00303                                 // is > maximum length.
+00304                                 // 
+00305                                 // Remove the "//" marks on the next line
+00306                                 // to see this panic
+00307         //_LIT(KTxtatoz,"abcdefghijklmnopqrstuvwxyz");
+00308         //buf.Insert(12,KTxtatoz);
+00309         
+00310         
+00311                                 // Now delete the 3 data 
+00312                                 // items (characters) at the start
+00313                                 // of buf to give "klmnYZabc"
+00314         buf.Delete(0,3);
+00315 
+00316                                 // Show result
+00317         console->Printf(KFormatBufLenSizeMax,
+00318                                         &buf,
+00319                                         buf.Length(),
+00320                                         buf.Size(),
+00321                                         buf.MaxLength()
+00322                                    );
+00323         
+00324                                 // Now delete the 4 data items (characters) at
+00325                                 // position 4 to give "klmnc"
+00326                                 //
+00327         buf.Delete(4,4);
+00328         
+00329                                 // Show result
+00330         console->Printf(KFormatBufLenSizeMax,
+00331                                         &buf,
+00332                                         buf.Length(),
+00333                                         buf.Size(),
+00334                                         buf.MaxLength()
+00335                                    );
+00336         
+00337                                 // An excessive length for deletion is 
+00338                                 // truncated to a sensible value. Deletes 
+00339                                 // all the data starting at pos 1 to 
+00340                                 // give "k"
+00341                                 // (Note that the length actually
+00342                                 //  deleted is 4 NOT 25000).
+00343                                                         
+00344         buf.Delete(1,25000);
+00345         
+00346                                 // Show result
+00347         console->Printf(KFormatBufLenSizeMax,
+00348                                     &buf,
+00349                                     buf.Length(),
+00350                                     buf.Size(),
+00351                                     buf.MaxLength()
+00352                                    );
+00353                  
+00354                         //                              
+00355                         // TrimLeft() & TrimRight()  * * * * * * * * *
+00356                         //
+00357         _LIT(KTitleTrimLeft,"\n--->TrimLeft() & TrimRight()");
+00358         console->Printf(KTitleTrimLeft);
+00359         console->Printf(KPressAnyKeyToContinue);
+00360         console->Getch();
+00361 
+00362                                 // set buf up and show the detail
+00363         buf.Fill(' ',18);
+00364         buf.Replace(3,(&KTextHelloWorld)->Length(),KTextHelloWorld);
+00365         console->Printf(KFormatBufLenSizeMax,  
+00366                         &buf,
+00367                                         buf.Length(),
+00368                                         buf.Size(),
+00369                                         buf.MaxLength()
+00370                                    );
+00371 
+00372                                 // Remove left hand spaces      
+00373         buf.TrimLeft(); 
+00374         console->Printf(KFormatBufLenSizeMax,  
+00375                         &buf,
+00376                                         buf.Length(),
+00377                                         buf.Size(),
+00378                                         buf.MaxLength()
+00379                                    );
+00380 
+00381                                 // Remove right hand spaces     
+00382         buf.TrimRight();        
+00383         console->Printf(KFormatBufLenSizeMax,  
+00384                         &buf,
+00385                                         buf.Length(),
+00386                                         buf.Size(),
+00387                                         buf.MaxLength()
+00388                                    );
+00389 
+00390                                 // Trim() removes both left and right
+00391                                 // hand spaces 
+00392 
+00393                  
+00394                         //                              
+00395                         // FillZ() & Fill()  * * * * * * * * * *  
+00396                         //
+00397         _LIT(KTitleFill,"\n--->FillZ() & Fill()");
+00398         console->Printf(KTitleFill);
+00399         console->Printf(KPressAnyKeyToContinue);
+00400         console->Getch();
+00401                             
+00402                                 // Set current length of buf
+00403                                 // Fillz() fills buf up to its current length
+00404                                 // with 0x00.
+00405         buf.SetLength(8);
+00406         buf.FillZ();
+00407 
+00408                                 // Show it
+00409         counter = buf.Length();
+00410         for (index = 0; index < counter; index++)
+00411                 console->Printf(KFormatCommon,buf[index]);
+00412                 
+00413         console->Printf(KFormatLenSizeMax,
+00414                             buf.Length(),
+00415                                         buf.Size(),
+00416                                         buf.MaxLength()
+00417                                    );
+00418 
+00419                                 // Fills buf up to its current length 
+00420                                 // with 'A'
+00421         buf.Fill('A');
+00422         
+00423                                 // show it
+00424         console->Printf(KFormatBufLenSizeMax,  
+00425                         &buf,
+00426                                         buf.Length(),
+00427                                         buf.Size(),
+00428                                         buf.MaxLength()
+00429                                    );
+00430         
+00431                         //                              
+00432                         // Num(), NumUC(), AppendNum() & AppendNumUC()
+00433                         //
+00434         _LIT(KTitleNum,"\n--->Num(), NumUC(), AppendNum()");
+00435         console->Printf(KTitleNum);
+00436         console->Printf(KPressAnyKeyToContinue);
+00437         console->Getch();
+00438 
+00439                                 // convert a signed integer to 
+00440                                 // decimal characters
+00441         buf.Num(-176);
+00442 
+00443                                 // show it
+00444         console->Printf(KFormatBufLenSizeMax,  
+00445                         &buf,
+00446                                         buf.Length(),
+00447                                         buf.Size(),
+00448                                         buf.MaxLength()
+00449                                    );
+00450 
+00451                                 // convert another signed integer
+00452         buf.Num(12345);
+00453 
+00454                                 // show it
+00455         console->Printf(KFormatBufLenSizeMax,  
+00456                         &buf,
+00457                                     buf.Length(),
+00458                                         buf.Size(),
+00459                                         buf.MaxLength()
+00460                                    );
+00461 
+00462                                 // convert an unsigned integer
+00463         TUint nosign = 176;
+00464         
+00465                                 // ... into decimal characters (the default,
+00466                                 // if not explicitly specified)
+00467         buf.Num(nosign);
+00468         console->Printf(KFormatBufLenSizeMax,  
+00469                         &buf,
+00470                                     buf.Length(),
+00471                                         buf.Size(),
+00472                                         buf.MaxLength()
+00473                                    );
+00474                                         
+00475                                 // ... into binary characters
+00476         buf.Num(nosign,EBinary);
+00477         console->Printf(KFormatBufLenSizeMax,  
+00478                         &buf,
+00479                                         buf.Length(),
+00480                                         buf.Size(),
+00481                                         buf.MaxLength()
+00482                                    );
+00483         
+00484                                 // ... into octal characters
+00485         buf.Num(nosign,EOctal);
+00486         console->Printf(KFormatBufLenSizeMax,  
+00487                         &buf,
+00488                                         buf.Length(),
+00489                                         buf.Size(),
+00490                                         buf.MaxLength()
+00491                                    );
+00492         
+00493                                 // ... into lower case hex characters
+00494         buf.Num(nosign,EHex);
+00495         console->Printf(KFormatBufLenSizeMax,  
+00496                         &buf,
+00497                                         buf.Length(),
+00498                                         buf.Size(),
+00499                                         buf.MaxLength()
+00500                                    );                             
+00501         
+00502                                 // ... into upper case hex characters
+00503         buf.NumUC(nosign,EHex);
+00504         console->Printf(KFormatBufLenSizeMax,  
+00505                         &buf,
+00506                                     buf.Length(),
+00507                                     buf.Size(),
+00508                                     buf.MaxLength()
+00509                                    );
+00510                         
+00511                                 // Append functions the same, except 
+00512                                 // they append the converted data.
+00513                                 // Put "xyz" into the descriptor, convert
+00514                                 // and concatenate the variations.
+00515 
+00516         _LIT(KTextxyz,"xyz");                           
+00517         buf = KTextxyz;
+00518 
+00519         buf.AppendNum(nosign);
+00520         buf.AppendNum(nosign,EBinary);
+00521         buf.AppendNum(nosign,EOctal);
+00522         buf.AppendNum(nosign,EHex);
+00523         buf.AppendNumUC(nosign,EHex);
+00524         console->Printf(KFormatBufLenSizeMax,  
+00525                         &buf,
+00526                                         buf.Length(),
+00527                                         buf.Size(),
+00528                                         buf.MaxLength()
+00529                                    );
+00530                                                 
+00531                         //                              
+00532                         // Justify() & AppendJustify()* * * 
+00533                         //
+00534         _LIT(KTitleJustify,"\n--->Justify() & AppendJustify()");
+00535         console->Printf(KTitleJustify);
+00536         console->Printf(KPressAnyKeyToContinue);
+00537         
+00538         console->Getch();
+00539 
+00540                                 // source descriptor for this example has
+00541                                 // length 12. 
+00542         TBufC<40> src(KTextHelloWorld);
+00543                                 
+00544                                 // target field in buf has width 16 (NB this
+00545                                 // is greater than the length of the descriptor 
+00546                                 // src).
+00547                                 // src is copied into target field, aligned left 
+00548                                 // and padded with '@' characters.
+00549                                 //
+00550                                 // length of buf becomes the same as the 
+00551                                 // specified width, i.e 16 
+00552         buf.Justify(src,16,ELeft,'@');
+00553         console->Printf(KFormatBufLenSizeMax,  
+00554                         &buf,
+00555                                         buf.Length(),
+00556                                         buf.Size(),
+00557                                         buf.MaxLength()
+00558                                    );
+00559         
+00560                                 // target field in buf has width 16 (NB this
+00561                                 // is greater than the length of the descriptor
+00562                                 // src).
+00563                                 // src is copied into target field, aligned centre 
+00564                                 // and padded with '@' characters
+00565                                 //
+00566                                 // length of buf becomes the same as the
+00567                                 // specified width, i.e 16 
+00568         buf.Justify(src,16,ECenter,'@');
+00569         console->Printf(KFormatBufLenSizeMax,  
+00570                         &buf,
+00571                                         buf.Length(),
+00572                                         buf.Size(),
+00573                                         buf.MaxLength()
+00574                                    );
+00575         
+00576                                 // target field in buf has width 10 (NB this
+00577                                 // is smaller than the length of the descriptor
+00578                                 // src).
+00579                                 // src is copied into target field but truncated
+00580                                 // to 10 characters and, therefore, alignment and 
+00581                                 // padding information not used.
+00582                                 //
+00583                                 // length of buf becomes the same as the 
+00584                                 // width, i.e 10 
+00585         buf.Justify(src,10,ECenter,'@');
+00586         console->Printf(KFormatBufLenSizeMax,  
+00587                         &buf,
+00588                                         buf.Length(),
+00589                                         buf.Size(),
+00590                                         buf.MaxLength()
+00591                                    );
+00592                 
+00593                                 // target field in buf is set to the length of
+00594                                 // the descriptor src (whatever it currently is)
+00595                                 //
+00596                                 // src copied into target field. No padding and
+00597                                 // no truncatiuon needed and so the
+00598                                 // alignment and padding information is not used.
+00599                                 //
+00600                                 // length of buf becomes the same as the length
+00601                                 // of src i.e 12 
+00602         buf.Justify(src,KDefaultJustifyWidth,ECenter,'@');
+00603         console->Printf(KFormatBufLenSizeMax,  
+00604                         &buf,
+00605                                         buf.Length(),
+00606                                         buf.Size(),
+00607                                         buf.MaxLength()
+00608                                    );
+00609         
+00610         
+00611         
+00612                                 // implied width > maximum length of buf.
+00613                                 // 
+00614                                 // Remove the "//" marks on the next two lines
+00615                                 // to see this panic
+00616         //_LIT(KTxtPanicCausingText,"Panic causing text because length > 32");
+00617         //src = KTxtPanicCausingText;
+00618         //buf.Justify(src,KDefaultJustifyWidth,ECenter,'@' );
+00619         
+00620 
+00621          
+00622                                 // explicit width > maximum length of buf
+00623                                 // 
+00624                                 // Remove the "//" marks on the next line
+00625                                 // to see this panic
+00626         //buf.Justify(src,33,ECenter,'@');
+00627         
+00628 
+00629                                 // AppendJustify() is  similar but target 
+00630                                 // field appended to descriptor.
+00631                                 //
+00632                                 // Target field in buf has width 16 
+00633                                 // (NB greater than length of descriptor 
+00634                                 // src) and is appended to existing content
+00635                                 // of buf.
+00636                                 // src copied into target field, 
+00637                                 // aligned left and padded with '@' 
+00638                                 // characters
+00639                                 //
+00640                                 // Resulting length of buf is the length
+00641                                 // of "ABCD" plus the width of the target
+00642                                 // field (16) giving a value of 20.
+00643         _LIT(KTextABCD,"ABCD");
+00644         buf = KTextABCD;
+00645         buf.AppendJustify(src,16,ELeft,'@');
+00646         console->Printf(KFormatBufLenSizeMax,  
+00647                         &buf,
+00648                                         buf.Length(),
+00649                                         buf.Size(),
+00650                                         buf.MaxLength()
+00651                                    );
+00652 
+00653                         //                              
+00654                         // Format() & AppendFormat() * * * 
+00655                         //
+00656         _LIT(KTitleFormatAndAppendFormat,"\n--->Format() & AppendFormat()");
+00657         console->Printf(KTitleFormatAndAppendFormat);
+00658         console->Printf(KPressAnyKeyToContinue);
+00659         console->Getch();
+00660 
+00661                                 // use tgt as a target descriptor to show 
+00662                                 // the results of format()
+00663         TBuf<128> tgt;
+00664         
+00665                                 // The basic %<type> format.
+00666                                 // Interprets the arguments as signed/unsigned
+00667                                 // integers and generates the appropriate
+00668                                 // character representations. The characters only
+00669                                 // occupy the space needed to represent them.
+00670                                 //
+00671                                 // Generates:"1000001 A 65 101 65 41"
+00672                                 //
+00673                                 // format string is:
+00674                                 // "%b %c %d %o %u %x"
+00675 
+00676         _LIT(KFormat1,"%b %c %d %o %u %x");
+00677         tgt.Format(KFormat1,65,65,65,65,65,65);
+00678     console->Printf(KFormatBufLenSizeMax,  
+00679                         &tgt,
+00680                                         tgt.Length(),
+00681                                         tgt.Size(),
+00682                                         tgt.MaxLength()
+00683                                    );                   
+00684 
+00685                                 // Interprets the argument as an unsigned
+00686                                 // integer; the generated (hex) characters are
+00687                                 // right aligned and padded to the left
+00688                                 // with '0' to make a total of 4 characters.
+00689                                 //
+00690                         // Generates:"0041"
+00691                                 //
+00692                                 // format string is:
+00693                                 // "%04x"
+00694         _LIT(KFormat2,"%04x");
+00695         tgt.Format(KFormat2,65);
+00696     console->Printf(KFormatBufLenSizeMax,  
+00697                         &tgt,
+00698                                         tgt.Length(),
+00699                                         tgt.Size(),
+00700                                         tgt.MaxLength()
+00701                                    );
+00702                                                                                 
+00703                                 // Interprets the argument as an unsigned
+00704                                 // integer;the generated (hex) characters are
+00705                                 // right aligned and padded to the left with 
+00706                                 // blanks to make a total of 4 characters.
+00707                                 //
+00708                         // Generates:"  41"
+00709                                 //
+00710                                 // format string is:
+00711                                 // "%4x"
+00712         tgt.Format(KFormatfourex,65);
+00713     console->Printf(KFormatBufLenSizeMax,  
+00714                         &tgt,
+00715                                         tgt.Length(),
+00716                                         tgt.Size(),
+00717                                         tgt.MaxLength()
+00718                                    );                   
+00719                                                                                 
+00720                                 // Interprets the argument as an unsigned
+00721                                 // integer; the generated (hex) characters are
+00722                                 // right aligned and padded to the left with 
+00723                                 // blanks to make a total of 4 characters.
+00724                                 //
+00725                         // Generates:"1fff" 
+00726                                 //
+00727                                 // NB the correct hex value is "1ffff"
+00728                                 // but width specified as 4 resulting 
+00729                                 // in TRUNCATION.
+00730                                 // 
+00731                                 //
+00732                                 // format string is:
+00733                                 // "%4x"
+00734         tgt.Format(KFormatfourex,131071);
+00735     console->Printf(KFormatBufLenSizeMax,  
+00736                         &tgt,
+00737                                         tgt.Length(),
+00738                                         tgt.Size(),
+00739                                         tgt.MaxLength()
+00740                                    );                                                                                   
+00741         
+00742                                 // The '*' means that the width of the output
+00743                                 // is taken from the 1st argument in the list; 
+00744                                 // Interprets the 2nd argument as an unsigned
+00745                                 // integer.
+00746                                 // The generated (hex) characters are right 
+00747                                 // aligned and padded to the left with blanks
+00748                                 // to make a total of 4 characters.
+00749                                 //
+00750                         // Generates:"  41"
+00751                                 //
+00752                                 // format string is:
+00753                                 // "%*x"
+00754         _LIT(KFormat4,"%*x");
+00755         tgt.Format(KFormat4,4,65);
+00756     console->Printf(KFormatBufLenSizeMax,  
+00757                         &tgt,
+00758                                     tgt.Length(),
+00759                                     tgt.Size(),
+00760                                     tgt.MaxLength()
+00761                                    );                   
+00762                 
+00763                                 // Interprets the 1st argument as a signed
+00764                                 // integer. 
+00765                                 //
+00766                                 // The generated (decimal) characters are 
+00767                                 // right aligned and padded to the left 
+00768                                 // with '$' to make a total of 4 characters.
+00769                                 //
+00770                                 // These are then followed by the
+00771                                 // 4 characters ".00 "
+00772                                 //                                                                                         
+00773                                 // Interprets the 2nd argument as a descriptor.
+00774                                 // The characters within the descriptor are
+00775                                 // appended to those already generated.
+00776                                 //
+00777                         // Generates:"$$65.00 over"
+00778                                 //
+00779                                 // Format string is:
+00780                                 // "%+$4d.00 %S"
+00781                                 //
+00782     
+00783         _LIT(KTextover,"over");
+00784         _LIT(KFormat5,"%+$4d.00 %S");
+00785         tgt.Format(KFormat5,65,&KTextover);
+00786     console->Printf(KFormatBufLenSizeMax,  
+00787                         &tgt,
+00788                                         tgt.Length(),
+00789                                         tgt.Size(),
+00790                                         tgt.MaxLength()
+00791                                    );
+00792         
+00793         
+00794                                 // The * means that the width of the 
+00795                                 // output is taken from the 1st argument 
+00796                                 // in the list.
+00797                                 //
+00798                                 // Interprets the 2nd argument as a descriptor.
+00799                                 // The characters copied from it are right 
+00800                                 // aligned and padded on the left with
+00801                                 // '0' characters
+00802                                 //
+00803                         // Generates:"000000fred"
+00804                                 //
+00805                                 // Format string is:
+00806                                 // "%+0*S"
+00807                                 //
+00808         
+00809         _LIT(KTextfred,"fred");
+00810         _LIT(KFormat6,"%+0*S");
+00811         tgt.Format(KFormat6,10,&KTextfred);
+00812     console->Printf(KFormatBufLenSizeMax,  
+00813                         &tgt,
+00814                                         tgt.Length(),
+00815                                         tgt.Size(),
+00816                                         tgt.MaxLength()
+00817                                    );                          
+00818     
+00819 
+00820                                 // The * means that the fill character is 
+00821                                 // taken from the 1st argument in the list.
+00822                                 //
+00823                                 // Interprets the 2nd argument as an unsigned
+00824                                 // integer.
+00825                                 // The generated characters are centrally 
+00826                                 // aligned and padded on the left and right
+00827                                 // with '*' to make 6 characters.
+00828                                 //
+00829                         // Generates:"**41**"
+00830                                 //
+00831                                 // Format string is:
+00832                                 // "%=*6x"
+00833                                 //
+00834         
+00835         _LIT(KFormat7,"%=*6x");
+00836         tgt.Format(KFormat7,'*',65);
+00837     console->Printf(KFormatBufLenSizeMax,  
+00838                         &tgt,
+00839                                         tgt.Length(),
+00840                                         tgt.Size(),
+00841                                         tgt.MaxLength()
+00842                                    );
+00843                                                                     
+00844                                 // The 1st '*' means that the fill character 
+00845                                 // is taken from the 1st argument in the list.
+00846                                 //
+00847                                 // The 2nd '*' means that the width is taken
+00848                                 // from the 2nd argument in the list
+00849                                 //
+00850                                 // Interprets the 3rd argument as a signed
+00851                                 // integer.
+00852                                 // The generated characters are right aligned
+00853                                 // and padded on the left with '.' to make
+00854                                 // 10 characters.
+00855                                 //
+00856                         // Generates:".......-65"
+00857                                 //
+00858                                 // Format string is:
+00859                                 // "%+**d"
+00860                                 //
+00861                 
+00862         _LIT(KFormat8,"%+**d");
+00863         tgt.Format(KFormat8,'.',10,(-65));
+00864     console->Printf(KFormatBufLenSizeMax,  
+00865                         &tgt,
+00866                                     tgt.Length(),
+00867                                         tgt.Size(),
+00868                                         tgt.MaxLength()
+00869                                    );
+00870                                                                    
+00871                 // Same as the previous example but the 
+00872                 // characters are left aligned and padded to
+00873                 // the right with '.' characters.
+00874                                 //
+00875                         // Generates:"-65......."              
+00876                                 //
+00877                                 // Format string is:
+00878                                 // "%-**d"
+00879                                 //
+00880         
+00881         _LIT(KFormat9,"%-**d");     
+00882         tgt.Format(KFormat9,'.',10,(-65));
+00883     console->Printf(KFormatBufLenSizeMax,  
+00884                         &tgt,
+00885                                         tgt.Length(),
+00886                                         tgt.Size(),
+00887                                         tgt.MaxLength()
+00888                                    );                                                  
+00889                               
+00890                 // Generates 6 fill characters 'A'.
+00891                 // Makes no use of the argument list.
+00892                 //
+00893                 // Generates: "AAAAAA"                
+00894                                 //
+00895                                 // Format string is:
+00896                                 // "%-A6p"
+00897                                 //
+00898         
+00899         _LIT(KFormat10,"%-A6p");            
+00900         tgt.Format(KFormat10,65);
+00901         console->Printf(KFormatBufLenSizeMax,  
+00902                         &tgt,
+00903                                         tgt.Length(),
+00904                                         tgt.Size(),
+00905                                         tgt.MaxLength()
+00906                                    );
+00907 
+00908                  // Interpret the argument as a TInt64 type.        
+00909         _LIT(KFormat10a,"%Li");  
+00910         
+00911         TInt64   var(65);
+00912         tgt.Format(KFormat10a,var);
+00913         
+00914         console->Printf(KFormatBufLenSizeMax,  
+00915                         &tgt,
+00916                                         tgt.Length(),
+00917                                         tgt.Size(),
+00918                                         tgt.MaxLength()
+00919                            );
+00920             
+00921 
+00922 
+00923 
+00924                                 // Interpret the argument as an unsigned integer
+00925                                 // and convert to a two byte numeric 
+00926                                 // representation (most significant byte first)
+00927                                 //
+00928                                 // So 4660 = 0x1234 => 1st byte contains 0x12
+00929                                 //                     2nd byte contains 0x34 
+00930                                 //
+00931                                 // NB This is same for both ASCII & UNICODE build
+00932                                 //
+00933                                 // Format string is:
+00934                                 // "%m"
+00935                                 //
+00936          
+00937         _LIT(KFormat11,"%m");
+00938         tgt.Format(KFormat11,4660);
+00939         
+00940         counter = tgt.Length();
+00941         for (index = 0; index < counter; index++)
+00942                 console->Printf(KFormatCommon,tgt[index]);
+00943                 
+00944         console->Printf(KFormatLenSizeMax,
+00945                                         tgt.Length(),
+00946                                         tgt.Size(),
+00947                                         tgt.MaxLength()
+00948                                    );
+00949 
+00950 
+00951 
+00952 
+00953 
+00954                                 // Interpret the argument as an unsigned integer
+00955                                 // and convert to a four byte numeric 
+00956                                 // representation (most significant byte first)
+00957                                 //
+00958                                 // So 4660 = 0x1234 => 1st byte contains 0x00
+00959                                 //                     2nd byte contains 0x00 
+00960                                 //                                         3rd byte contains 0x12
+00961                                 //                     4th byte contains 0x34
+00962                                 // NB This is same for both ASCII & UNICODE build         
+00963                                 //
+00964                                 // Format string is:
+00965                                 // "%M"
+00966                                 //
+00967         
+00968         _LIT(KFormat12,"%M");
+00969         tgt.Format(KFormat12,4660);                                                
+00970         
+00971         counter = tgt.Length(); 
+00972     for (index = 0; index < counter; index++)
+00973                 console->Printf(KFormatCommon,tgt[index]);
+00974                 
+00975         console->Printf(KFormatLenSizeMax,
+00976                                         tgt.Length(),
+00977                                         tgt.Size(),
+00978                                         tgt.MaxLength()
+00979                                    );
+00980 
+00981                                 // Interpret the argument as an unsigned integer
+00982                                 // and convert to a two byte numeric 
+00983                                 // representation (least significant byte first)
+00984                                 //
+00985                                 // So 4660 = 0x1234 => 1st byte contains 0x34
+00986                                 //                     2nd byte contains 0x12 
+00987                                 //
+00988                                 // NB This is same for both ASCII & UNICODE build
+00989                                 //
+00990                                 // Format string is:
+00991                                 // "%w"
+00992                                 //
+00993       
+00994         _LIT(KFormat13,"%w");
+00995         tgt.Format(KFormat13,4660);
+00996         
+00997         counter = tgt.Length();
+00998     for (index = 0; index < counter; index++)
+00999                 console->Printf(KFormatCommon,tgt[index]);
+01000                 
+01001         console->Printf(KFormatLenSizeMax,
+01002                                         tgt.Length(),
+01003                                         tgt.Size(),
+01004                                         tgt.MaxLength()
+01005                                    );
+01006 
+01007                                 // Interpret the argument as an unsigned integer
+01008                                 // and convert to a four byte numeric 
+01009                                 // representation (least significant byte first)
+01010                                 //
+01011                                 // So 4660 = 0x1234 => 1st byte contains 0x34
+01012                                 //                     2nd byte contains 0x12 
+01013                                 //                                         3rd byte contains 0x00
+01014                                 //                     4th byte contains 0x00
+01015                                 // NB This is same for both ASCII & UNICODE build         
+01016                                 //
+01017                                 // Format string is:
+01018                                 // "%W"
+01019                                 //
+01020 
+01021         _LIT(KFormat14,"%W");
+01022         tgt.Format(KFormat14,4660);                                                
+01023         
+01024         counter = tgt.Length(); 
+01025     for (index = 0; index < counter; index++)
+01026                 console->Printf(KFormatCommon,tgt[index]);
+01027                 
+01028         console->Printf(KFormatLenSizeMax,
+01029                                         tgt.Length(),
+01030                                         tgt.Size(),
+01031                                         tgt.MaxLength()
+01032                                    );
+01033         
+01034         console->Printf(KPressAnyKeyToContinue);
+01035         console->Getch();
+01036         
+01037         
+01038                         //                              
+01039                         // AppendFormat() illustrating use of the
+01040                         // overflow handler 
+01041                         //
+01042         _LIT(KTitleOverflowHandler,"\n--->AppendFormat() & the overflow handler");
+01043         console->Printf(KTitleOverflowHandler);
+01044         console->Printf(KPressAnyKeyToContinue);
+01045         console->Getch();
+01046 
+01047                                 // use the TestOverflow class as the overflow 
+01048                                 // handler
+01049         TBuf<16>     overtgt;
+01050         TestOverflow theoverflow;
+01051         
+01052                                 // prime "overtgt" with data (of length 14)
+01053         _LIT(KTextabcdefghijklmn,"abcdefghijklmn");
+01054         overtgt = KTextabcdefghijklmn;
+01055 
+01056                                 // Format string contains just literal
+01057                                 // text and no embedded commands.
+01058                                 // Length of literal text is 3
+01059                                 // 14+3 > max length of "overtgt" and 
+01060                                 // so theoverflow.Overflow() will be invoked
+01061         
+01062         _LIT(KTextopq,"opq");
+01063         overtgt.AppendFormat(KTextopq,&theoverflow);
+01064 
+01065                                 // NB omitting the 2nd parameter, giving:
+01066                                 // overtgt.AppendFormat(KTextopq);
+01067                                 // results in a panic.
+01068     }
+01069         
+01070 
+01071 
+01072 
+01073 
+01074 
+01075 
+01076         
+01077         
+

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