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

examples/Base/tcharexample/tcharexample.cpp

Go to the documentation of this file.
00001 // Copyright (c) 2008-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 // This example program demonstrates the TChar, TCharF, TCharLC and TCharUC character classes.
+00015 //
+00016 
+00017 
+00018 
+00023 #include "tcharexample.h"
+00024 
+00025 static CConsoleBase* console;
+00026 
+00030 CTCharExample::CTCharExample()
+00031         {
+00032         }
+00033 
+00034 void CTCharExample::ConstructL()
+00035         {
+00036         _LIT(KTitle, "\r\nTChar Example" );
+00037         console = Console::NewL(KTitle, TSize(KConsFullScreen, KConsFullScreen));
+00038         
+00039         _LIT(KWelcome, "\r\nWelcome to the TChar example application");
+00040         console->Printf(KWelcome);
+00041         }
+00042 
+00046 CTCharExample::~CTCharExample()
+00047         {
+00048         delete console;
+00049         }
+00050 
+00055 CTCharExample* CTCharExample::NewL()
+00056         {
+00057         CTCharExample* self = new(ELeave)CTCharExample();
+00058         CleanupStack::PushL(self);
+00059         self->ConstructL();
+00060         CleanupStack::Pop(self);
+00061         return self;
+00062         }
+00063 
+00068 void PrintIsXXXFunction(TChar aCharValue)
+00069         {
+00070         if(aCharValue.IsLower())
+00071                 {
+00072                 _LIT(KLower," The character is lowercase\r\n");
+00073                 console->Printf(KLower);
+00074                 }
+00075         if(aCharValue.IsUpper())
+00076                 {
+00077                 _LIT(KUpper," The character is uppercase\r\n");
+00078                 console->Printf(KUpper);
+00079                 }
+00080         if(aCharValue.IsAlpha())
+00081                 {
+00082                 _LIT(KAlpha," The character is alphabetic\r\n"); 
+00083                 console->Printf(KAlpha);
+00084                 }
+00085         if(aCharValue.IsDigit())
+00086                 {
+00087                 _LIT(KDigit," The character is a digit\r\n");
+00088                 console->Printf(KDigit);
+00089                 }
+00090         if(aCharValue.IsHexDigit())
+00091                 {
+00092                 _LIT(KHexDigit," The character is a hexadecimal digit\r\n");
+00093                 console->Printf(KHexDigit);
+00094                 }
+00095         if(aCharValue.IsSpace())
+00096                 {
+00097                 _LIT(KSpace," The character is a space\r\n");
+00098                 console->Printf(KSpace);
+00099                 }
+00100         if(aCharValue.IsPunctuation())
+00101                 {
+00102                 _LIT(KPunctuation," The character is punctuation\r\n");
+00103                 console->Printf(KPunctuation);
+00104                 }
+00105         else if(aCharValue.IsPrint())
+00106                 {
+00107                 _LIT(KPrint," The character is printable\r\n");
+00108                 console->Printf(KPrint);
+00109                 }
+00110         }
+00111     
+00115 void TCharIsXXXFunctions()
+00116         {
+00117         _LIT(KEnterAKey,"\r\nEnter a character to process with the TChar::IsXXX() functions: ");
+00118         console->Printf(KEnterAKey);
+00119         
+00120         TChar charValue = console->Getch();
+00121         _LIT(KPrintChar,"%C\r\n");
+00122         console->Printf(KPrintChar, (TUint)charValue);
+00123         
+00124         // Get and print the character type using the IsXXX() functions.
+00125         PrintIsXXXFunction(charValue);
+00126         }
+00127         
+00131 void TCharGetXXXFunctions()
+00132         {
+00133         _LIT(KEnterAKey,"\r\nEnter a character to process with the TChar:GetXXX() functions: ");
+00134         console->Printf(KEnterAKey);
+00135         _LIT(KPrintChar,"%C\r\n");
+00136         TChar charValue = console->Getch();
+00137         
+00138         console->Printf(KPrintChar, (TUint)charValue);
+00139 
+00140         // Gets the combining class of the character.
+00141         TInt getCombiningClass = charValue.GetCombiningClass();
+00142         _LIT(KCharCombNotClassMsg," The character does not have a combining class\r\n");
+00143         _LIT(KCharCombClassMsg," The character has %d combining classes\r\n");
+00144         if(getCombiningClass == 0)
+00145                 console->Printf(KCharCombNotClassMsg);
+00146         else
+00147                 console->Printf(KCharCombClassMsg, getCombiningClass);
+00148         
+00149         _LIT(KENeutalWidthMsg," ENeutralWidth: This character type includes 'ambiguous width' as defined in Unicode Technical Report 11: East Asian Width\r\n");
+00150         _LIT(KEHaldWidthMsg," EHalfWidth: This character occupies a single cell\r\n");
+00151         _LIT(KEFullWidthMsg," EFullWidth: This character occupies 2 cells\r\n");
+00152         _LIT(KENarrowMsg," ENarrow: This character is narrow and has explicit full-width counterparts\r\n");
+00153         _LIT(KEWideMsg," EWide: This character is wide\r\n");
+00154         _LIT(KNoWidthMsg," This character has no width defined\r\n");
+00155         // Gets and prints the Chinese, Japanese, Korean (CJK) notional width of the character.
+00156         TChar::TCjkWidth cjkWidth = charValue.GetCjkWidth();
+00157         switch(cjkWidth)
+00158                 {
+00159                 case TChar::ENeutralWidth:
+00160                         console->Printf(KENeutalWidthMsg);
+00161                         break;
+00162                 case TChar::EHalfWidth:
+00163                         console->Printf(KEHaldWidthMsg);
+00164                         break;
+00165                 case TChar::EFullWidth:
+00166                         console->Printf(KEFullWidthMsg);
+00167                         break;  
+00168                 case TChar::ENarrow:
+00169                         console->Printf(KENarrowMsg);
+00170                         break;
+00171                 case TChar::EWide:
+00172                         console->Printf(KEWideMsg);
+00173                         break;
+00174                 default:
+00175                         console->Printf(KNoWidthMsg);
+00176                 }
+00177 
+00178         // Prints the different cases if the character is alphabetic.
+00179         if(charValue.IsAlpha())
+00180                 {
+00181                 // Gets the character after conversion to uppercase (or returns the character itself if no uppercase form exists).
+00182                 TUint getCaseValue = charValue.GetUpperCase();
+00183                 _LIT(KAferConv2UpMsg," The character after conversion to upper case is %C:\r\n");
+00184                 console->Printf(KAferConv2UpMsg, getCaseValue);
+00185         
+00186                 // Gets the character after conversion to lowercase (or the character itself if no lowercase form exists).
+00187                 getCaseValue = charValue.GetLowerCase();
+00188                 _LIT(KAferConv2LowerMsg," The character after conversion to lower case is %C:\r\n"); 
+00189                 console->Printf(KAferConv2LowerMsg, getCaseValue);
+00190 
+00191                 // Gets the character after conversion to title-case (or the character itself if no title-case form exists).
+00192                 getCaseValue = charValue.GetTitleCase();
+00193                 _LIT(KAferConv2TitleMsg," The character after conversion to title case is %C:\r\n");
+00194                 console->Printf(KAferConv2TitleMsg, getCaseValue);
+00195                 }
+00196         }
+00197         
+00198 
+00202 void TCharInfoFunctions()
+00203         {
+00204         _LIT(KEnterAKey,"\r\nTCharInfo holds all character information\r\nEnter a character to process with TCharInfo: ");
+00205         console->Printf(KEnterAKey);
+00206         
+00207         TChar enteredCharacter = console->Getch();
+00208         _LIT(KPrintChar,"%C\r\n");
+00209         console->Printf(KPrintChar, (TUint)enteredCharacter);
+00210         
+00211         // A structure to hold information about the character.
+00212         TChar::TCharInfo charInfo;
+00213         
+00214         enteredCharacter.GetInfo(charInfo);
+00215         
+00216         // Gets the combining class of the entered character.
+00217         // This determines the relationship between characters in a string
+00218         TInt numberOfCombiningClass = charInfo.iCombiningClass;
+00219         _LIT(KCharCombNotClassMsg," The character does not have a combining class\r\n");
+00220         _LIT(KCharCombClassMsg," The character has %d combining classes\r\n");
+00221         if(numberOfCombiningClass <= 0)
+00222                 console->Printf(KCharCombNotClassMsg);
+00223         else
+00224                 console->Printf(KCharCombClassMsg, numberOfCombiningClass);
+00225 
+00226         // Returns True if the character is mirrored.
+00227         // Mirrored characters can change direction according to the directionality of the surrounding characters
+00228         TBool booleanValue = charInfo.iMirrored;
+00229         _LIT(KCharMirroredMsg," The character is mirrored\r\n");
+00230         _LIT(KCharNotMirroredMsg," The character is not mirrored\r\n");
+00231         if(booleanValue)        
+00232                 console->Printf(KCharMirroredMsg);
+00233         else
+00234                 console->Printf(KCharNotMirroredMsg);
+00235         
+00236         // Gets the numeric value of the character (-1 if none, -2 if a fraction).
+00237         TInt getNumericValue = charInfo.iNumericValue;
+00238         _LIT(KCharNoNumericMsg," The character has no numeric value\r\n");
+00239         _LIT(KCharNumericFractionMsg, " The character is a fraction\r\n");
+00240         if(getNumericValue == -1)       
+00241                 console->Printf(KCharNoNumericMsg);
+00242         else if(getNumericValue == -2)  
+00243                 console->Printf(KCharNumericFractionMsg);
+00244         
+00245         // Print the different cases if the character is alphabetic.
+00246         if(enteredCharacter.IsAlpha())
+00247                 {
+00248                 // Gets and prints the title-case form of the character.
+00249                 TUint caseValue = charInfo.iTitleCase;
+00250                 _LIT(KAferConv2TitleMsg," The character after conversion to title case is %C\r\n");
+00251                 console->Printf(KAferConv2TitleMsg, caseValue);
+00252         
+00253                 // Gets and prints the upper case form of the character.
+00254                 caseValue = charInfo.iUpperCase;
+00255                 _LIT(KAferConv2UpMsg," The character after conversion to upper case is %C\r\n");
+00256                 console->Printf(KAferConv2UpMsg, caseValue);    
+00257         
+00258                 // Gets and prints the lower case form of the character.
+00259                 caseValue = charInfo.iLowerCase;
+00260                 _LIT(KAferConv2LowerMsg," The character after conversion to lower case is %C\r\n"); 
+00261                 console->Printf(KAferConv2LowerMsg, caseValue); 
+00262                 } 
+00263         }
+00264 
+00265 
+00269 void CTCharExample::UseTCharFunctions()
+00270         {
+00271         //Split the TChar functions into logical groups. 
+00272         TInt userChoice = 0;
+00273                 do
+00274                 {
+00275                 _LIT(KLoopMessage, "\r\nTChar function menu.\r\n 1 to use the IsXXX() functions,\r\n 2 to use the Getxxx() functions,\r\n 3 to use the TCharInfo class,\r\n or 0 to return to the main menu.\r\n");
+00276                 console->Printf(KLoopMessage);
+00277                 
+00278                 userChoice = console->Getch();
+00279                 
+00280                 switch(userChoice) 
+00281                         {
+00282                         case '1':
+00283                                 // Use the TChar::IsXXX() functions
+00284                                 TCharIsXXXFunctions();
+00285                                 break;  
+00286         
+00287                         case '2':
+00288                                 // Use the TChar::GetXXX(); functions
+00289                                 TCharGetXXXFunctions();
+00290                                 break;
+00291                 
+00292                         case '3':
+00293                                 // Use TCharInfo functions
+00294                                 TCharInfoFunctions();   
+00295                                 break;
+00296                                         
+00297                         case '0':
+00298                                 // Exit
+00299                                 break;
+00300                                 
+00301                         default:
+00302                                 {
+00303                                 _LIT(KEnterValidMsg, "\r\nEnter a valid character.\r\n");
+00304                                 console->Printf(KEnterValidMsg);
+00305                                 }
+00306                         
+00307                         }
+00308                         
+00309                 } while (userChoice != '0');
+00310         }
+00311 
+00315 void CTCharExample::UseTCharFFunctions()
+00316         {       
+00317         _LIT(KEnterALowerCaseChar,"\r\nTCharF ignores character differences like case and accent.\r\n Enter a character: ");
+00318         console->Printf(KEnterALowerCaseChar);
+00319 
+00320         // Gets a character from the console.
+00321         TChar enteredLowerChar = console->Getch();
+00322         _LIT(KPrintChar,"%C\r\n");
+00323         console->Printf(KPrintChar, (TUint)enteredLowerChar);
+00324         
+00325         _LIT(KEnterAnUpperCaseChar," Enter the same character but with a different case or accent.\r\n (use the 'Alt Gr' key to produce an accent): ");
+00326         console->Printf(KEnterAnUpperCaseChar);
+00327 
+00328         // Gets a character from the console.
+00329         TChar enteredUpperChar = console->Getch();
+00330         console->Printf(KPrintChar, (TUint)enteredUpperChar);
+00331         
+00332         // TCharF folds a specified character so that character differences like case and accents are ignored.
+00333         TCharF lowerCaseValue(enteredLowerChar);
+00334         TCharF upperCaseValue(enteredUpperChar);
+00335         
+00336         // Test both lower and upper case value using TCharF.
+00337         if (lowerCaseValue == upperCaseValue)
+00338                 {
+00339                 _LIT(KCharEquiMsg," The characters are equivalent\r\n");
+00340                 console->Printf(KCharEquiMsg);
+00341                 }
+00342         else
+00343                 {
+00344                 _LIT(KCharNotEquiMsg, " The characters are not equivalent\r\n");
+00345                 console->Printf(KCharNotEquiMsg);
+00346                 }               
+00347         }
+00348 
+00352 void CTCharExample::UseTCharLCFunctions()
+00353         {
+00354         
+00355         _LIT(KEnterACharForTCharLC,"\r\nTCharLC converts a character to lower case\r\n Enter an upper case character to process with TCharLC: ");
+00356         console->Printf(KEnterACharForTCharLC);
+00357 
+00358         // Gets a character from the console.
+00359         TChar charValue = console->Getch();
+00360         _LIT(KPrintChar,"%C\r\n");
+00361         console->Printf(KPrintChar, (TUint)charValue);
+00362         
+00363         // Convert and print the character.
+00364         TCharLC convertedCharToLowerCase(charValue);
+00365                 
+00366         _LIT(KConvertedTCharLC, "\r\n After conversion the character is: ");
+00367         console->Printf(KConvertedTCharLC);
+00368         console->Printf(KPrintChar,(TUint)convertedCharToLowerCase);
+00369         }
+00370         
+00374 void CTCharExample::UseTCharUCFunctions()
+00375         {       
+00376         _LIT(KEnterACharForTCharUC,"\r\nTCharUC converts a character to upper case\r\n Enter a lower case character to process with TCharLC: ");
+00377         console->Printf(KEnterACharForTCharUC);
+00378         _LIT(KPrintChar,"%C\r\n");
+00379         // Gets a character from the console.
+00380         TChar charValue = console->Getch();
+00381         console->Printf(KPrintChar, (TUint)charValue);
+00382         
+00383         // Convert and print the character.
+00384         TCharUC convertedCharUC(charValue);
+00385                 
+00386         _LIT(KConvertedTCharUC, "\r\n After conversion the character is: ");
+00387         console->Printf(KConvertedTCharUC);
+00388         console->Printf(KPrintChar,(TUint)convertedCharUC);
+00389         }       
+00390         
+00391 
+00392 void MainL()
+00393         {
+00394         CTCharExample* app = CTCharExample::NewL();
+00395         CleanupStack::PushL(app);
+00396 
+00397         TInt userChoice = 0;
+00398 
+00399         do
+00400                 {
+00401                 _LIT(KLoopMessage, "\r\nPress 1 to use the TChar functions,\r\n 2 to use the TCharF function,\r\n 3 to use the TCharLC function,\r\n 4 to use the TCharUC function,\r\n or 0 to exit the application.\r\n");
+00402                 console->Printf(KLoopMessage);
+00403                 
+00404                 userChoice = console->Getch();
+00405                 
+00406                 switch(userChoice) 
+00407                         {
+00408                         case '1':
+00409                                 // Use functions belonging to the TChar character class.
+00410                                 app->UseTCharFunctions();
+00411                                 break;  
+00412         
+00413                         case '2':
+00414                                 // Use functions belonging to the TCharF character class.
+00415                                 app->UseTCharFFunctions();
+00416                                 break;
+00417                 
+00418                         case '3':
+00419                                 // Use functions belonging to the TCharLC character class.
+00420                                 app->UseTCharLCFunctions();     
+00421                                 break;
+00422         
+00423                         case '4':
+00424                                 // Use functions belonging to the TCharUC character class.
+00425                                 app->UseTCharUCFunctions();
+00426                                 break;
+00427                         
+00428                         case '0':
+00429                                 // Exit
+00430                                 break;
+00431                         
+00432                         default:
+00433                                 _LIT(KEnterValidMsg, "\r\nEnter a valid character.\r\n");                       
+00434                                 console->Printf(KEnterValidMsg);
+00435                         }
+00436                         
+00437                 } while (userChoice != '0');
+00438                 
+00439                 CleanupStack::PopAndDestroy(app);
+00440         } 
+00441 
+00442 extern TInt E32Main()
+00443         {
+00444         __UHEAP_MARK;
+00445 
+00446         CTrapCleanup* cleanup = CTrapCleanup::New();
+00447         if(cleanup == NULL)
+00448                 {
+00449                 return KErrNoMemory;
+00450                 }
+00451         TRAPD(err, MainL());
+00452         if(err !=KErrNone)
+00453                 {
+00454                 _LIT(KFailed, "\nFailed to complete");
+00455                 User::Panic(KFailed, err);
+00456                 }       
+00457         delete cleanup;
+00458 
+00459         __UHEAP_MARKEND;
+00460         return KErrNone;
+00461         }
+00462   
+00463   
+00464   
+00465   
+00466  
+00467  
+00468  
+

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