Symbian3/SDK/Source/GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Fri, 11 Jun 2010 12:39:03 +0100
changeset 8 ae94777fff8f
parent 7 51a74ef9ed63
child 13 48780e181b38
permissions -rw-r--r--
Week 23 contribution of SDK documentation content. See release notes for details. Fixes bugs Bug 2714, Bug 462.

<?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_d0e252535_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><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The
Symbian build process</xref> describes how to build this example. </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_d0e252674_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><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The
Symbian build process</xref> describes how to build this example. </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_d0e252803_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><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The
Symbian build process</xref> describes how to build this example. </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>