--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/engine/src/catalogskeyvaluepair.cpp Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,337 @@
+/*
+* 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:
+*
+*/
+
+
+#include <s32strm.h>
+#include <utf.h>
+
+#include "catalogskeyvaluepair.h"
+#include "catalogsutils.h"
+#include "catalogsdebug.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Creator
+// ---------------------------------------------------------------------------
+//
+CCatalogsKeyValuePair* CCatalogsKeyValuePair::NewL( const TDesC16& aKey,
+ const TDesC16& aValue )
+ {
+ CCatalogsKeyValuePair* self = NewLC( aKey, aValue );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Creator
+// ---------------------------------------------------------------------------
+//
+CCatalogsKeyValuePair* CCatalogsKeyValuePair::NewLC( const TDesC16& aKey,
+ const TDesC16& aValue )
+ {
+ CCatalogsKeyValuePair* self = new ( ELeave ) CCatalogsKeyValuePair();
+ CleanupStack::PushL( self );
+ self->ConstructL( aKey, aValue );
+
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Creator
+// ---------------------------------------------------------------------------
+//
+CCatalogsKeyValuePair* CCatalogsKeyValuePair::NewL( const TDesC8& aKey,
+ const TDesC8& aValue )
+ {
+ CCatalogsKeyValuePair* self = NewLC( aKey, aValue );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Creator
+// ---------------------------------------------------------------------------
+//
+CCatalogsKeyValuePair* CCatalogsKeyValuePair::NewLC( const TDesC8& aKey,
+ const TDesC8& aValue )
+ {
+ CCatalogsKeyValuePair* self = new ( ELeave ) CCatalogsKeyValuePair();
+ CleanupStack::PushL( self );
+ self->ConstructL( aKey, aValue );
+
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Copy creator
+// ---------------------------------------------------------------------------
+//
+CCatalogsKeyValuePair* CCatalogsKeyValuePair::NewL(
+ const CCatalogsKeyValuePair& aOther )
+ {
+ CCatalogsKeyValuePair* self = NewLC( aOther );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Copy creator
+// ---------------------------------------------------------------------------
+//
+CCatalogsKeyValuePair* CCatalogsKeyValuePair::NewLC(
+ const CCatalogsKeyValuePair& aOther )
+ {
+ // Using normal constructor
+ CCatalogsKeyValuePair* self = new ( ELeave ) CCatalogsKeyValuePair();
+ CleanupStack::PushL( self );
+ self->ConstructL( aOther.Key(), aOther.Value() );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Creator
+// ---------------------------------------------------------------------------
+//
+CCatalogsKeyValuePair* CCatalogsKeyValuePair::NewL(
+ RReadStream& aStream )
+ {
+ CCatalogsKeyValuePair* self = CCatalogsKeyValuePair::NewLC( aStream );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Creator
+// ---------------------------------------------------------------------------
+//
+CCatalogsKeyValuePair* CCatalogsKeyValuePair::NewLC(
+ RReadStream& aStream )
+ {
+ CCatalogsKeyValuePair* self = new ( ELeave ) CCatalogsKeyValuePair();
+ CleanupStack::PushL( self );
+ self->InternalizeL( aStream );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CCatalogsKeyValuePair::CCatalogsKeyValuePair()
+ {
+ }
+
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CCatalogsKeyValuePair::~CCatalogsKeyValuePair()
+ {
+ delete iKey;
+ delete iValue;
+ }
+
+
+// ---------------------------------------------------------------------------
+// 2nd phase constructor
+// ---------------------------------------------------------------------------
+//
+void CCatalogsKeyValuePair::ConstructL( const TDesC16& aKey,
+ const TDesC16& aValue )
+ {
+ iKey = ConvertUnicodeToUtf8L( aKey );
+ iValue = ConvertUnicodeToUtf8L( aValue );
+ }
+
+
+// ---------------------------------------------------------------------------
+// 2nd phase constructor
+// ---------------------------------------------------------------------------
+//
+void CCatalogsKeyValuePair::ConstructL( const TDesC8& aKey,
+ const TDesC8& aValue )
+ {
+ iKey = aKey.AllocL();
+ iValue = aValue.AllocL();
+ }
+
+
+// ---------------------------------------------------------------------------
+// Key getter
+// ---------------------------------------------------------------------------
+//
+const TDesC8& CCatalogsKeyValuePair::Key() const
+ {
+ if ( iKey )
+ {
+ return *iKey;
+ }
+
+ return KNullDesC8;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Value getter
+// ---------------------------------------------------------------------------
+//
+const TDesC8& CCatalogsKeyValuePair::Value() const
+ {
+ if ( iValue )
+ {
+ return *iValue;
+ }
+
+ return KNullDesC8;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Key getter
+// ---------------------------------------------------------------------------
+//
+HBufC* CCatalogsKeyValuePair::KeyLC() const
+ {
+ if( iKey )
+ {
+ #ifdef _UNICODE
+ HBufC* key = ConvertUtf8ToUnicodeL( *iKey );
+ CleanupStack::PushL( key );
+ #else
+ HBufC* key = iKey->AllocLC();
+ #endif
+
+ return key;
+ }
+ return KNullDesC().AllocLC();
+ }
+
+
+// ---------------------------------------------------------------------------
+// Key getter
+// ---------------------------------------------------------------------------
+//
+HBufC* CCatalogsKeyValuePair::KeyL() const
+ {
+ if( iKey )
+ {
+ #ifdef _UNICODE
+ HBufC* key = CnvUtfConverter::ConvertToUnicodeFromUtf8L( *iKey );
+ #else
+ HBufC* key = iKey->AllocL();
+ #endif
+
+ return key;
+ }
+ return KNullDesC().AllocL();
+ }
+
+
+// ---------------------------------------------------------------------------
+// Value getter
+// ---------------------------------------------------------------------------
+//
+HBufC* CCatalogsKeyValuePair::ValueLC() const
+ {
+ if ( iValue )
+ {
+ #ifdef _UNICODE
+ HBufC* value = CnvUtfConverter::ConvertToUnicodeFromUtf8L( *iValue );
+ CleanupStack::PushL( value );
+ #else
+ HBufC* value = iValue->AllocLC();
+ #endif
+
+ return value;
+ }
+
+ return KNullDesC().AllocLC();
+ }
+
+
+// ---------------------------------------------------------------------------
+// Value getter
+// ---------------------------------------------------------------------------
+//
+HBufC* CCatalogsKeyValuePair::ValueL() const
+ {
+ if ( iValue )
+ {
+ #ifdef _UNICODE
+ HBufC* value = CnvUtfConverter::ConvertToUnicodeFromUtf8L( *iValue );
+ #else
+ HBufC* value = iValue->AllocL();
+ #endif
+
+ return value;
+ }
+
+ return KNullDesC().AllocL();
+ }
+
+
+// ---------------------------------------------------------------------------
+// Matcher
+// ---------------------------------------------------------------------------
+//
+TBool CCatalogsKeyValuePair::MatchByKey( const CCatalogsKeyValuePair& aFirst,
+ const CCatalogsKeyValuePair& aSecond )
+ {
+ return ( aFirst.Key().Compare( aSecond.Key() ) == 0 );
+ }
+
+
+
+// ---------------------------------------------------------------------------
+// ExternalizeL
+// ---------------------------------------------------------------------------
+//
+void CCatalogsKeyValuePair::ExternalizeL( RWriteStream& aStream ) const
+ {
+ ExternalizeDesL( *iKey, aStream );
+ ExternalizeDesL( *iValue, aStream );
+ }
+
+// ---------------------------------------------------------------------------
+// Internalize
+// ---------------------------------------------------------------------------
+//
+void CCatalogsKeyValuePair::InternalizeL( RReadStream& aStream )
+ {
+ HBufC8* key = NULL;
+ InternalizeDesL( key, aStream );
+ CleanupStack::PushL( key );
+
+ HBufC8* value = NULL;
+ InternalizeDesL( value, aStream );
+
+ CleanupStack::Pop( key );
+ delete iKey;
+ iKey = key;
+
+ delete iValue;
+ iValue = value;
+ }