00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <e32cons.h>
00020
00021
00022 LOCAL_D CConsoleBase* console;
00023
00024
00025
00026 LOCAL_D TBool leaveFlag = ETrue;
00027
00028
00029
00030
00031
00032 #ifdef _DEBUG
00033 LOCAL_D TInt allocFailNumber = 1;
00034 #endif
00035
00036
00037 LOCAL_C void doExampleL();
00038 LOCAL_C void callExampleL();
00039
00040
00041
00043
00044
00045
00046
00047
00049 class CExample : public CBase
00050 {
00051 public :
00052 static CExample* NewLC(TInt aVal);
00053 void DoSomethingL();
00054 public :
00055 TInt iInt;
00056 };
00057
00058
00060
00061
00062
00064 CExample* CExample::NewLC(TInt aVal)
00065 {
00066 CExample* self = new (ELeave) CExample;
00067 CleanupStack::PushL(self);
00068 self->iInt = aVal;
00069 return self;
00070 }
00071
00072
00073 void CExample::DoSomethingL()
00074 {
00075
00076 if (leaveFlag)
00077 {
00078 _LIT(KMsgLeaving,"DoSomethingL leaving.\n");
00079 console->Printf(KMsgLeaving);
00080 User::Leave(KErrGeneral);
00081 }
00082 _LIT(KFormat1,"Value of iInt is %d.\n");
00083 console->Printf(KFormat1,iInt);
00084 }
00085
00087
00088
00089
00091 GLDEF_C TInt E32Main()
00092 {
00093
00094 CTrapCleanup* cleanup=CTrapCleanup::New();
00095
00096
00097 TRAPD(error,callExampleL());
00098
00099
00100 _LIT(KMsgPanicEpoc32ex,"EPOC32EX");
00101 __ASSERT_ALWAYS(!error,User::Panic(KMsgPanicEpoc32ex,error));
00102
00103
00104 delete cleanup;
00105
00106
00107 return 0;
00108 }
00109
00110
00112
00113
00114
00116 LOCAL_C void callExampleL()
00117 {
00118
00119 _LIT(KMsgExampleCode,"Symbian platform Example Code");
00120 console = Console::NewL(KMsgExampleCode,TSize(KConsFullScreen,KConsFullScreen));
00121
00122 CleanupStack::PushL(console);
00123
00124
00125
00126 TRAPD(error,doExampleL());
00127 _LIT(KMsgOK,"ok");
00128 _LIT(KFormat2,"failed: leave code = %d");
00129 if (error)
00130 console->Printf(KFormat2,error);
00131 else
00132 console->Printf(KMsgOK);
00133
00134
00135 _LIT(KMsgPressAnyKey," [press any key]");
00136 console->Printf(KMsgPressAnyKey);
00137 console->Getch();
00138
00139
00140
00141 CleanupStack::PopAndDestroy();
00142 }
00143
00144
00146
00147
00148
00149
00150
00151
00152
00154 void doExampleL()
00155 {
00156
00157 __UHEAP_SETFAIL(RHeap::EDeterministic,allocFailNumber);
00158
00159
00160 CExample* myExample = CExample::NewLC(5);
00161
00162 myExample->DoSomethingL();
00163
00164 CleanupStack::PopAndDestroy();
00165 }
00166
00167
00168
00169
00170
00171
00172
00173