examples/Base/ArraysAndLists/linkedlist/dbllist/src/dbllist.cpp

Go to the documentation of this file.
00001 /*
00002 Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
00003 
00004 Redistribution and use in source and binary forms, with or without
00005 modification, are permitted provided that the following conditions are met:
00006 
00007 * Redistributions of source code must retain the above copyright notice, this
00008   list of conditions and the following disclaimer.
00009 * Redistributions in binary form must reproduce the above copyright notice,
00010   this list of conditions and the following disclaimer in the documentation
00011   and/or other materials provided with the distribution.
00012 * Neither the name of Nokia Corporation nor the names of its contributors
00013   may be used to endorse or promote products derived from this software
00014   without specific prior written permission.
00015 
00016 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00017 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00018 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00019 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00020 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00021 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00022 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00023 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00024 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00025 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00026 
00027 Description: 
00028 Contains the E32Main() function, which executes the example.
00029 The example demonstrates the use of the TDblQue class, which represents
00030 a doubly linked list.
00031 The user enters a string, which is stored as linked list of characters
00032 of the string. The user can edit this string by adding characters to the
00033 string.
00034 The example displays the reverse of this string on the console. 
00035 */
00036 
00041 #include "mystringreverse.h"
00042 
00043 LOCAL_D CConsoleBase* console;
00044 
00045 LOCAL_C void DoStartL();
00046 LOCAL_C void CallExampleL();
00047 
00048 LOCAL_C void DoStartL()
00049         {
00050         // Create and install the active scheduler.
00051         CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
00052         CleanupStack::PushL(scheduler);
00053         CActiveScheduler::Install(scheduler);
00054 
00055         _LIT(KTextDbllist,"Double Linked List Demo\nEnter the characters of the string\n");
00056         console->Printf(KTextDbllist);
00057         // Create an object of the CMyStringReverse class.
00058         CMyStringReverse* stringreverse = CMyStringReverse::NewL(console);
00059         CleanupStack::PushL(stringreverse);
00060 
00061         // Read the string from the user.
00062         // Generate an asynchronous read request.
00063         stringreverse->ReadOption();
00064 
00065         // Start the active scheduler.
00066         CActiveScheduler::Start();
00067 
00068         // Destroy the objects in the cleanup stack.
00069         CleanupStack::PopAndDestroy(2, scheduler); // stringreverse, scheduler.
00070         }
00071 
00072 GLDEF_C TInt E32Main() // main function called by E32
00073     {
00074         __UHEAP_MARK;
00075         CTrapCleanup* cleanup=CTrapCleanup::New(); // get clean-up stack
00076         TRAPD(error, CallExampleL()); // more initialization, then do example
00077         delete cleanup; // destroy clean-up stack
00078         __ASSERT_ALWAYS(!error, User::Panic(KTxtEPOC32EX, error));
00079         __UHEAP_MARKEND;
00080         return 0; // and return
00081     }
00082 
00083 LOCAL_C void CallExampleL() // initialize and call example code under cleanup stack
00084     {
00085         console=Console::NewL(KTxtExampleCode, TSize(KConsFullScreen, KConsFullScreen));
00086         CleanupStack::PushL(console);
00087         TRAPD(error, DoStartL()); // perform example function
00088         if (error)
00089                 console->Printf(KFormatFailed, error);
00090         else
00091                 console->Printf(KTxtOK);
00092         console->Printf(KTextPressAnyKey);
00093         console->Getch(); // get and ignore character
00094         CleanupStack::PopAndDestroy(); // close console
00095     }

Generated by  doxygen 1.6.2