diff -r 1a2a00e78665 -r 7feec50967db idlefw/src/utility/caistrparser.cpp --- a/idlefw/src/utility/caistrparser.cpp Tue Feb 02 00:23:10 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,266 +0,0 @@ -/* -* Copyright (c) 2005 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: Collection of string parsing methods. -* -*/ - - -#include "caistrparser.h" -#include "aistrcnv.h" - -// CONSTANTS - -const TInt KThreeOctets = 3; -const TInt KTwoOctets = 2; - -namespace - { - - _LIT8( KHexPrefix8, "0x" ); - _LIT16( KHexPrefix16, "0x" ); - - const TInt KMaxOneOctetValue = 0x007F; - const TInt KMaxTwoOctetValue = 0x07FF; - - TInt Utf8OctetCount( const TDesC16& aString ) - { - TInt numOctets(0); - TInt length(aString.Length()); - const TUint16* stringData = aString.Ptr(); - - for ( TInt i = 0; i < length; ++i) - { - if (stringData[i] > KMaxOneOctetValue) - { - if (stringData[i] > KMaxTwoOctetValue) - { - numOctets += KThreeOctets; - } - else - { - numOctets += KTwoOctets; - } - } - else - { - ++numOctets; - } - } - - return numOctets; - } - - TPtr8 EnsureBufMaxLengthL(HBufC8*& aBuffer, TInt aMaxLength ) - { - if ( !aBuffer ) - { - aBuffer = HBufC8::NewL( aMaxLength ); - } - else if ( aBuffer->Des().MaxLength() < aMaxLength ) - { - aBuffer = aBuffer->ReAllocL( aMaxLength ); - } - - return aBuffer->Des(); - } - - } - -namespace AiUtility - { - -template< class DescType, class LexType > inline -TInt ParseIntImpl - ( TInt32& aValue, const DescType& aStringValue, - const DescType& aHexPrefix ) - { - const TInt pos = aStringValue.FindF( aHexPrefix ); - if (pos != KErrNotFound) - { - LexType lex( aStringValue.Mid( pos + aHexPrefix.Length() ) ); - // Hex parsing needs unsigned int - TUint32 value = 0; - const TInt parseResult = lex.Val( value, EHex ); - if ( parseResult == KErrNone ) - { - aValue = value; - } - return parseResult; - } - else - { - LexType lex( aStringValue ); - return lex.Val(aValue); - } - } - -EXPORT_C TInt ParseInt( TInt32& aResult, const TDesC8& aSourceString ) - { - return ParseIntImpl< TDesC8, TLex8 > - ( aResult, aSourceString, KHexPrefix8 ); - } - -EXPORT_C TInt ParseInt( TInt32& aResult, const TDesC16& aSourceString ) - { - return ParseIntImpl< TDesC16, TLex16 > - ( aResult, aSourceString, KHexPrefix16 ); - } - -EXPORT_C HBufC16* CopyToBufferL(HBufC16* aTargetBuffer, const TDesC16& aSourceText) - { - EnsureBufMaxLengthL( aTargetBuffer, aSourceText.Length() ).Copy( aSourceText ); - - return aTargetBuffer; - } - -EXPORT_C HBufC16* CopyToBufferL(HBufC16* aTargetBuffer, const TDesC8& aSourceText) - { - if (!aTargetBuffer) - { - return CnvUtfConverter::ConvertToUnicodeFromUtf8L( aSourceText ); - } - - TPtr16 des( EnsureBufMaxLengthL( aTargetBuffer, aSourceText.Length() ) ); - - CnvUtfConverter::ConvertToUnicodeFromUtf8( des, aSourceText ); - - return aTargetBuffer; - } - -EXPORT_C HBufC8* CopyToBufferL(HBufC8* aTargetBuffer, const TDesC8& aSourceText) - { - ::EnsureBufMaxLengthL( aTargetBuffer, aSourceText.Length() ).Copy( aSourceText ); - return aTargetBuffer; - } - -EXPORT_C HBufC8* CopyToBufferL(HBufC8* aTargetBuffer, const TDesC16& aSourceText) - { - if ( !aTargetBuffer ) - { - return CnvUtfConverter::ConvertFromUnicodeToUtf8L( aSourceText ); - } - - TInt length = Utf8OctetCount( aSourceText ); - - TPtr8 des( ::EnsureBufMaxLengthL( aTargetBuffer, length ) ); - CnvUtfConverter::ConvertFromUnicodeToUtf8( des, aSourceText ); - return aTargetBuffer; - } - -EXPORT_C TPtr16 EnsureBufMaxLengthL(HBufC16*& aTargetBuffer, TInt aMaxLength ) - { - if ( !aTargetBuffer ) - { - aTargetBuffer = HBufC16::NewL( aMaxLength ); - } - else - { - if ( aTargetBuffer->Des().MaxLength() < aMaxLength ) - { - aTargetBuffer = aTargetBuffer->ReAllocL( aMaxLength ); - } - } - - return aTargetBuffer->Des(); - } - - } - - -// --------------------------------------------------------------------------- -// CStrParser() -// --------------------------------------------------------------------------- -// -CStrParser::CStrParser() - { - } - -// --------------------------------------------------------------------------- -// CStrParser* NewL() -// --------------------------------------------------------------------------- -// -CStrParser* CStrParser::NewL() - { - CStrParser* self = new ( ELeave ) CStrParser(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// void ConstructL() -// --------------------------------------------------------------------------- -// -void CStrParser::ConstructL() - { - } - -// --------------------------------------------------------------------------- -// void Release() -// --------------------------------------------------------------------------- -// -void CStrParser::Release() - { - delete this; - } - -// --------------------------------------------------------------------------- -// TInt ParseInt( TInt32& aValue, const TDesC8& aStringValue ) -// --------------------------------------------------------------------------- -// -TInt CStrParser::ParseInt( TInt32& aResult, const TDesC8& aSourceString ) - { - return AiUtility::ParseInt( aResult, aSourceString ); - } - -// --------------------------------------------------------------------------- -// HBufC16* CopyToBufferL( HBufC16* aTargetBuffer, const TDesC16& aSourceText ) -// --------------------------------------------------------------------------- -// -HBufC16* CStrParser::CopyToBufferL( HBufC16* aTargetBuffer, const TDesC16& aSourceText ) - { - return AiUtility::CopyToBufferL( aTargetBuffer, aSourceText ); - } - -// --------------------------------------------------------------------------- -// HBufC16* CopyToBufferL( HBufC16* aTargetBuffer, const TDesC8& aSourceText ) -// --------------------------------------------------------------------------- -// -HBufC16* CStrParser::CopyToBufferL( HBufC16* aTargetBuffer, const TDesC8& aSourceText ) - { - return AiUtility::CopyToBufferL( aTargetBuffer, aSourceText ); - } - -// --------------------------------------------------------------------------- -// HBufC8* CopyToBufferL( HBufC8* aTargetBuffer, const TDesC8& aSourceText ) -// --------------------------------------------------------------------------- -// -HBufC8* CStrParser::CopyToBufferL( HBufC8* aTargetBuffer, const TDesC8& aSourceText ) - { - return AiUtility::CopyToBufferL( aTargetBuffer, aSourceText ); - } - -// --------------------------------------------------------------------------- -// HBufC8* CopyToBufferL( HBufC8* aTargetBuffer, const TDesC16& aSourceText ) -// --------------------------------------------------------------------------- -// -HBufC8* CStrParser::CopyToBufferL( HBufC8* aTargetBuffer, const TDesC16& aSourceText ) - { - return AiUtility::CopyToBufferL( aTargetBuffer, aSourceText ); - } - -// End of File. - -