Symbian3/SDK/Source/GUID-DE17BEA2-C821-50B8-9128-9C4D35D95599.dita
changeset 0 89d6a7a84779
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DE17BEA2-C821-50B8-9128-9C4D35D95599.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?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-DE17BEA2-C821-50B8-9128-9C4D35D95599" xml:lang="en"><title>Array
+Implementation</title><shortdesc>Describes the features of arrays and the ways in which they are
+implemented.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>All arrays have an array buffer allocated from the heap. The implementation
+of this buffer and the way it is used depends on the specific type of array.</p>
+<p>In arrays of elements which all have the same length, the elements are
+contained within the array buffer itself.</p>
+<p>In arrays of elements with varying length, each element is contained within
+its own heap cell and the array buffer contains <i>pointers</i> to the elements.</p>
+<p>In packed arrays, the elements are contained within the array buffer. A
+packed array is an array of elements of varying length where the length information
+for an element precedes that element within the array buffer.</p>
+<p>Logically, an array buffer is linear but, physically, it can be organised
+either as a flat buffer or a segmented buffer.</p>
+<p>In general, you can choose between array classes which use a flat buffer
+and array classes which use a segmented buffer. The choice depends on how
+the array is to be used.</p>
+<p>A segmented array buffer is implemented using a <codeph>CBufSeg</codeph> object.</p>
+<p>A flat array buffer is implemented either:</p>
+<ul>
+<li id="GUID-56BE93C2-0A0A-50DD-807C-4F25A2B6981D"><p>directly by the array
+as a piece of linear memory.</p> </li>
+</ul>
+<p>or</p>
+<ul>
+<li id="GUID-2165BEC5-BF75-5E0D-8ED0-074FF23A390A"><p>using a <codeph>CBufFlat</codeph> object.</p> </li>
+</ul>
+<p>The first type is a simple and efficient implementation but has some restrictions
+on the size of an array element and is limited to holding elements which have
+the same length. The second is a more general implementation and is only limited
+by the available memory.</p>
+<section id="GUID-1A671F26-FA1C-4943-B6FD-43F3FD831464"><title>See also</title> <p><xref href="GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita">Using
+Dynamic Buffers</xref>.</p> </section>
+</conbody></concept>
\ No newline at end of file