diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_modifier_8cpp-source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_modifier_8cpp-source.html Tue Mar 30 11:56:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1089 +0,0 @@ - -
-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 -