Symbian3/SDK/Source/GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.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 reference
  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
<reference id="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22" xml:lang="en"><title>linkedlist: Using the Linked List classes</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><refbody>
<section id="GUID-4B81C04C-94DD-4694-9BD9-447ADE72B294"><p>The following
examples show the use of the linked list classes: </p> <ul>
<li id="GUID-F204E5EC-593B-556D-83DC-72B7B5C7C46A"><p><xref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita#GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22/GUID-4366D8F9-3E8F-53B2-BB3C-A32CA13DA96D"> Singly linked list example</xref>  </p> </li>
<li id="GUID-295D6285-199E-5FD8-B0B9-90FA546831F8"><p><xref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita#GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22/GUID-FC5F8D9A-C594-5FBB-9AD1-8DEB72A5F5BD"> Doubly linked list example</xref>  </p> </li>
<li id="GUID-F459FF26-D837-5E5F-BB50-67D12D3EE93F"><p><xref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita#GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22/GUID-7FFDF885-72F4-543E-A93E-C6A57D3D7DE0"> Delta queue example</xref>  </p> </li>
</ul> </section>
<section id="GUID-4366D8F9-3E8F-53B2-BB3C-A32CA13DA96D"><title>Singly
linked list example</title> <p>This example application demonstrates
the use of singly linked lists. The templated <xref href="GUID-40BA1263-BE07-3C7F-955E-0BBC632E7C58.dita"><apiname>TSglQue</apiname></xref> class is used to create a singly linked list. </p> <p><b>Download</b> </p> <p>Click on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-54304ba8-7028-43b8-89b8-d89432684981.zip" scope="external">sgllist.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-54304ba8-7028-43b8-89b8-d89432684981.html" scope="peer">browse </xref>to view the example.</p> <p><b>Description</b> </p> <p>The example creates a singly linked list of objects of the <xref href="GUID-129B4F4D-500E-37E8-9D29-94E3E6D11BD9.dita"><apiname>TDigit</apiname></xref> class. This list represents a long number. An object
of class <xref href="GUID-F20187A8-CC62-34C6-830C-FB077515AAF8.dita"><apiname>CLongNumber</apiname></xref> owns the list. The user can
edit this list using the functions defined in the <codeph>CLongNumber</codeph> class. The following edit operations are possible: </p> <ul>
<li id="GUID-C793B73E-9037-5B22-8A3A-EFAD7A666D53"><p>Insert an object
of the <codeph>TDigit</codeph> class at the start of the singly linked
list </p> </li>
<li id="GUID-C46B31C9-49FF-5457-9157-E55316F26252"><p>Insert an object
of the <codeph>TDigit</codeph> class at the end of the singly linked
list </p> </li>
<li id="GUID-9AFD5005-AA6A-5D7D-9B96-35CBA4791128"><p>Remove an object
of the <codeph>TDigit</codeph> class from the end of the singly linked
list </p> </li>
</ul> <p>The user can perform any of these operations by pressing
keys specified in the menu. <codeph>CLongNumber</codeph> is an active
object class and handles the key press events in the <codeph>CLongNumber::RunL()</codeph> function.The <codeph>CLongNumber::ReadFunc()</codeph> function displays
a menu and waits for an asynchronous key press event. </p> <p>An object
of the templated <xref href="GUID-0A865633-5038-3320-A472-A2EE18F04FBE.dita"><apiname>TSglQueIter</apiname></xref> class is used to traverse
this linked list. The sum of all digits of the number represented
by the linked list is displayed to the user. </p> <p>An object of
the <xref href="GUID-D0AE0223-82DC-369A-A8FB-C2086C1EC77C.dita"><apiname>CAdder</apiname></xref> class is used to traverse the <codeph>CLongNumber::iNumber</codeph> list and print the sum of all digits
of the number represented by this list. The <codeph>CAdder::Add()</codeph> function gets this sum. </p><p><b>Related APIs</b></p><ul>
<li><p><xref href="GUID-D0AE0223-82DC-369A-A8FB-C2086C1EC77C.dita"><apiname>CAdder</apiname></xref></p></li>
<li><p><xref href="GUID-F20187A8-CC62-34C6-830C-FB077515AAF8.dita"><apiname>CLongNumber</apiname></xref></p></li>
<li><p><xref href="GUID-129B4F4D-500E-37E8-9D29-94E3E6D11BD9.dita"><apiname>TDigit</apiname></xref></p></li>
<li><p><xref href="GUID-0A865633-5038-3320-A472-A2EE18F04FBE.dita"><apiname>TSglQueIter</apiname></xref></p></li>
</ul> <p><b>Design and implementation</b> </p> <p>Figure 1 shows the
classes in the example. </p> <fig id="GUID-7BB458A7-C1E6-5919-A503-BFBE695432AA">
<title>     Figure 1. Classes in the singly linked list example  
            </title>
<image href="GUID-D6B332EB-D9D7-5598-98C7-E73164A2057D_d0e257464_href.jpg" placement="inline"/>
</fig> <p><b>Class summary</b></p><ul>
<li><p><xref href="GUID-40BA1263-BE07-3C7F-955E-0BBC632E7C58.dita"><apiname>TSglQue</apiname></xref></p></li>
<li><p> <xref href="GUID-0A865633-5038-3320-A472-A2EE18F04FBE.dita"><apiname>TSglQueIter</apiname></xref></p></li>
</ul><p><b>Build</b> </p> <p>For the emulator, the
example builds an executable called <filepath>sgllist.exe</filepath> in the <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath> folder. </p><p><b>See also:</b></p><p><xref href="GUID-052E9582-9A35-50B0-A32E-F7E6A01A2E2A.dita">Using Singly Linked
Lists</xref></p> </section>
<section id="GUID-FC5F8D9A-C594-5FBB-9AD1-8DEB72A5F5BD"><title>Doubly
linked list example</title> <p>This example application demonstrates
the use of doubly linked lists. The templated <xref href="GUID-E5E9834A-63CA-3F03-88D3-85B912ADA54C.dita"><apiname>TDblQue</apiname></xref> class is used create a doubly linked list. </p> <p><b>Download</b> </p> <p>Click on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-3a268b1a-9a7e-49ae-bc76-f99bdc3b32f5.zip" scope="external">dbllist.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-3a268b1a-9a7e-49ae-bc76-f99bdc3b32f5.html" scope="peer">browse </xref>to view the example code</p> <p><b>Description</b> </p> <p>The example creates a doubly linked list of objects of the <codeph>TLetter</codeph> class. This list represents a character string.
An object of class <codeph>CMyStringReverse</codeph> owns this string.
The user can edit this string using the functions defined in the <codeph>CMyStringReverse</codeph> class. The following edit operations are
possible: </p> <ul>
<li id="GUID-D3B39123-1249-59DD-BC1F-2D62B7F9DE84"><p>Insert a character
at the start of the list </p> </li>
<li id="GUID-E6CEC00A-B6C1-53B2-9AAA-870EA8B06A5B"><p>Insert a character
at the end of the list </p> </li>
</ul> <p>The user can perform either of these operations by pressing
keys specified in the menu. <codeph>CMyStringReverse</codeph> is an
active object class and handles key press events in the <codeph>CMyStringReverse::RunL()</codeph> function. The <codeph>CMyStringReverse::ReadFunc()</codeph> function
displays a menu and waits for an asynchronous key press event. </p> <p>The <codeph>CMyStringReverse</codeph> class has a doubly linked
list iterator, <codeph>iIteratorString</codeph>. The <codeph>iIteratorString</codeph> object iterates through the list <codeph>iString</codeph> from start
to end to print the string reversed. </p><p><b>Design and implementation</b></p><p>Figure 2 shows the classes in the example.</p><fig id="GUID-67F3F952-D0A8-4A28-8CB2-0394C1562A29">
<title> Figure 2. Classes in the doubly linked list example </title>
<image href="GUID-21A1D1D2-524E-560E-88C8-16E2E49E2B7F_d0e257599_href.jpg" placement="inline"/>
</fig><p><b>Class summary</b></p><ul>
<li><p><xref href="GUID-E5E9834A-63CA-3F03-88D3-85B912ADA54C.dita"><apiname>TDblQue</apiname></xref> - A templated class that provides
the behaviour for managing a doubly linked list.</p></li>
</ul> <p><b>Build</b> </p> <p>For the emulator, the example builds
an executable called <filepath>dbllist.exe</filepath> in the <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath> folder. </p> <p><b>See also</b> </p> <p><xref href="GUID-F45EA14E-F857-5D59-BFBA-E2F563287359.dita">Using Doubly Linked
Lists</xref>  </p> <p><b>Example code</b> </p> </section>
<section id="GUID-7FFDF885-72F4-543E-A93E-C6A57D3D7DE0"><title>Delta
queue example</title> <p>This example application demonstrates the
use of the delta queue. The templated <xref href="GUID-E67BB56F-F9DD-316D-BC16-ED60D31A5925.dita"><apiname>TDeltaQue</apiname></xref> class is used create a delta queue. </p> <p><b>Download</b> </p> <p>Click on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-6a73c507-073b-4993-aa02-a677a384bafb.zip" scope="external">deltaque.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-6a73c507-073b-4993-aa02-a677a384bafb.html" scope="peer">browse </xref>to view the example code.</p> <p><b>Description</b> </p> <p>The example creates an object of the <codeph>CTimerEntry</codeph> class. This is a <xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname>CTimer</apiname></xref> derived class. An object
of this class generates timer events by using the <xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita#GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A/GUID-F389C301-D56B-3981-9C26-180E02BFF171"><apiname>CTimer::After()</apiname></xref> function. The data member of this class, <codeph>iQueue</codeph> is a delta list. The offset value of each node in this list is the
tick count after each timer event. The <codeph>CTimerEntry::Arbitrator()</codeph> function decides the action to be performed for each event generated
by the timer. It either adds tick counts to the list or removes elements
from the list based on the state of the queue. </p><p><b>Related APIs</b></p><ul>
<li><p><xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname>CTimer</apiname></xref> - Base class for a timer active object.</p></li>
<li><p><xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita#GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A/GUID-F389C301-D56B-3981-9C26-180E02BFF171"><apiname>CTimer::After()</apiname></xref></p></li>
</ul><p><b>Design and implementation</b></p><p> Figure 3 shows the
classes of the example. </p><fig id="GUID-2E093EFA-7A18-4623-AE31-3FA1FDB103F5">
<title> Figure 3. Classes of the delta queue example </title>
<image href="GUID-8CF0C00C-0FDF-517E-96FB-84F718237F61_d0e257722_href.jpg" placement="inline"/>
</fig><p><b>Class summary</b></p><ul>
<li><p> <xref href="GUID-E67BB56F-F9DD-316D-BC16-ED60D31A5925.dita"><apiname>TDeltaQue</apiname></xref></p></li>
<li><p><xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname>CTimer</apiname></xref> - Base class for a timer active object.</p></li>
</ul> <p><b>Build</b> </p> <p>For the emulator, the example builds
an executable called <filepath>deltaque.exe</filepath> in the <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath> folder. </p> </section>
</refbody></reference>