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

examples/Base/MemMan/Cleanup/TrapD/TrapD.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 // Example shows creation and use of of an object protected by a TRAPD
-00015 // NOTE: the structure of this example is different to standard E32 examples
-00016 //
-00017 
-00018 
-00019 #include <e32cons.h>
-00020 
-00021   // All messages written to this
-00022 LOCAL_D CConsoleBase* console;
-00023   
-00024   // Flag which determines whether the doSomething() member function
-00025   // of the CExample class should leave when called.
-00026 LOCAL_D TBool leaveFlag = ETrue;
-00027 
-00028   // Parameter for __UHEAP_SETFAIL
-00029   // Allocation guaranteed to fail at this number of allocation attempts;
-00030   // i.e. if set to n, allocation fails on the nth attempt. 
-00031   // NB only used in debug mode
-00032 #ifdef _DEBUG
-00033 LOCAL_D TInt allocFailNumber = 1;
-00034 #endif
-00035   
-00036   // Function prototypes
-00037 LOCAL_C void doExampleL();      
-00038 LOCAL_C void callExampleL();
-00039 
-00040 
-00041 
-00043 //
-00044 // -----> CExample (definition)
-00045 //
-00046 // The class is used by the example code
-00047 //
-00049 class CExample : public CBase
-00050         {
-00051 public :
-00052         void DoSomethingL();
-00053 public :
-00054         TInt iInt;
-00055         };
-00056 
-00057 
-00059 //
-00060 // -----> CExample (implementation)
-00061 //
-00063 void CExample::DoSomethingL() 
-00064         {
-00065           // Leave if the global flag is set
-00066         if (leaveFlag)
-00067                 {
-00068                 _LIT(KMsgLeaving,"DoSomethingL leaving.\n");
-00069                 console->Printf(KMsgLeaving);
-00070                 User::Leave(KErrGeneral);               
-00071                 }
-00072         _LIT(KFormat1,"Value of iInt is %d.\n");
-00073         console->Printf(KFormat1,iInt);
-00074         }
-00075 
-00077 //
-00078 // Main function called by E32
-00079 //
-00081 GLDEF_C TInt E32Main()
-00082     {
-00083           // Get cleanup stack
-00084         CTrapCleanup* cleanup=CTrapCleanup::New();
-00085 
-00086           // Some more initialization, then do the example
-00087         TRAPD(error,callExampleL());
-00088           
-00089           // callExampleL() should never leave.
-00090         _LIT(KMsgPanicEpoc32ex,"EPOC32EX");
-00091         __ASSERT_ALWAYS(!error,User::Panic(KMsgPanicEpoc32ex,error));
-00092 
-00093           // destroy the cleanup stack
-00094         delete cleanup;
-00095         
-00096           // return
-00097         return 0;
-00098     }
-00099 
-00100 
-00102 //
-00103 //
-00104 //
-00106 LOCAL_C void callExampleL() 
-00107     {
-00108           // Initialize and call the example code under cleanup stack.
-00109         _LIT(KMsgExampleCode,"Symbian platform Example Code");
-00110         console = Console::NewL(KMsgExampleCode,TSize(KConsFullScreen,KConsFullScreen));
-00111           // Put console onto the cleanup stack.
-00112         CleanupStack::PushL(console);
-00113 
-00114           // Perform the example function under the protection of a 
-00115           // TRAP harness.
-00116         TRAPD(error,doExampleL());
-00117         _LIT(KMsgOK,"ok");
-00118         _LIT(KFormat2,"failed: leave code = %d");
-00119         if (error)
-00120                 console->Printf(KFormat2,error);
-00121         else
-00122                 console->Printf(KMsgOK);
-00123           
-00124           // Continue
-00125         _LIT(KMsgPressAnyKey," [press any key]");
-00126         console->Printf(KMsgPressAnyKey);
-00127         console->Getch();
-00128 
-00129           // Remove the console object from the cleanupstack
-00130           // and destroy it. 
-00131         CleanupStack::PopAndDestroy();
-00132     }
-00133 
-00134 
-00136 //
-00137 // Do the example
-00138 //
-00139 // Create and use an instance of CExample, protected by TRAPD
-00140 //
-00142 void doExampleL()
-00143         {
-00144           // Memory alloc fails on the 'allocFailNumber' attempt. 
-00145         __UHEAP_SETFAIL(RHeap::EDeterministic,allocFailNumber);
-00146           // Allocate - leave if allocation fails.
-00147         CExample* myExample = new (ELeave) CExample;
-00148           // Do something that cannot leave (no protection needed)
-00149         myExample->iInt = 5;
-00150           // Do something that can leave and trap the failure
-00151         TRAPD(error,myExample->DoSomethingL());
-00152           // Delete the CExample object
-00153         delete myExample;
-00154           // Now check whether DoSomethingL() left
-00155         User::LeaveIfError(error);
-00156         }
-00157 
-00158 
-00159 
-00160 
-00161 
-00162 
-00163 
-00164 
-

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