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

examples/Base/ArraysAndLists/linkedlist/sgllist/src/longnumber.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 // Contains definition of functions defined in the CLongNumber class.
-00015 //
-00016 
-00017 
-00018 
-00023 #include "longnumber.h"
-00024 
-00030 CLongNumber* CLongNumber::NewL(CConsoleBase* aConsole)
-00031         {
-00032         CLongNumber* self = new (ELeave) CLongNumber(aConsole);
-00033         self->AddToScheduler();
-00034         return self;
-00035         }
-00036 
-00041 CLongNumber::CLongNumber(CConsoleBase* aConsole):
-00042                                                                                                 // Constructor of the base class.
-00043                                                                                                 CActive(CActive::EPriorityUserInput),
-00044                                                                                                 // Create the linked list.
-00045                                                                                                 iNumber(_FOFF(TDigit,iSLink)),
-00046                                                                                                 iConsole(aConsole),
-00047                                                                                                 // Initialize the iterator.
-00048                                                                                                 iIterator(iNumber)
-00049         {
-00050         }
-00051 
-00052 
-00056 void CLongNumber::AddToScheduler()
-00057         {
-00058         CActiveScheduler::Add(this);
-00059         }
-00060 
-00064 void CLongNumber::RunL()
-00065         {
-00066         // Get the key code.
-00067         TUint8 option = iConsole->KeyCode();
-00068         // Print the selected option.
-00069         _LIT(KTextFormat,"%c\n");
-00070         iConsole->Printf(KTextFormat,option);
-00071 
-00072         TInt number = option - (TUint)'0';
-00073         // The user has entered a number.
-00074         if(number <10 && number > -1)
-00075                 {
-00076                 // Append to the list based on iOption.
-00077                 switch(iOption)
-00078                         {
-00079                         // Call the TSglQue::AddFirst() function.
-00080                         case EAddFirst:
-00081                                 {
-00082                                 // Create an object of the TDigit class.
-00083                                 TDigit* digit = new (ELeave) TDigit;
-00084                                 // Set TDigit::iDigit to the number entered by the user.
-00085                                 digit->Set(number);
-00086                                 // Add TDigit to the start of the list.
-00087                                 iNumber.AddFirst(*digit);
-00088                                 iOption = ETOptionNone;
-00089                                 }
-00090                                 // Print the number.
-00091                                 PrintNumber();
-00092                                 break;
-00093                         // Call the TSglQue::AddLast() function.
-00094                         case EAddLast:
-00095                                 {
-00096                                 // Create an object of the TDigit class.
-00097                                 TDigit* digit = new (ELeave) TDigit;
-00098                                 // Set TDigit::iDigit to the number entered by the user.
-00099                                 digit->Set(number);
-00100                                 // Add TDigit to the end of the list.
-00101                                 iNumber.AddLast(*digit);
-00102                                 iOption = ETOptionNone;
-00103                                 }
-00104                                 // Print the number.
-00105                                 PrintNumber();
-00106                                 break;
-00107                         case ETOptionNone:
-00108                                 _LIT(KInvalidOption,"Invalid Option!\n");
-00109                                 iConsole->Printf(KInvalidOption);
-00110                                 break;
-00111                         default:
-00112                                 iOption = ETOptionNone;
-00113                                 break;
-00114                         }
-00115                 // Generate an asynchronous read request.
-00116                 ReadNumber();
-00117                 }
-00118         // The user has not entered a number.
-00119         // Hence, process this request as an option,
-00120         // which represented by the TOption enumeration.
-00121         else
-00122                 {
-00123                 switch(option)
-00124                         {
-00125                         case 'f':
-00126                                 {
-00127                                 // Add first.
-00128                                 iOption = EAddFirst;
-00129                                 _LIT(KTextEnterDigit,"\nEnter a digit\n");
-00130                                 iConsole->Printf(KTextEnterDigit);
-00131                                 // Read a digit.
-00132                                 ReadFunc();
-00133                                 }
-00134                                 break;
-00135                         case 'l':
-00136                                 {
-00137                                 // Add last.
-00138                                 iOption = EAddLast;
-00139                                 _LIT(KTextEnterDigit,"\nEnter a digit\n");
-00140                                 iConsole->Printf(KTextEnterDigit);
-00141                                 // Read a digit.
-00142                                 ReadFunc();
-00143                                 }
-00144                                 break;
-00145                         case 'r':
-00146                                 {
-00147                                 if(iNumber.IsEmpty())
-00148                                         {
-00149                                         _LIT(KTextEmpty,"Empty Queue !\n");
-00150                                         iConsole->Printf(KTextEmpty);
-00151                                         ReadNumber();
-00152                                         break;
-00153                                         }
-00154                                 // Remove the last element in the list.
-00155                                 TDigit* ptr = iNumber.Last();
-00156                                 iNumber.Remove(*ptr);
-00157                                 delete ptr;
-00158                                 // Print the number.
-00159                                 PrintNumber();
-00160                                 // Read a digit.
-00161                                 ReadNumber();
-00162                                 }
-00163                                 break;
-00164                         default:
-00165                                 CActiveScheduler::Stop();
-00166                         }
-00167                 }
-00168         }
-00169 
-00173 void CLongNumber::ReadFunc()
-00174         {
-00175         // Wait for a key press event.
-00176         iConsole->Read(iStatus);
-00177         SetActive();
-00178         }
-00179 
-00183 void CLongNumber::ReadNumber()
-00184         {
-00185         _LIT(KTextMenu,"\nMenu\n***\nAdd [f]irst digit to number\nAdd [l]ast digit to number\n[r]emove last digit from number\nAny other NON-NUMERIC key to stop\n***\n");
-00186         iConsole->Printf(KTextMenu);
-00187         ReadFunc();
-00188         }
-00189 
-00193 void CLongNumber::PrintNumber()
-00194         {
-00195         if(iNumber.IsEmpty())
-00196                 {
-00197                 _LIT(KTextEmpty,"Empty Queue !\n");
-00198                 iConsole->Printf(KTextEmpty);                                                   
-00199                 }
-00200         _LIT(KTextNumber,"The number is: ");
-00201         iConsole->Printf(KTextNumber);
-00202         // Set the iterator to the first element of the list.
-00203         iIterator.SetToFirst();
-00204 
-00205         // Iterate the list.
-00206         while(iIterator != NULL)
-00207                 {
-00208                 // Get the digit.
-00209                 TDigit digit = *iIterator;
-00210                 // Print the digit.
-00211                 _LIT(KTextInt,"%d");
-00212                 iConsole->Printf(KTextInt,digit.Get());
-00213                 // Go to the next element of the list.
-00214                 iIterator++;
-00215                 }
-00216         }
-00217 
-00221 void CLongNumber::InitializeIter()
-00222         {
-00223         iIterator.SetToFirst();
-00224         }
-00225 
-00232 TBool CLongNumber::GetNumber(TInt& aValue)
-00233         {
-00234         if(iIterator == NULL)
-00235                 {
-00236                 // The iterator has reached the end of the list.
-00237                 return EFalse;
-00238                 }
-00239         TDigit digit = *iIterator;
-00240         aValue = digit.Get();
-00241         return ETrue;
-00242         }
-00243 
-00248 TBool CLongNumber::Slide()
-00249         {
-00250         // Set the iterator to point to the next element.
-00251         iIterator++;
-00252         if(iIterator == NULL)
-00253                 {
-00254                 // The iterator has reached the end of the list.
-00255                 return EFalse;
-00256                 }
-00257         return ETrue;
-00258         }
-00259 
-00263 void CLongNumber::DoCancel()
-00264         {
-00265         if(IsActive())
-00266                 {
-00267                 // Cancel any outstanding read requests.
-00268                 iConsole->ReadCancel();
-00269                 }
-00270         }
-00271 
-00277 CLongNumber::~CLongNumber()
-00278         {
-00279         // Delete the elements from the list
-00280         if(iIterator)
-00281                 {
-00282                 iIterator.SetToFirst();
-00283                 // Iterate the list and delete all TDigit objects
-00284                 TDigit *ptr = iIterator++;
-00285                 while (ptr != NULL)
-00286                         {
-00287                         delete ptr;
-00288                         ptr = iIterator++;
-00289                         }
-00290                 }
-00291         }
-

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