Symbian3/SDK/Source/GUID-261ADCEC-C8C8-46E3-A7DC-804AC868C233.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Tue, 20 Jul 2010 12:00:49 +0100
changeset 13 48780e181b38
parent 8 ae94777fff8f
permissions -rw-r--r--
Week 28 contribution of SDK documentation content. See release notes for details. Fixes bugs Bug 1897 and Bug 1522.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-261ADCEC-C8C8-46E3-A7DC-804AC868C233" xml:lang="en"><title>Descriptors</title><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>Descriptors are self-describing strings that can be used to
store binary data and text. Each descriptor object holds the length
of the string as well as its type which identifies the underlying
memory layout of the data it holds. For more information on different
descriptor classes, see <xref href="GUID-11EEFB3D-0414-5BEB-9D78-56A4B9154008.dita">Using Descriptors</xref>.</p>
<p>There are modifiable and non-modifiable descriptors, the latter
type is identified by a "C" suffix in the class name. The length of
a non-modifiable descriptor is defined when compiling an application,
and the length of a modifiable descriptor can vary within the limits
set by <codeph>iMaxLength</codeph>. Nonmodifiable descriptors are
more secure, as their length is checked during compilation. The following
figure shows the differences between these types.</p>
<fig id="GUID-A8F9937F-25A6-4E80-845F-35994B7E13E5"><title>Differences between modifiable, nonmodifiable, and pointer
descriptors</title><image href="GUID-40619192-8C2F-4267-BFCA-F53E10BF5A31_d0e12633_href.png"/></fig>
<p>When designing applications, avoid using fixed-length buffers
as parameters and use base classes (preferably constant base type <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/e32cmn.hGlobals.html#%3a%3aTDesC" format="application/java-archive">TDesC</xref></codeph>) instead. Descriptor objects provide
a flexible interface for manipulating the contained string, including
size and length checks. Take advantage of these when possible.</p>
<p>For more information and examples, see the <xref href="GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita">Descriptors Overview</xref> topic.</p>
</conbody></concept>