diff -r 000000000000 -r a2952bb97e68 mpx/viewframework/viewutility/src/mpxviewutilityhelper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mpx/viewframework/viewutility/src/mpxviewutilityhelper.cpp Thu Dec 17 08:55:47 2009 +0200 @@ -0,0 +1,154 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "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: +* +* Description: Implementation of view utility helper +* +*/ + + + +// INCLUDE FILES +#include "mpxviewutilityhelper.h" + +// CONSTANTS +_LIT8( KMPXDelimiter8, ";" ); +_LIT8( KMPXHexMarker8, "0x" ); + +_LIT( KMPXDelimiter, ";" ); +_LIT( KMPXHexMarker, "0x" ); + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// Extracts number from data. ( 8 bit ) +// --------------------------------------------------------------------------- +// +TInt CMPXViewUtilityHelper::ExtractNum( + const TDesC8& aData, + TInt& aNextPos, + TInt& aResult ) + { + if ( aNextPos < 0 || aNextPos > aData.Length() ) + { + aNextPos = KErrNotFound; + return KErrArgument; + } + + TInt err( KErrNone ); + TPtrC8 string( aData.Mid( aNextPos ) ); + + if ( string.Length() ) + { + TInt delimiterPos = string.Find( KMPXDelimiter8 ); + if ( KErrNotFound != delimiterPos ) + { + string.Set( aData.Mid( aNextPos, delimiterPos ) ); + aNextPos += delimiterPos + KMPXDelimiter8().Length(); + if ( aNextPos >= aData.Length() ) + { + // Reach the end of string + aNextPos = KErrNotFound; + } + } + else + { + // Reach the end of string + aNextPos = KErrNotFound; + } + + // Convert string to integer + TInt hexMarkerPos = string.Find( KMPXHexMarker8 ); + if ( KErrNotFound != hexMarkerPos ) + { + TUint numHex( 0 ); + TLex8 lexHex( string.Mid( KMPXHexMarker8().Length() ) ); + err = lexHex.Val( numHex, EHex ); + aResult = numHex; + } + else + { + TLex8 lexDec( string ); + err = lexDec.Val( aResult ); + } + } + else + { + aNextPos = KErrNotFound; + err = KErrNotFound; + } + + return err; + } + +// --------------------------------------------------------------------------- +// Extracts number from data. ( generic ) +// --------------------------------------------------------------------------- +// +TInt CMPXViewUtilityHelper::ExtractNum( + const TDesC& aData, + TInt& aNextPos, + TInt& aResult ) + { + if ( aNextPos < 0 || aNextPos > aData.Length() ) + { + aNextPos = KErrNotFound; + return KErrGeneral; + } + + TInt err( KErrNone ); + TPtrC string( aData.Mid( aNextPos ) ); + + if ( string.Length() ) + { + TInt delimiterPos = string.Find( KMPXDelimiter ); + if ( KErrNotFound != delimiterPos ) + { + string.Set( aData.Mid( aNextPos, delimiterPos ) ); + aNextPos += delimiterPos + KMPXDelimiter().Length(); + if ( aNextPos >= aData.Length() ) + { + // Reach the end of string + aNextPos = KErrNotFound; + } + } + else + { + // Reach the end of string + aNextPos = KErrNotFound; + } + + // Convert string to integer + TInt hexMarkerPos = string.Find( KMPXHexMarker ); + if ( KErrNotFound != hexMarkerPos ) + { + TUint numHex( 0 ); + TLex lexHex( string.Mid( KMPXHexMarker().Length() ) ); + err = lexHex.Val( numHex, EHex ); + aResult = numHex; + } + else + { + TLex lexDec( string ); + err = lexDec.Val( aResult ); + } + } + else + { + aNextPos = KErrNotFound; + err = KErrNotFound; + } + + return err; + } + +// End of File