examples/ForumNokia/SMSExample/Engine/src/SMSExampleParser.cpp

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  */
00029 
00030 #include "SMSExampleParser.h"
00031 
00032 const TInt KNumberLength = 10;
00033 
00034 CSMSExampleParser::CSMSExampleParser(void)
00035     {
00036     }
00037  
00038 EXPORT_C CSMSExampleParser::~CSMSExampleParser(void)
00039     {
00040     }
00041 
00042 EXPORT_C CSMSExampleParser* CSMSExampleParser::NewL()
00043     {
00044     CSMSExampleParser* self = new (ELeave) CSMSExampleParser();
00045     CleanupStack::PushL(self);
00046     self->ConstructL();
00047     CleanupStack::Pop(self);
00048     return self;
00049     }
00050       
00051 void CSMSExampleParser::ConstructL()
00052     {
00053     }
00054 
00055 EXPORT_C TBool CSMSExampleParser::ParseMessage(const TDesC& aMessage, TDes& aNumber)
00056     {
00057     TLex numberLex = TLex( aMessage );
00058 
00059     // while not end-of-file
00060     while ( !numberLex.Eos() )
00061         {
00062         TChar character = numberLex.Get();
00063 
00064         if ( character.IsDigit() ) 
00065             {
00066             aNumber.Append( character );
00067             }
00068         else 
00069             {
00070             aNumber.Delete( 0, aNumber.Length() );
00071             }
00072 
00073         // Search for a number which is in format XXXXXXXXXX ( X = [0-9], 
00074         // whitespaces are not allowed). 
00075         // For example "0551234567" would return true. 
00076         // but "055 1234567" would not
00077         if ( aNumber.Length() == KNumberLength ) 
00078             {
00079             return ETrue;
00080             }
00081         }
00082 
00083     return EFalse;
00084     }

Generated by  doxygen 1.6.2