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

examples/Base/MemMan/Cleanup/Utilities/Utilities.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 //
+00019 // Definition of the CTestOne class
+00020 //
+00021 class CTestOne : public CBase
+00022         {       
+00023 public:
+00024         ~CTestOne();
+00025         void     SetTextL(const TDesC& aData);
+00026 private :
+00027         HBufC*   iText;
+00028         };
+00029 
+00030 
+00031 //
+00032 // Implementation of the CTestOne class
+00033 //
+00034 _LIT(KTxtInsideDestructor,"Executing the CTestOne destructor\n");
+00035 CTestOne::~CTestOne()
+00036         {
+00037         delete iText;
+00038         console->Printf(KTxtInsideDestructor);
+00039         }
+00040 
+00041 void CTestOne::SetTextL(const TDesC& aData)
+00042         {
+00043         if (iText)
+00044                 {
+00045                 delete iText;
+00046                 iText = NULL;
+00047                 }
+00048         iText = aData.AllocL(); 
+00049         }
+00050 
+00051 
+00052 
+00053 //
+00054 // Definition of the RTestTwo class
+00055 //
+00056 class RTestTwo
+00057         {       
+00058 public:
+00059         RTestTwo(TInt aValue);
+00060         void     Close();
+00061 private :
+00062         TInt     iX;
+00063         };
+00064 
+00065 //
+00066 // Implementation of the RTestTwo class
+00067 //
+00068 RTestTwo::RTestTwo(TInt aValue)
+00069         : iX(aValue)
+00070         {
+00071         }
+00072 
+00073 
+00074 _LIT(KTxtCloseRTestTwo,"RTestTwo closing\n");
+00075 
+00076 void RTestTwo::Close()
+00077         {
+00078         console->Printf(KTxtCloseRTestTwo);
+00079         }
+00080 
+00081 
+00082 
+00083 //
+00084 // Definition of the RTestThree class
+00085 //
+00086 class RTestThree
+00087         {       
+00088 public:
+00089         RTestThree(TInt aValue);
+00090         void     Release();
+00091 private :
+00092         TInt     iY;
+00093         };
+00094 
+00095 //
+00096 // Implementation of the RTestThree class
+00097 //
+00098 RTestThree::RTestThree(TInt aValue)
+00099         : iY(aValue)
+00100         {
+00101         }
+00102 
+00103 
+00104 _LIT(KTxtReleaseRTestThree,"RTestThree releasing\n");
+00105 
+00106 void RTestThree::Release()
+00107         {
+00108         console->Printf(KTxtReleaseRTestThree);
+00109         }
+00110 
+00111 //
+00112 // main body of the example
+00113 //
+00114 _LIT(KTxtHelloWorld,"Hello World!");
+00115 LOCAL_C void doExampleL()
+00116     {
+00117                 // 1. Construct a CTestOne object on the heap
+00118         CTestOne* one = new (ELeave) CTestOne;
+00119         
+00120                 // Use the CleanupDeletePushL() function to put a TCleanUpItem
+00121                 // on the cleanup stack
+00122         CleanupDeletePushL(one);
+00123 
+00124                 // Exercise the CTestOne object (just to show it doing something)
+00125         one->SetTextL(KTxtHelloWorld);
+00126 
+00127                 // Pop and destroy the cleanup item off the cleanup stack.
+00128                 // The cleanup operation deletes the CTestOne object
+00129         CleanupStack::PopAndDestroy();
+00130         
+00131                 // 2. Construct a RTestTwo object on the program stack.
+00132                 //
+00133                 // The value passed is of no significance; it is just
+00134                 // to show that the class is not trivial.
+00135         RTestTwo  two(2);
+00136                 
+00137                 // Use the CleanupClosePushL() function to put a TCleanUpItem
+00138                 // on the cleanup stack
+00139         CleanupClosePushL(two);
+00140 
+00141                 // Pop and destroy the cleanup item off the cleanup stack.
+00142                 // The cleanup operation calls the Close() member function of
+00143                 // the RTestTwo object
+00144         CleanupStack::PopAndDestroy();
+00145                                 
+00146 
+00147                 // 3. Construct a RTestThree object on the program stack.
+00148                 //
+00149                 // The value passed is of no significance; it is just
+00150                 // to show that the class is not trivial.
+00151         RTestThree  three(3);
+00152                 
+00153                 // Use the CleanupClosePushL() function to put a TCleanUpItem
+00154                 // on the cleanup stack
+00155         CleanupReleasePushL(three);
+00156 
+00157                 // Pop and destroy the cleanup item off the cleanup stack.
+00158                 // The cleanup operation calls the Release() member function of
+00159                 // the RTestThree object
+00160         CleanupStack::PopAndDestroy();
+00161 
+00162                 // 4. Construct an array of objects on the heap
+00163         TInt heapSize1 = User::Heap().Count(); // take a count of the heap size now
+00164         
+00165         const TInt KNumObjects = 4;
+00166         const TInt KStringLength = 10;
+00167         TBuf<KStringLength>* four = new (ELeave) TBuf<KStringLength>[KNumObjects];
+00168                 // Use the CleanupArrayDeletePushL() function to put a TCleanUpItem
+00169                 // on the cleanup stack
+00170         CleanupArrayDeletePushL(four);
+00171 
+00172                 // Do something that might leave - a simple memory allocation
+00173         TInt* mem = (TInt*)User::Alloc(100);
+00174         delete mem;
+00175 
+00176                 // Pop and destroy the cleanup item off the cleanup stack.
+00177                 // The cleanup operation deletes the CTestOne object
+00178         CleanupStack::PopAndDestroy();
+00179         if ( User::Heap().Count() == heapSize1 )
+00180                 {
+00181                 _LIT(KFourComplete,"Array deleted\n");
+00182                 console->Printf(KFourComplete);
+00183                 }
+00184         }
+

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