|
1 <?xml version="1.0" encoding="utf-8"?> |
|
2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. --> |
|
3 <!-- This component and the accompanying materials are made available under the terms of the License |
|
4 "Eclipse Public License v1.0" which accompanies this distribution, |
|
5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". --> |
|
6 <!-- Initial Contributors: |
|
7 Nokia Corporation - initial contribution. |
|
8 Contributors: |
|
9 --> |
|
10 <!DOCTYPE concept |
|
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
|
12 <concept id="GUID-82B73D69-0176-5CBB-B3ED-5CA7F5CCD5D9" xml:lang="en"><title>The |
|
13 relationship between descriptor classes</title><shortdesc>Describes inheritance relationship between the descriptor classes |
|
14 and associated abstract base classes.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
15 <p>The following diagram shows the inheritance relationship between the concrete |
|
16 descriptor classes and their abstract base classes. </p> |
|
17 <p>The diagram uses the 16-bit variant types: </p> |
|
18 <ul> |
|
19 <li id="GUID-9F68E03E-EC88-50FD-868C-EB3C91DE9F50"><p> <xref href="GUID-8FE95467-D48B-3E61-9028-29C0F15F567E.dita"><apiname>TPtrC16</apiname></xref> </p> </li> |
|
20 <li id="GUID-DC40BC35-AA45-515C-9721-8B6E73A7AC89"><p> <xref href="GUID-262C5A94-F186-31A1-855E-1FE123BC101C.dita"><apiname>TPtr16</apiname></xref> </p> </li> |
|
21 <li id="GUID-10AD9787-4CCA-5600-8898-1F18B94C6499"><p> <xref href="GUID-44622E86-313E-36B3-9989-3016F8E6E252.dita"><apiname>TBufC16</apiname></xref> <codeph><TInt></codeph> </p> </li> |
|
22 <li id="GUID-D88E7A38-CF2F-5723-B1C1-C9FF3113AEF9"><p> <xref href="GUID-EF25E407-26DF-3D97-B725-2DD0345975BA.dita"><apiname>TBuf16</apiname></xref> <codeph><TInt></codeph> </p> </li> |
|
23 <li id="GUID-55E8280B-DB84-51B0-B103-E674DACCE388"><p> <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> </p> </li> |
|
24 <li id="GUID-9B7A4836-E7BA-5751-AFA7-563ED80B2F76"><p> <xref href="GUID-3D3D9CD7-C8FD-3F81-9CC5-1A71D4F9751E.dita"><apiname>HBufC16</apiname></xref> </p> </li> |
|
25 </ul> |
|
26 <p>but the relationship is exactly the same for the 8-bit variants. The class |
|
27 names can also be replaced by the build independent types and the relationships |
|
28 remains valid. </p> |
|
29 <p>The <codeph>TBufBase16</codeph> and <codeph>TBufCBase16</codeph> classes |
|
30 are an implementation convenience and are not part of the public API. </p> |
|
31 <p> <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita"><apiname>TDesC16</apiname></xref> and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes16</apiname></xref> are abstract |
|
32 classes and cannot be instantiated, However, these types can be passed as |
|
33 arguments to functions. </p> |
|
34 <fig id="GUID-B76A3D70-207B-55B2-B5BC-003E6E143375"> |
|
35 <image href="GUID-4BCE7915-6BF9-5D83-9049-B7FA9725B406_d0e313291_href.png" placement="inline"/> |
|
36 <p>Inheritance relationship between the concrete descriptor classes and their |
|
37 abstract base classes</p> |
|
38 </fig> |
|
39 <p>Because descriptors are widely used (especially on the stack), the size |
|
40 of descriptor objects must be kept to a minimum. To help with this, no virtual |
|
41 functions are defined in order to avoid the overhead of a virtual function |
|
42 table pointer in each descriptor object. </p> |
|
43 <p>As a consequence, the base classes have implicit knowledge of the classes |
|
44 derived from them. </p> |
|
45 </conbody></concept> |