00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "CommonFramework.h"
00019
00020
00021
00022
00023 class TTest
00024 {
00025 public:
00026 TTest();
00027 TTest(TInt aValue);
00028 void SetValue(TInt aValue);
00029 TInt GetValue() const;
00030 private :
00031 TInt iX;
00032 TBuf<8> iPadding;
00033 };
00034
00035 TTest::TTest()
00036 : iX(1)
00037 {}
00038
00039 TTest::TTest(TInt aValue)
00040 : iX(aValue)
00041 {}
00042
00043 TInt TTest::GetValue() const
00044 {
00045 return iX;
00046 }
00047
00048 void TTest::SetValue(TInt aValue)
00049 {
00050 iX = aValue;
00051 }
00052
00053
00054
00055
00056 class CTest : public CBase
00057 {
00058 public:
00059 static CTest* NewL(const TDesC& aText);
00060 ~CTest();
00061 void ConstructL(const TDesC& aText);
00062 private :
00063 HBufC* iSomeText;
00064 };
00065
00066 CTest* CTest::NewL(const TDesC& aText)
00067 {
00068 CTest* self=new (ELeave) CTest;
00069 CleanupStack::PushL(self);
00070 self->ConstructL(aText);
00071 CleanupStack::Pop();
00072 return self;
00073 }
00074
00075 void CTest::ConstructL(const TDesC& aText)
00076 {
00077 iSomeText = aText.AllocL();
00078 }
00079
00080 CTest::~CTest()
00081 {
00082 delete iSomeText;
00083 }
00084
00085
00086
00087
00088 const TTest data[] = {TTest(1),TTest(2),TTest(3),TTest(4)};
00089
00090
00091
00092
00093 static void doExampleL()
00094 {
00095
00096
00097
00098
00099
00100
00101 TFixedArray<TTest,4> array;
00102
00103
00104
00105
00106
00107
00108
00109 array.Copy(&data[0],4);
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122 _LIT(KTxtFormat1,"Array size is %d\n");
00123 console->Printf(KTxtFormat1,array.Count());
00124
00125
00126
00127
00128
00129 _LIT(KTxtFormat2,"Length of an array element is %d\n\n");
00130 console->Printf(KTxtFormat2,array.Length());
00131
00132
00133
00134
00135 _LIT(KTxtFormat3,"Array ends at ---> 0x%x\n starts at ---> 0x%x\n");
00136 _LIT(KTxtFormat4,"Difference is decimal %d bytes (hopefully 4 times the size of TTest)\n\n");
00137 console->Printf(KTxtFormat3,array.End(),array.Begin());
00138 console->Printf(KTxtFormat4,((TUint8*)array.End() - (TUint8*)array.Begin()));
00139
00140
00141
00142
00143
00144 array.At(1).SetValue(100);
00145
00146
00147
00148
00149
00150 array[1].SetValue(99);
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165 _LIT(KTxtFormat5,"The new 3rd element has value %d\n\n");
00166 TTest x(256);
00167 array.At(2) = x;
00168 console->Printf(KTxtFormat5,array.At(2).GetValue());
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178 TArray<TTest> generic = array.Array();
00179
00180 _LIT(KTxtFormat6,"Array size as reported by TArray's Count() is %d\n\n");
00181 console->Printf(KTxtFormat6,generic.Count());
00182
00183
00184
00185 _LIT(KTxtFormat7,"Value contained in the 2nd TTest element of\nthe array using TArray's operator[] is %d\n\n");
00186 console->Printf(KTxtFormat7,generic[1].GetValue());
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199 TFixedArray<CTest*,4> ptrarray;
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209 _LIT(KTxtDefault,"Default text");
00210 _LIT(KTxtState1,"The 4 elements are: ");
00211 _LIT(KTxtState2,"After Reset() they are: ");
00212 _LIT(KTxtNewLine,"\n");
00213 _LIT(KTxtFormat8,"0x%08x ");
00214
00215 CTest* ptr;
00216 TInt ix;
00217 for (ix = 0; ix<4; ix++)
00218 {
00219 ptr = CTest::NewL(KTxtDefault);
00220 ptrarray.At(ix) = ptr;
00221 }
00222
00223 console->Printf(KTxtState1);
00224 for (ix = 0; ix<4; ix++)
00225 {
00226 console->Printf(KTxtFormat8,ptrarray[ix]);
00227 }
00228 console->Printf(KTxtNewLine);
00229
00230
00231 ptrarray.DeleteAll();
00232
00233
00234 ptrarray.Reset();
00235
00236 console->Printf(KTxtState2);
00237 for (ix = 0; ix<4; ix++)
00238 {
00239 console->Printf(KTxtFormat8,ptrarray[ix]);
00240 }
00241 console->Printf(KTxtNewLine);
00242
00243 }