diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_infunct_8cpp-source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_infunct_8cpp-source.html Tue Mar 30 11:56:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,281 +0,0 @@ - -
-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 // Examples to demonstrate the use of descriptors in function interfaces. -00015 // -00016 -00017 #include "CommonFramework.h" -00018 -00019 // -00020 // Literal text -00021 // -00022 -00023 _LIT(KDataTPtrC,"A TPtrC descriptor"); -00024 _LIT(KDataTPtr,"A TPtr descriptor"); -00025 _LIT(KDataTBufC,"A TBufC descriptor"); -00026 _LIT(KDataTBuf,"A TBuf descriptor"); -00027 _LIT(KDataHBufC,"An HBufC descriptor"); -00028 -00029 // -00030 // Common format strings -00031 // -00032 -00033 _LIT(KCommonFormat2,"0x%02x "); -00034 -00035 // A set of functions called by the example code -00036 LOCAL_C void StringRead(const TDesC& aString); -00037 LOCAL_C void StringWrite(TDes& aString); -00038 LOCAL_C void BufferRead(const TDesC8& aBuffer); -00039 LOCAL_C void BufferWrite(TDes8& aBuffer); -00040 -00041 // Do the example -00042 LOCAL_C void doExampleL() -00043 { -00044 // We create four functions: -00045 // StringRead() -00046 // StringWrite() -00047 // BufferRead() -00048 // BufferWrite() -00049 // to illustrate the use of descriptors -00050 // in function interfaces -00051 -00052 TText area[48]; -00053 TPtrC ptrc; -00054 TPtr ptr(&area[0],48); -00055 -00056 TBufC<48> bufc; -00057 TBuf<48> buf; -00058 HBufC* hbufcptr; -00059 -00060 hbufcptr = HBufC::NewL(48); -00061 -00062 // Set up some data for our -00063 // descriptors -00064 ptrc.Set(KDataTPtrC); // "A TPtrC descriptor" -00065 ptr = KDataTPtr; // "A TPtr descriptor" -00066 bufc = KDataTBufC; // "A TBufC descriptor" -00067 buf = KDataTBuf; // "A TBuf descriptor" -00068 *hbufcptr = KDataHBufC; // "An HBufC descriptor" -00069 -00070 // We can pass a reference to all -00071 // descriptor types to StringRead() but the -00072 // function cannot change the -00073 // descriptor content -00074 StringRead(ptrc); // <-- a TPtrC -00075 StringRead(ptr); // <-- a TPtr -00076 StringRead(bufc); // <-- a TBufC -00077 StringRead(buf); // <-- a TBuf -00078 StringRead(*hbufcptr); // <-- an HBufC -00079 -00080 // We can only pass a reference to those -00081 // descriptors which are derived -00082 // from TDes, to StringWrite(); -00083 // these are the modifiable -00084 // descriptors: TPtr and TBuf. -00085 // -00086 // The compiler will not permit a reference -00087 // to any other descriptor type to -00088 // be passed. -00089 //StringWrite(ptrc); <-- Illegal -00090 StringWrite(ptr); // <-- a TPtr -00091 //StringWrite(bufc); <-- Illegal -00092 StringWrite(buf); // <-- a TBuf -00093 //StringWrite(*hbufcptr); <-- Illegal -00094 -00095 delete hbufcptr; -00096 -00097 _LIT(KTxtPressToContinue," (press any key to continue)\n"); -00098 console->Printf(KTxtPressToContinue); -00099 console->Getch(); -00100 -00101 TUint8 data1[3] = {0x00,0x01,0x02}; -00102 TUint8 data2[3] = {0x03,0x04,0x05}; -00103 TUint8 data3[3] = {0x06,0x07,0x08}; -00104 TUint8 data4[3] = {0x09,0x0A,0x0B}; -00105 TUint8 data5[3] = {0x0C,0x0D,0x0E}; -00106 -00107 // Use the 8 bit variants explicitly for -00108 // general binary data. -00109 -00110 // ptrc8's data area is data1[] -00111 // ptr8's data areais data2[] -00112 TPtrC8 ptrc8(&data1[0],3); -00113 TPtr8 ptr8(&data2[0],3,3); -00114 -00115 // bufc8 contains a copy of data3[] data -00116 // buf8 contains a copy of data4[] data -00117 // hbufcptr8 contains a copy of data5[] data -00118 TBufC8<3> bufc8= TPtrC8(&data3[0],3); -00119 TBuf8<3> buf8= TPtrC8(&data4[0],3); -00120 HBufC8* hbufcptr8; -00121 -00122 hbufcptr8 = HBufC8::NewL(3); -00123 *hbufcptr8 = TPtrC8(&data5[0],3); -00124 -00125 // We can pass a reference to all -00126 // descriptor types to BufferRead() -00127 // but the function cannot change the -00128 // descriptor content -00129 BufferRead(ptrc8); // <-- a TPtrC -00130 BufferRead(ptr8); // <-- a TPtr -00131 BufferRead(bufc8); // <-- a TBufC -00132 BufferRead(buf8); // <-- a TBuf -00133 BufferRead(*hbufcptr8); // <-- an HBufC -00134 -00135 // We can only pass a reference to those -00136 // descriptors which are derived -00137 // from TDes, to BufferWrite; these are -00138 // the modifiable descriptors: TPtr and TBuf. -00139 // -00140 // The compiler will not permit a reference -00141 // to any other descriptor type to -00142 // be passed. -00143 //BufferWrite(ptrc8); <-- Illegal -00144 BufferWrite(ptr8); // <-- a TPtr -00145 //BufferWrite(bufc8); <-- Illegal -00146 BufferWrite(buf8); // <-- a TBuf -00147 //BufferWrite(*hbufcptr8); <-- Illegal -00148 -00149 delete hbufcptr8; -00150 } -00151 -00152 -00153 -00154 // ************************************************ -00155 // Functions used by doInterface() -00156 // ************************************************ -00157 LOCAL_C void StringRead(const TDesC& aString) -00158 { -00159 // A function which handles the content -00160 // of ANY descriptor passed to it but CANNOT -00161 // change that descriptor. -00162 // -00163 // Function displays descriptor content, -00164 // length and size. -00165 // -00166 // All descriptors can be passed to this -00167 // function because all descriptors are -00168 // ultimately derived from TDesC. -00169 // -00170 // Note, however, that all data members and -00171 // function members in the TDes abstract class -00172 // cannot be accessed (recall that TDes is -00173 // derived from TDesC). -00174 // These include the data member containing -00175 // the maximum length and all modifying -00176 // member functions. -00177 -00178 _LIT(KFormat5,"\"%S\"; %d; %d\n"); -00179 console->Printf(KFormat5,&aString,aString.Length(),aString.Size()); -00180 } -00181 -00182 -00183 LOCAL_C void StringWrite(TDes& aString) -00184 { -00185 // A function which handles the content -00186 // of a descriptor derived from TDes; -00187 // i.e. the modifiable descriptors TPtr and -00188 // TBuf. -00189 // -00190 // Function changes the content of the -00191 // referenced descriptors and then displays -00192 // their content, length, size and maximum -00193 // length. -00194 // -00195 // Note that the references to TPtrC, TBufC -00196 // and HBufC cannot be passed. -00197 _LIT(KTxtModStringWrite," modified by StringWrite"); -00198 aString.Append(KTxtModStringWrite); -00199 _LIT(KFormat3,"\"%S\"; %d; %d; %d\n"); -00200 console->Printf(KFormat3, -00201 &aString, -00202 aString.Length(), -00203 aString.Size(), -00204 aString.MaxLength() -00205 ); -00206 } -00207 -00208 -00209 LOCAL_C void BufferRead(const TDesC8& aBuffer) -00210 { -00211 // A function which handles the content -00212 // of ANY descriptor passed to it but -00213 // CANNOT change that descriptor. -00214 // -00215 // Function displays descriptor content, -00216 // length and size. -00217 // -00218 // All descriptors can be passed to this -00219 // function because all descriptors are -00220 // ultimately derived from TDesC. -00221 // -00222 // Note, however, that all data members -00223 // and function members in the TDes abstract -00224 // class cannot be accessed (recall that -00225 // TDes is derived from TDesC). -00226 // These include the data member containing -00227 // the maximum length and all modifying -00228 // member functions. -00229 for (TInt ix = 0; ix < aBuffer.Length(); ix++) -00230 console->Printf(KCommonFormat2,aBuffer[ix]); -00231 -00232 _LIT(KFormat4,"; %d; %d\n"); -00233 console->Printf(KFormat4,aBuffer.Length(),aBuffer.Size()); -00234 } -00235 -00236 -00237 LOCAL_C void BufferWrite(TDes8& aBuffer) -00238 { -00239 // A function which handles the content -00240 // of a descriptor derived from TDes; -00241 // i.e. the modifiable descriptors TPtr -00242 // and TBuf -00243 // -00244 // Function changes the content of the -00245 // referenced descriptors and then displays -00246 // their content, length, size and maximum -00247 // length. -00248 // -00249 // Note that the references to TPtrC, TBufC -00250 // and HBufC cannot be passed. -00251 -00252 _LIT(KTxtModBufferWrite,"Modified by BufferWrite "); -00253 console->Printf(KTxtModBufferWrite); -00254 -00255 for (TInt ix = 0; ix < aBuffer.Length(); ix++) -00256 { -00257 aBuffer[ix] += 0xF0; -00258 console->Printf(KCommonFormat2,aBuffer[ix]); -00259 } -00260 -00261 _LIT(KFormat1,"; %d; %d; %d\n"); -00262 console->Printf(KFormat1, -00263 aBuffer.Length(), -00264 aBuffer.Size(), -00265 aBuffer.MaxLength() -00266 ); -00267 } -00268 -00269 -