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

examples/Basics/CClasses/CClasses.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 //
-00015 
-00016 #include "CommonFramework.h"
-00017 
-00018 // start of real example
-00019 
-00020 // #include specific files
-00021 
-00022 // class with single-phase construction, NewL and NewLC
-00023 
-00024 class COnePhaser : public CBase {
-00025 public: // data
-00026         TInt iInt1; // one integer
-00027         TInt iInt2; // another integer
-00028 public: // functions
-00029         // construct/destruct
-00030         static COnePhaser* NewL()
-00031                 { // construct and leave if error
-00032                 return new (ELeave) COnePhaser; // new COnePhaser, C++ constructor
-00033                 };
-00034         static COnePhaser* NewLC()
-00035                 { // construct, leave if error, else push to clean-up stack
-00036                 COnePhaser* self=COnePhaser::NewL(); // construct
-00037                 CleanupStack::PushL(self); // push to clean-up stack
-00038                 return self; // and return new object
-00039                 };
-00040         // other functions
-00041         void Print()
-00042                 {
-00043                 _LIT(KFormat1,"COnePhaser {TInt %d, TInt %d}");
-00044                 console->Printf(KFormat1, iInt1, iInt2);
-00045                 }
-00046 protected: // functions
-00047         // construct
-00048         COnePhaser()
-00049                 { // standard C++ constructor, because it cannot leave
-00050                 iInt1=3; // set first int to 3
-00051                 // iInt2=0; // unnecessary
-00052                 }
-00053         };
-00054 
-00055 // class with two-phase construction
-00056 
-00057 class CTwoPhaser : public CBase {
-00058 public: // data
-00059         TInt iInt1; // one integer
-00060         TInt iInt2; // another integer
-00061         RTimer iTimer; // a resource
-00062         COnePhaser* iOnePhaser; // another CBase object
-00063 public: // functions
-00064         // construct/destruct
-00065         static CTwoPhaser* NewLC(TInt aInt1)
-00066                 { // construct and leave on the clean-up stack
-00067                 CTwoPhaser* self=new (ELeave) CTwoPhaser; // new CTwoPhaser, initialized to binary zeroes
-00068                 CleanupStack::PushL(self); // push to clean-up stack
-00069                 self->ConstructL(aInt1); // construct
-00070                 return self; // return new object
-00071                 };
-00072         static CTwoPhaser* NewL(TInt aInt1)
-00073                 { // construct and don't leave on clean-up stack
-00074                 CTwoPhaser* self=CTwoPhaser::NewLC(aInt1); // construct and leave on clean-up stack
-00075                 CleanupStack::Pop(); // pop from clean-up stack
-00076                 return self; // return new object
-00077                 };
-00078         virtual ~CTwoPhaser()
-00079                 {
-00080                 delete iOnePhaser; // just destroy anything we point to
-00081                 iTimer.Close(); // close timer
-00082                 }
-00083         // other functions
-00084         void Print()
-00085                 {
-00086                 _LIT(KFormat2,"CTwoPhaser {TInt %d, TInt %d, RTimer, ");
-00087                 console->Printf(KFormat2, iInt1, iInt2);
-00088                 iOnePhaser->Print();
-00089                 _LIT(KtxtCloseCurly,"}");
-00090                 console->Printf(KtxtCloseCurly);
-00091                 }
-00092 protected: // functions
-00093         // construct support
-00094         void ConstructL(TInt aInt1)
-00095                 { // do the work involved in construction
-00096                 iInt1=aInt1; // assign iInt1 from argument
-00097                 User::LeaveIfError(iTimer.CreateLocal()); // initialize timer
-00098                 iOnePhaser=COnePhaser::NewL(); // make a new one-phaser
-00099                 }
-00100         };
-00101 
-00102 // abstract class derived from CBase
-00103 
-00104 class CAbstract : public CBase
-00105         {
-00106 public: // data
-00107         CTwoPhaser* iTwoPhaser; // a contained object
-00108 public: // functions
-00109         void SomeFunction(TInt aInt)
-00110                 { // request some function
-00111                 _LIT(KTxtbeginSomeFunction,"beginning to do SomeFunction()\n");
-00112                 console->Printf(KTxtbeginSomeFunction);
-00113                 DoSomeFunction(aInt); // invoke virtual function
-00114                 _LIT(KTxtfinishSomeFunction,"finished doing SomeFunction()\n");
-00115                 console->Printf(KTxtfinishSomeFunction);
-00116                 }
-00117         virtual ~CAbstract()
-00118                 {
-00119                 delete iTwoPhaser;
-00120                 }
-00121 protected:
-00122         virtual void DoSomeFunction(TInt aInt) const =0;
-00123                 // implement heart of some function, in derived class
-00124         void ConstructL(TInt aInt)
-00125                 { // second phase of constructor
-00126                 iTwoPhaser=CTwoPhaser::NewL(aInt);
-00127                         // construct embedded object
-00128                 }
-00129         };
-00130 
-00131 // class derived from above
-00132 
-00133 class CConcrete : public CAbstract
-00134         {
-00135 public: // data
-00136         COnePhaser* iOnePhaser; // some extra data
-00137 public: // functions
-00138         // construct/destruct
-00139         static CConcrete* NewLC(TInt aInt)
-00140                 { // construct and leave on the clean-up stack
-00141                 CConcrete* self=new (ELeave) CConcrete; // new object, C++ constructor
-00142                 CleanupStack::PushL(self); // push to clean-up stack
-00143                 self->ConstructL(aInt); // CBase constructor
-00144                 return self; // return new object
-00145                 };
-00146         static CConcrete* NewL(TInt aInt)
-00147                 { // construct and don't leave on clean-up stack
-00148                 CConcrete* self=CConcrete::NewLC(aInt); // construct and leave on clean-up stack
-00149                 CleanupStack::Pop(); // pop from clean-up stack
-00150                 return self; // return new object
-00151                 };
-00152         virtual ~CConcrete()
-00153                 {
-00154                 delete iOnePhaser; // destroy member
-00155                 }
-00156         // protocol
-00157         virtual void DoSomeFunction(TInt aInt) const
-00158                 { // implementation of base class's pure-virtual function
-00159                 _LIT(KFormat3,"CConcrete::DoSomething(%d)\n");
-00160                 console->Printf(KFormat3, aInt);
-00161                 }
-00162 protected:
-00163         // construct/destruct
-00164         void ConstructL(TInt aInt)
-00165                 { // second phase of construction
-00166                 CAbstract::ConstructL(aInt); // base class constructor
-00167                 iOnePhaser=COnePhaser::NewL(); // contained member constructor
-00168                 }
-00169         };
-00170 
-00171 // do the example
-00172 LOCAL_C void doExampleL()
-00173     {
-00174         // two-phase object
-00175         CTwoPhaser* twoPhaser=CTwoPhaser::NewLC(5);
-00176                         // new two-phase object
-00177         twoPhaser->Print(); // print it
-00178         _LIT(KTxtNewLine,"\n");
-00179         console->Printf(KTxtNewLine);  // with trailing new-line
-00180         CleanupStack::PopAndDestroy(); // two-phase object
-00181         // concrete instance of an abstract class
-00182         CAbstract* abstract=CConcrete::NewLC(9);
-00183                 // new concrete object, but refer to it with abstract pointer
-00184         abstract->SomeFunction(11); // do something with it
-00185         CleanupStack::PopAndDestroy(); // abstract object
-00186         }
-

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