Symbian3/PDK/Source/GUID-E161AB84-1B24-53AF-B313-D68CF9F8EE60.dita
changeset 1 25a17d01db0c
child 3 46218c8b8afa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/PDK/Source/GUID-E161AB84-1B24-53AF-B313-D68CF9F8EE60.dita	Fri Jan 22 18:26:19 2010 +0000
@@ -0,0 +1,54 @@
+<?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-E161AB84-1B24-53AF-B313-D68CF9F8EE60" xml:lang="en"><title>Pointers
+to the start and end of contiguous regions</title><shortdesc>The <codeph>Back()</codeph> and <codeph>End()</codeph> functions
+point to locations in memory for flat and segmented arrays.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>For those arrays of same length elements which are derived from <codeph>CArrayFix&lt;class T&gt;</codeph>,
+the elements are contained within an array buffer which can be implemented
+as a flat buffer or as a segmented buffer. A flat buffer is implemented as
+a single contiguous region of memory while a segmented buffer is implemented
+as a set of separate but linked regions of memory </p>
+<p>Given the position of an element within an array, it can be useful to fetch
+a pointer to the first byte following the end of the contiguous region of
+memory containing that element (the <i>end</i> pointer). Similarly, it can
+be useful to fetch a pointer to the <i>beginning</i> of a contiguous region
+of memory (the <i>back</i> pointer).</p>
+<section id="GUID-DB6D5E2F-CFEE-47EC-B38D-9D0DC13B994D"><title>Array of same length elements</title> <p>An array of same
+length elements uses the <codeph>End()</codeph> function to fetch the end
+pointer and the <codeph>Back()</codeph> function to fetch the back pointer.
+The implementation of these two functions differs between a fixed flat array
+and a fixed segmented array.</p> </section>
+<section id="GUID-48756A91-9B8F-4BA8-A0CF-52970F8B41CC"><title>Flat array</title> <p>For a flat array — i.e. an array whose
+buffer is implemented using a flat buffer — the end pointer simply points
+to the first byte following the single region of memory containing the array
+buffer. The back pointer simply points to the first byte of the single region
+of memory (as illustrated below); <codeph>End()</codeph> always returns a
+pointer to the first byte following the end of the buffer, while <codeph>Back()</codeph> always
+returns a pointer to the beginning of the buffer.</p> <fig id="GUID-D4084F4C-B928-5779-A58F-CB495A74EE68">
+<title>End() and Back() in fixed flat arrays</title>
+<image href="GUID-81A5784D-A0C6-5108-9E7B-5D39C6743B1A_d0e308796_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-27F85346-3B08-4E06-A80D-A5B708105659"><title>Segmented array</title> <p>For a segmented array, the situation
+is different (as illustrated below). Looking at the segment containing elements <codeph>n</codeph> and <codeph>n+1</codeph>, <codeph>End()</codeph> returns a pointer to the first byte following the end of that segment. In
+fact, <codeph>End()</codeph> returns the same pointer value for all elements
+in that segment. <codeph>Back()</codeph> returns a pointer to the beginning
+of that segment for element <codeph>n+1</codeph> and for all <i>subsequent</i> elements
+in that segment. However, for the <i>first</i> element in that segment, <codeph>Back()</codeph> returns
+a pointer to the beginning of the <i>previous</i> segment. For the very first
+element in the array, <codeph>Back()</codeph> returns a pointer with a NULL
+value.</p> <fig id="GUID-90C05AF9-9048-557E-95DD-49A19F856EF0">
+<title>End() and Back() in fixed segmented arrays</title>
+<image href="GUID-C0CFFE13-579C-5A93-9B63-DC2DCF98EC61_d0e308845_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-165D9F3E-3948-4DC0-9632-FF70480C495C"><title>See also</title> <p><xref href="GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita">Dynamic
+Buffers Guide</xref>.</p> </section>
+</conbody></concept>
\ No newline at end of file