languageinterworkingfw/servicehandler/src/liwvariant.cpp
changeset 57 61b27eec6533
parent 45 7aa6007702af
--- a/languageinterworkingfw/servicehandler/src/liwvariant.cpp	Fri Apr 16 15:54:49 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1768 +0,0 @@
-/*
-* Copyright (c) 2003-2005 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "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 class TLiwVariant.
-*
-*/
-
-
-
-
-
-
-
-// INCLUDES
-#ifdef _DEBUG
-#include <e32svr.h>
-#endif
-#include "liwvariant.h"
-#include "liwgenericparam.h" 
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-using namespace LIW;
-namespace {
-
-// CONSTANTS
-/// TLiwVariant streaming version
-const TInt KVersion = 10;  // Version 1.0
-
-
-const TInt KBufSizeMid = 128;
-const TInt KBufSizeSmall = 64;
-const TInt KBufSizeLarge = 8192;
-
-   
-// Debug helpers
-#ifdef _DEBUG
-
-enum TPanicCode
-    {
-    EPanicPostCond_Constructor = 1,
-    EPanicPostCond_Reset,
-    EPanicPostCond_Set_TInt32,
-    EPanicPostCond_Set_TUid,
-    EPanicPostCond_Set_TTime,
-    EPanicPostCond_Set_TDesC,
-    EPanicPostCond_CopyL,
-    EPanicInvariant_InvalidDesCState,
-    EPanicPostCond_Set_TDesC8,
-    EPanicPreCond_DataSizeMismatch,
-    EPanicPostCond_Set_TBool,
-    EPanicPostCond_Set_TUint,
-    EPanicPostCond_Set_TReal,
-    EPanicPostCond_Set_TInt64
-    };
-
-void Panic(TPanicCode aCode)
-    {
-    _LIT(KPanicText, "TLiwVariant");
-    User::Panic(KPanicText, aCode);
-    }
-
-#endif  // #ifdef _DEBUG
-
-}  // namespace
- 
-_LIT8(KDummy, "Dummy"); // needed for BC-preserving hack to store info about ownership of container
-
-/*
- * class CLiwContainer, class CLiwIterable, class CLiwList, class CLiwMap,
- * class CLiwDefaultList, class CLiwDefaultMap
- */
-
-EXPORT_C void CLiwContainer::PushL() 
-    {
-    CleanupClosePushL(*this);
-    }
-
-EXPORT_C void CLiwContainer::ExternalizeL(RWriteStream&) const
-    {
-    User::Leave(KErrNotSupported);
-    }
-
-EXPORT_C TInt CLiwContainer::Size() const
-    {
-    return KErrNotSupported;
-    }
-
-EXPORT_C CLiwContainer::~CLiwContainer()
-    {
-   /*
-    * Since CLiwContainer is based on reference count mechanism, it does not go with CleanupStack::PushL()
-    *
-    * LIW takes care of managing the memory in heap for CLiwContainer using the reference count logic
-    * 
-    * The container should not be destroyed until the reference count is ZERO.
-    * If the reference count is not equal to ZERO, it means there are some more owners of that container
-    * 
-    * This panics if the reference count is not equal to ZERO, in DEBUG Mode only
-    *
-    * Hence it is recommended to use CleanupClosePushL for Container objects when using CleanupStack
-    */
-    
-    __ASSERT_DEBUG(iRefCount == 0, User::Panic(_L("E32USER-CBase: 33"), 1));
-    }
-
-EXPORT_C void CLiwContainer::Close()
-    {
-    DecRef();
-    }
-
-
-EXPORT_C TBool CLiwIterable::operator==(CLiwIterable& aOther)
-    {
-    if (this == &aOther)
-    return ETrue;
-
-    Reset();
-    aOther.Reset();
-
-    TBool rval = ETrue;
-    TLiwVariant variant1, variant2;
-
-    TRAPD(error, {
-    while (NextL(variant1)) 
-	    {
-	      if (!aOther.NextL(variant2) || (variant1 != variant2))
-	        rval = EFalse;
-	    }
-    });
-
-    if (rval && (error == KErrNone))
-        {
-        TRAP(error, (rval = !(aOther.NextL(variant2))));
-        }
-
-    variant1.Reset();
-    variant2.Reset();
-    
-    return (error == KErrNone) ? rval : EFalse;
-    }
-
-EXPORT_C TBool CLiwList::operator==(const CLiwList& aOther) const
-    {
-    TInt count = Count();
-    if (count != aOther.Count())
-    return EFalse;
-
-    TInt error = KErrNone;
-    TBool retval = ETrue;
-    TLiwVariant variant1, variant2;
-    for (TInt index = 0; index < count; index++) {
-    TRAP(error, {
-      AtL(index, variant1); aOther.AtL(index, variant2);
-    });
-    if ((error != KErrNone) || (!(variant1 == variant2)))
-        {
-        retval = EFalse;
-        break;
-        }
-    }
-    variant1.Reset();
-    variant2.Reset();
-    return retval;
-    }
-
-EXPORT_C TBool CLiwMap::operator==(const CLiwMap& aOther) const
-    {
-    TInt count = Count();
-    if (count != aOther.Count())
-    return EFalse;
-
-    TInt error = KErrNone;
-    TBool retval = ETrue;
-    TLiwVariant variant1, variant2;
-    TBuf8<KBufSizeMid> buf1, buf2;
-    for (TInt index = 0; index < count; index++)
-        {
-        TRAP(error, {
-          AtL(index, buf1); aOther.AtL(index, buf2);
-          retval = (FindL(buf1, variant1) && aOther.FindL(buf2, variant2));
-        });
-        if (error != KErrNone)
-          retval = EFalse;
-        if (!retval || (!(variant1 == variant2)))
-            {
-            retval = EFalse;
-            break;
-            }
-        }
-    variant1.Reset();
-    variant2.Reset();
-    return retval;
-    }
-
-EXPORT_C CLiwDefaultList* CLiwDefaultList::NewL()
-    {
-    CLiwGenericParamList* gl = CLiwGenericParamList::NewLC();
-    CLiwDefaultList* tempList = new (ELeave) CLiwDefaultList(gl);
-    CleanupStack::Pop(gl); // gl
-    return tempList;
-    }
-
-EXPORT_C CLiwDefaultList* CLiwDefaultList::NewLC()
-    {
-    CLiwGenericParamList* gl = CLiwGenericParamList::NewLC();
-    CLiwDefaultList* tempList = new (ELeave) CLiwDefaultList(gl);
-    CleanupStack::Pop(gl); // gl
-    CleanupClosePushL(*tempList);
-    return tempList;
-    }
-
-EXPORT_C CLiwDefaultList* CLiwDefaultList::NewLC(RReadStream& aStream)
-    {
-    CLiwDefaultList* tempList = CLiwDefaultList::NewL();
-    CleanupClosePushL(*tempList);
-    tempList->iList->InternalizeL(aStream);
-    return tempList;
-    }
-
-EXPORT_C void CLiwDefaultList::AppendL(const TLiwVariant& aValue)
-    {
-    iList->AppendL(TLiwGenericParam(EGenericParamUnspecified, aValue));
-    }
-
-EXPORT_C TBool CLiwDefaultList::AtL(TInt aIndex, TLiwVariant& aValue) const
-    {
-    if(0 <= aIndex && aIndex < iList->Count())
-        {
-        aValue.SetL((*iList)[aIndex].Value());
-        return ETrue;   
-        }
-    else
-        {
-        return EFalse;    
-        }
-    }
-
-EXPORT_C void CLiwDefaultList::Remove(TInt aIndex)
-    {
-    if(0 <= aIndex && aIndex < iList->Count())
-        {
-        iList->iParameters[aIndex].Destroy();
-        iList->iParameters.Remove(aIndex);   
-        }
-    }
-
-EXPORT_C TInt CLiwDefaultList::Count() const
-    {
-    return iList->Count();
-    }
-
-EXPORT_C void CLiwDefaultList::ExternalizeL(RWriteStream& aStream) const
-    {
-    iList->ExternalizeL(aStream);
-    }
-
-EXPORT_C TInt CLiwDefaultList::Size() const
-    {
-    return iList->Size();
-    }
-
-EXPORT_C CLiwDefaultList::~CLiwDefaultList()
-    {
-    delete iList;
-    }
-
-EXPORT_C CLiwDefaultMap* CLiwDefaultMap::NewL()
-    {
-    CLiwGenericParamList* gl = CLiwGenericParamList::NewLC();
-    CLiwDefaultMap* tempMap = new (ELeave) CLiwDefaultMap(gl);
-    CleanupStack::Pop(gl); // gl
-    return tempMap;
-    }
-
-EXPORT_C CLiwDefaultMap* CLiwDefaultMap::NewLC()
-    {
-    CLiwGenericParamList* gl = CLiwGenericParamList::NewLC();
-    CLiwDefaultMap* tempMap = new (ELeave) CLiwDefaultMap(gl);
-    CleanupStack::Pop(gl); // gl
-    CleanupClosePushL(*tempMap);
-    return tempMap;
-    }
-
-EXPORT_C CLiwDefaultMap* CLiwDefaultMap::NewLC(RReadStream& aStream)
-    {
-    CLiwDefaultMap* tempMap = CLiwDefaultMap::NewL();
-    CleanupClosePushL(*tempMap);
-    tempMap->iMap->InternalizeL(aStream);
-    return tempMap;
-    }
-
-EXPORT_C void CLiwDefaultMap::InsertL(const TDesC8& aKey, const TLiwVariant& aValue)
-    {
-    Remove(aKey);
-    TLiwGenericParam mp;
-    mp.SetNameAndValueL(aKey, aValue);
-    iMap->AppendL(mp);
-    mp.Reset();
-    }
-
-EXPORT_C TBool CLiwDefaultMap::FindL(const TDesC8& aKey, TLiwVariant& aValue) const
-    {
-    TInt pos = 0;
-    const TLiwGenericParam* tempParam = iMap->FindFirst(pos, aKey);
-    if (tempParam)
-        {
-        aValue.SetL(tempParam->Value());
-        return ETrue;
-        }
-    else
-        return EFalse;
-    }
-
-EXPORT_C TInt CLiwDefaultMap::Count() const
-    {
-    return iMap->Count();
-    }
-
-EXPORT_C TBool CLiwDefaultMap::AtL(TInt aIndex, TDes8& aKey) const
-    {
-    if(0 <= aIndex && aIndex < iMap->Count())
-        {
-        aKey = ((*iMap)[aIndex]).Name();
-        return ETrue;   
-        }
-    else
-        {
-        return EFalse;  
-        }
-    }
-
-EXPORT_C const TDesC8& CLiwDefaultMap::AtL(TInt aIndex) const
-    {
-    if(0 <= aIndex && aIndex < iMap->Count())
-        {
-        return ((*iMap)[aIndex]).Name();
-        }
-    else
-        {
-        User::LeaveIfError(KErrArgument);  
-        return KNullDesC8;
-        }
-    }
-
-EXPORT_C void CLiwDefaultMap::Remove(const TDesC8& aKey)
-    {
-    TInt pos = 0;
-    iMap->FindFirst(pos, aKey);
-    if (pos != KErrNotFound)
-        {
-        iMap->iParameters[pos].Destroy();
-        iMap->iParameters.Remove(pos);
-        }
-    }
-
-EXPORT_C void CLiwDefaultMap::ExternalizeL(RWriteStream& aStream) const
-    {
-    iMap->ExternalizeL(aStream);
-    }
-
-EXPORT_C TInt CLiwDefaultMap::Size() const
-    {
-    return iMap->Size();
-    }
-
-EXPORT_C CLiwDefaultMap::~CLiwDefaultMap()
-    {
-    delete iMap;
-    }
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-#ifdef _DEBUG
-void TLiwVariant::__DbgTestInvariant() const
-    {
-    if (iTypeId==EVariantTypeDesC && iData.iBufC)
-        {
-        __ASSERT_ALWAYS(iData.iBufC->Ptr() == iPtrC.Ptr(), 
-            Panic(EPanicInvariant_InvalidDesCState));
-        
-        }
-    }
-#endif  // #ifdef _DEBUG
-
-
-EXPORT_C void TLiwVariant::PushL()
-    {
-    CleanupStack::PushL( TCleanupItem( TLiwVariant::VariantCleanup , this) );
-    }
-
-EXPORT_C void TLiwVariant::VariantCleanup( TAny* aObj )
-    {
-    static_cast<TLiwVariant*>(aObj)->Destroy();
-    }
-
-inline void TLiwVariant::SInt64::InternalizeL(RReadStream& aStream)
-    {
-    TInt32 low = aStream.ReadInt32L();
-    iHigh = aStream.ReadInt32L();
-    iLow = low;
-    }
-
-inline void TLiwVariant::SInt64::ExternalizeL(RWriteStream& aStream) const
-    {
-    aStream.WriteInt32L(iLow);
-    aStream.WriteInt32L(iHigh);
-    }
-
-inline void TLiwVariant::SInt64::Set(const TInt64& aTInt64)
-    {
-    iLow = I64LOW(aTInt64);
-    iHigh = I64HIGH(aTInt64);
-    }
-
-inline TLiwVariant::SInt64::operator TInt64() const
-    {
-    return MAKE_TINT64(iHigh,iLow);
-    }
-
-inline TBool TLiwVariant::SInt64::operator==(const SInt64& aRhs) const
-    {
-    return (iHigh==aRhs.iHigh && iLow==aRhs.iLow);
-    }
-
-
-EXPORT_C TLiwVariant::TLiwVariant(const TLiwVariant& aSrc) :
-    iTypeId(aSrc.iTypeId), iData(aSrc.iData), iPtrC(), iPtrC8()
-    {
-    if (iTypeId == EVariantTypeDesC)
-        {
-        iPtrC.Set(aSrc.iPtrC);
-        // Do not take ownership of data
-        iData.iBufC = NULL;
-        }
-    else if ( iTypeId == EVariantTypeDesC8 )
-        {
-        iPtrC8.Set( aSrc.iPtrC8 );
-        // Do not take ownership of data
-        iData.iBufC8 = NULL;
-        }
-    }
-
-EXPORT_C TLiwVariant& TLiwVariant::operator=(const TLiwVariant& aSrc)
-    {
-    // Check self-assignment first.
-    if (this == &aSrc)
-        {
-        return *this;
-        }
-    Reset(); 
-    iTypeId = aSrc.iTypeId;
-    iData = aSrc.iData;
-    if (iTypeId == EVariantTypeDesC)
-        {
-        iPtrC.Set(aSrc.iPtrC);
-        // Do not take ownership of data
-        iData.iBufC = NULL;
-        }
-    else if ( iTypeId == EVariantTypeDesC8 )
-        {
-        iPtrC8.Set( aSrc.iPtrC8 );
-        // Do not take ownership of data
-        iData.iBufC8 = NULL;
-        }
-    return *this;
-    }
-
-EXPORT_C TBool TLiwVariant::Get(TInt32& aValue) const
-    {
-    __TEST_INVARIANT;
-    if (iTypeId == EVariantTypeTInt32)
-        {
-        aValue = iData.iInt32;
-        return ETrue;
-        }
-    else if (iTypeId == EVariantTypeTReal)
-	    {
-	    aValue = (TInt32)iData.iReal;
-	    return ETrue;
-	    }
-	else if (iTypeId == EVariantTypeDesC8)  //string to real conversion
-		{
-		TLex8 parseString(iPtrC8);
-		TInt err = parseString.Val(aValue);
-		if(err == KErrNone)
-			return ETrue;
-		}
-	else if (iTypeId == EVariantTypeDesC)  //string to real conversion
-		{
-		TLex16 parseString(iPtrC);
-		TInt err = parseString.Val(aValue);
-		if(err == KErrNone)
-			return ETrue;		
-		}
-	else if (iTypeId == EVariantTypeTUint) //TUint to int conversion
-	    {
-	    aValue = (TInt32)iData.iUint;
-	    return ETrue;
-	    }
-	else if (iTypeId == EVariantTypeTInt64) //TInt64 to TInt32 conversion
-	    {
-	    aValue = (TInt32)iData.iLong; //Warning : Results in loss of data sometimes
-	    return ETrue;
-	    }
-	return EFalse;
-    }
-    
-EXPORT_C TBool TLiwVariant::Get(TInt64& aValue) const
-    {
-    __TEST_INVARIANT;
-    if (iTypeId == EVariantTypeTInt64)
-        {
-        aValue = iData.iLong;
-        return ETrue;
-        }
-    else if (iTypeId == EVariantTypeTInt32)
-        {
-        aValue = iData.iInt32;
-        return ETrue;
-        }
-    else if (iTypeId == EVariantTypeTReal)
-	    {
-	    aValue = (TInt32)iData.iReal;
-	    return ETrue;
-	    }
-	else if (iTypeId == EVariantTypeDesC8)  //string to real conversion
-		{
-		TLex8 parseString(iPtrC8);
-		TInt err = parseString.Val(aValue);
-		if(err == KErrNone)
-			return ETrue;
-		}
-	else if (iTypeId == EVariantTypeDesC)  //string to real conversion
-		{
-		TLex16 parseString(iPtrC);
-		TInt err = parseString.Val(aValue);
-		if(err == KErrNone)
-			return ETrue;		
-		}
-	else if (iTypeId == EVariantTypeTUint) //TUint to int conversion
-	    {
-	    aValue = (TInt32)iData.iUint;
-	    return ETrue;
-	    }
-    return EFalse;
-    }
-    
-EXPORT_C TBool TLiwVariant::Get(TReal& aValue) const
-    {
-    __TEST_INVARIANT;
-    if (iTypeId == EVariantTypeTReal)
-        {
-        aValue = iData.iReal;
-        return ETrue;
-        }
-    else if(iTypeId == EVariantTypeTInt32)
-    	{
-    	aValue = iData.iInt32;
-    	return ETrue;
-    	}
-    else if (iTypeId == EVariantTypeDesC8)  //string to integer conversion
-		{
-		TLex8 parseString(iPtrC8);
-		TInt err = parseString.Val(aValue);
-		if(err == KErrNone)
-			return ETrue;		
-		}
-	else if (iTypeId == EVariantTypeDesC)  //string to integer conversion
-		{
-		TLex16 parseString(iPtrC);
-		TInt err = parseString.Val(aValue);
-		if(err == KErrNone)
-			return ETrue;		
-		}
-	else if (iTypeId == EVariantTypeTUint) //TUint to real conversion
-	    {
-	    aValue = iData.iUint;
-	    return ETrue;
-	    }
-    else if(iTypeId == EVariantTypeTInt64)
-    	{
-    	aValue = iData.iLong; //Warning : Results in loss of data
-    	return ETrue;
-    	}
-    return EFalse;
-    }
-EXPORT_C TBool TLiwVariant::Get(TBool& aValue) const
-    {
-    __TEST_INVARIANT;
-    if (iTypeId == EVariantTypeTBool)
-        {
-        aValue = iData.iBool;
-        return ETrue;
-        }
-    return EFalse;
-    }
-    
-EXPORT_C TBool TLiwVariant::Get(TUint& aValue) const
-    {
-    __TEST_INVARIANT;
-    if (iTypeId == EVariantTypeTUint)
-        {
-        aValue = iData.iUint;
-        return ETrue;
-        }        
-    else if (iTypeId == EVariantTypeTReal) //real to TUint conversion
-        {
-        aValue = static_cast<TUint>(iData.iReal);
-        return ETrue;
-        }
-    else if(iTypeId == EVariantTypeTInt32) // TInt32 to TUint conversion
-    	{
-        aValue = static_cast<TUint>(iData.iInt32);
-    	return ETrue;
-    	}
-    else if (iTypeId == EVariantTypeDesC8)  //desc8 to TUint conversion
-		{
-		TLex8 parseString(iPtrC8);
-		TInt err = parseString.Val(aValue);
-		if(err == KErrNone)
-			return ETrue;		
-		}
-	else if (iTypeId == EVariantTypeDesC)  //desc16 to TUint conversion
-		{
-		TLex16 parseString(iPtrC);
-		TInt err = parseString.Val(aValue);
-		if(err == KErrNone)
-        return ETrue;
-        }
-    else if(iTypeId == EVariantTypeTInt64) // TInt32 to TUint conversion
-    	{
-        aValue = static_cast<TUint>(iData.iLong); //Warning : Results in loss of data
-    	return ETrue;
-    	}
-    return EFalse;
-    }
-
-EXPORT_C TBool TLiwVariant::Get(TUid& aValue) const
-    {
-    __TEST_INVARIANT;
-    if (iTypeId == EVariantTypeTUid)
-        {
-        aValue = TUid::Uid(iData.iInt32);
-        return ETrue;
-        }
-    return EFalse;
-    }
-
-EXPORT_C TBool TLiwVariant::Get(TPtrC& aValue) const
-    {
-    __TEST_INVARIANT;
-    if (iTypeId == EVariantTypeDesC)
-        {
-        aValue.Set(iPtrC);
-        return ETrue;
-        }
-    return EFalse;
-    }
-
-EXPORT_C TBool TLiwVariant::Get(TTime& aValue) const
-    {
-    __TEST_INVARIANT;
-    if (iTypeId == EVariantTypeTTime)
-        {
-        aValue = TTime(iData.iInt64);
-        return ETrue;
-        }
-    return EFalse;
-    }
-
-
-EXPORT_C TBool TLiwVariant::Get(TPtrC8& aValue) const
-    {
-     __TEST_INVARIANT;  
-    if (iTypeId == EVariantTypeDesC8)
-        {
-        aValue.Set(iPtrC8);
-        return ETrue;
-        }   
-
-    return EFalse;
-    }
-
-EXPORT_C TBool TLiwVariant::Get(TDes& aValue) const
-    {
-     __TEST_INVARIANT;  
-    if (iTypeId == EVariantTypeDesC)
-        {
-        aValue.Copy(iPtrC);
-        return ETrue;
-        }   
-	else if (iTypeId == EVariantTypeDesC8)
-        {
-        aValue.Copy(iPtrC8);
-        return ETrue;
-        }   
-	else if (iTypeId == EVariantTypeTReal) //real to TDes conversion
-        {
-        const TRealFormat realFormat;
-        aValue.Num(iData.iReal,realFormat);
-        return ETrue;
-        }
-    else if(iTypeId == EVariantTypeTInt32) // TInt32 to TDes conversion
-    	{
-    	aValue.Num(iData.iInt32);
-    	return ETrue;
-    	}
-    else if(iTypeId == EVariantTypeTUint) // TInt32 to TDes conversion
-    	{
-    	aValue.Num(iData.iUint,EDecimal);
-    	return ETrue;
-    	}
-    else if(iTypeId == EVariantTypeTInt64) // TInt32 to TDes conversion
-    	{
-    	aValue.Num(iData.iLong);
-    	return ETrue;
-    	}
-    return EFalse;
-    }
-
-
-EXPORT_C TBool TLiwVariant::Get(TDes8& aValue) const
-    {
-     __TEST_INVARIANT;  
-    if (iTypeId == EVariantTypeDesC8)
-        {
-        aValue.Copy(iPtrC8);
-        return ETrue;
-        }   
-	else if (iTypeId == EVariantTypeDesC)
-        {
-        aValue.Copy(iPtrC);
-        return ETrue;
-        }   
-	else if (iTypeId == EVariantTypeTReal) //real to TDes8 conversion
-        {
-        const TRealFormat realFormat;
-        aValue.Num(iData.iReal,realFormat);
-        return ETrue;
-        }
-   else if(iTypeId == EVariantTypeTInt32) // TInt32 to TDes8 conversion
-    	{
-    	aValue.Num(iData.iInt32);
-    	return ETrue;
-    	}
-    else if(iTypeId == EVariantTypeTUint) // TInt32 to TDes conversion
-    	{
-    	aValue.Num(iData.iUint,EDecimal);
-    	return ETrue;
-    	}
-    else if(iTypeId == EVariantTypeTInt64) // TInt32 to TDes8 conversion
-    	{
-    	aValue.Num(iData.iLong);
-    	return ETrue;
-    	}
-    return EFalse;
-    }
-
-
-EXPORT_C TBool TLiwVariant::Get(RFile& aValue) const
-    {
-    __TEST_INVARIANT;
-    if (iTypeId == EVariantTypeFileHandle)
-        {
-        aValue = *((RFile*)&iData.iInt64);      
-        return ETrue;
-        }
-
-    return EFalse;
-    }
-
-EXPORT_C TBool TLiwVariant::Get(CLiwList& aValue) const
-    {
-    __TEST_INVARIANT;
-    if (iTypeId == EVariantTypeList)
-        {
-        TInt pos = 0;
-        TLiwVariant tempVarient;
-        tempVarient.PushL();
-        // Overwrite the list
-        if(0 != aValue.Count())
-            {
-            // make the list Empty
-            for (pos = aValue.Count() - 1; pos >= 0 ; pos--)
-                aValue.Remove(pos);
-            }
-        // Copy List varient by varient
-        for (pos = 0; pos < iData.iList->Count(); pos++)
-            {
-            iData.iList->AtL(pos, tempVarient);
-            aValue.AppendL(tempVarient);
-            }
-        CleanupStack::Pop(&tempVarient);
-    	tempVarient.Reset();
-        return ETrue;
-        }
-
-    return EFalse;
-    }
-    
-EXPORT_C TBool TLiwVariant::Get(CLiwMap& aValue) const
-    {
-    __TEST_INVARIANT;
-    if (iTypeId == EVariantTypeMap)
-        {
-        TInt pos = 0;
-        TLiwVariant tempVarient;
-        tempVarient.PushL();
-        // Overwrite the Map
-        if(0 != aValue.Count())
-            {
-            // make the Map Empty
-            for (pos = aValue.Count() - 1; pos >= 0 ; pos--)
-                {
-                TBuf8<KBufSizeSmall> mapKey;
-                aValue.AtL(pos, mapKey);
-                aValue.Remove(mapKey);
-                }
-            }
-        // Copy Map varient by varient
-        for (pos = 0; pos < iData.iMap->Count(); pos++)
-            {
-            TBuf8<KBufSizeSmall> mapKey;
-            iData.iMap->AtL(pos, mapKey);
-            iData.iMap->FindL(mapKey, tempVarient);
-            aValue.InsertL(mapKey, tempVarient);
-            }
-        CleanupStack::Pop(&tempVarient);
-    	tempVarient.Reset();      
-        return ETrue;
-        }
-
-    return EFalse;
-    }
-EXPORT_C TReal TLiwVariant::AsTReal() const
-    {
-    TReal value = 0;
-    Get(value);
-    return value;
-    }   
-    
-EXPORT_C TInt32 TLiwVariant::AsTInt32() const
-    {
-    TInt32 value = 0;
-    Get(value);
-    return value;
-    }   
-
-EXPORT_C TInt64 TLiwVariant::AsTInt64() const
-    {
-    TInt64 value = 0;
-    Get(value);
-    return value;
-    }   
-
-EXPORT_C CLiwBuffer* TLiwVariant::AsBuffer() const
-    {
-    __TEST_INVARIANT;
-    if (iTypeId == EVariantTypeBuffer)
-    	{
-	    return iData.iBuffer;
-    	}    
-    	
-    return NULL;	
-    }   
-    
-EXPORT_C TBool TLiwVariant::AsTBool() const
-    {
-    TBool value = 0;
-    Get(value);
-    return value;
-    }   
-
-EXPORT_C TBool TLiwVariant::AsTUint() const
-    {
-    TUint value = 0;
-    Get(value);
-    return value;
-    } 
-
-EXPORT_C TUid TLiwVariant::AsTUid() const
-    {
-    __TEST_INVARIANT;
-    TUid value = {0};
-    Get(value);
-    return value;
-    }
-
-EXPORT_C TPtrC TLiwVariant::AsDes() const
-    {
-    __TEST_INVARIANT;
-    TPtrC value;
-    Get(value);
-    return value;
-    }
-
-EXPORT_C TTime TLiwVariant::AsTTime() const
-    {
-    __TEST_INVARIANT;
-    TTime value(Time::NullTTime());
-    Get(value);
-    return value;
-    }
-
-
-EXPORT_C TPtrC8 TLiwVariant::AsData() const
-    {
-     __TEST_INVARIANT;
-    TPtrC8 value;
-    Get(value);
-    return value;
-    }
-
-
-EXPORT_C RFile TLiwVariant::AsFileHandle() const
-    {
-    __TEST_INVARIANT;
-    RFile value;
-    Get(value);
-    return value;
-    }
-
-EXPORT_C const CLiwList* TLiwVariant::AsList() const
-    {
-    __TEST_INVARIANT;
-    return (iTypeId == EVariantTypeList) ? iData.iList : NULL;
-    }
-
-EXPORT_C const CLiwMap* TLiwVariant::AsMap() const
-   {
-   __TEST_INVARIANT;
-   return (iTypeId == EVariantTypeMap) ? iData.iMap : NULL;
-   }
-
-EXPORT_C MLiwInterface* TLiwVariant::AsInterface() const
-   {
-   __TEST_INVARIANT;
-   return (iTypeId == EVariantTypeInterface) ? iData.iSession : NULL;
-   }
-
-EXPORT_C CLiwIterable* TLiwVariant::AsIterable() const
-    {
-    __TEST_INVARIANT;
-    return (iTypeId == EVariantTypeIterable) ? iData.iIterable : NULL;
-    }
-
-EXPORT_C void TLiwVariant::Reset()
-    {
-    __TEST_INVARIANT;
-
-    if (iTypeId == EVariantTypeDesC)
-        {
-        // Delete any owned buffer
-        delete iData.iBufC;
-        iData.iBufC = NULL;
-        }
-    else if (iTypeId == EVariantTypeDesC8)
-        {
-        delete iData.iBufC8;
-        iData.iBufC8 = NULL;
-        }       
-    else if (iTypeId == EVariantTypeList)
-        {
-        if (iPtrC8.Compare(KDummy) == 0)
-            {
-            iData.iList->DecRef();
-            iData.iList = NULL;
-            iPtrC8.Set(TPtrC8());
-            }
-        }   
-    else if (iTypeId == EVariantTypeMap)
-        {
-        if (iPtrC8.Compare(KDummy) == 0)
-            {
-            iData.iMap->DecRef();
-            iData.iMap = NULL;
-            iPtrC8.Set(TPtrC8());
-            }
-        }   
-    else if (iTypeId == EVariantTypeIterable)
-        {
-        if (iPtrC8.Compare(KDummy) == 0)
-            {
-            iData.iIterable->DecRef();
-            iData.iIterable = NULL;
-            iPtrC8.Set(TPtrC8());
-            }
-        }
-	else if (iTypeId == EVariantTypeBuffer)
-        {
-        if (iPtrC8.Compare(KDummy) == 0)
-            {
-            iData.iBuffer->DecRef();
-            iData.iBuffer = NULL;
-            iPtrC8.Set(TPtrC8());
-            }
-        }        
-    // No need to clear other data, because Get methods wont't do anything if type
-    // is Null.
-    iTypeId = EVariantTypeNull;
-
-    __ASSERT_DEBUG(IsEmpty(), Panic(EPanicPostCond_Reset));
-    __TEST_INVARIANT;
-    }
-
-EXPORT_C void TLiwVariant::Set(TInt32 aValue)
-    {
-    __TEST_INVARIANT;
-    
-    Reset();
-    iTypeId = EVariantTypeTInt32;
-    iData.iInt32 = aValue;
-    
-    __ASSERT_DEBUG(this->AsTInt32()==aValue, Panic(EPanicPostCond_Set_TInt32));
-    __TEST_INVARIANT;
-    }
-
-EXPORT_C void TLiwVariant::Set(TInt64 aValue)
-    {
-    __TEST_INVARIANT;
-    
-    Reset();
-    iTypeId = EVariantTypeTInt64;
-    iData.iLong = aValue;
-    
-    __ASSERT_DEBUG(this->AsTInt64()==aValue, Panic(EPanicPostCond_Set_TInt64));
-    __TEST_INVARIANT;
-    }
-
-EXPORT_C void TLiwVariant::Set(TReal aValue)
-    {
-    __TEST_INVARIANT;
-    
-    Reset();
-    iTypeId = EVariantTypeTReal;
-    iData.iReal = aValue;
-    
-    __ASSERT_DEBUG(this->AsTReal()==aValue, Panic(EPanicPostCond_Set_TReal));
-    __TEST_INVARIANT;
-    }
-EXPORT_C void TLiwVariant::Set(const CLiwBuffer* aValue)
-    {
-    __TEST_INVARIANT;
-    
-    Reset();
-    iTypeId = EVariantTypeBuffer;
-    iData.iBuffer = (CLiwBuffer*)aValue;
-    
-    __TEST_INVARIANT;
-    }
-
-EXPORT_C void TLiwVariant::Set(TBool aValue)
-    {
-    __TEST_INVARIANT;
-    
-    Reset();
-    iTypeId = EVariantTypeTBool;
-    iData.iBool = aValue;
-    
-    __ASSERT_DEBUG(this->AsTBool()==aValue, Panic(EPanicPostCond_Set_TBool));
-    __TEST_INVARIANT;
-    }
-
-EXPORT_C void TLiwVariant::Set(TUint aValue)
-    {
-    __TEST_INVARIANT;
-    
-    Reset();
-    iTypeId = EVariantTypeTUint;
-    iData.iUint = aValue;
-    
-    __ASSERT_DEBUG(this->AsTUint()==aValue, Panic(EPanicPostCond_Set_TUint));
-    __TEST_INVARIANT;
-    }
-
-EXPORT_C void TLiwVariant::Set(const TUid& aValue)
-    {
-    __TEST_INVARIANT;
-    
-    Reset();
-    iTypeId = EVariantTypeTUid;
-    iData.iInt32 = aValue.iUid;
-    
-    __ASSERT_DEBUG(this->AsTUid()==aValue, Panic(EPanicPostCond_Set_TUid));
-    __TEST_INVARIANT;
-    }
-
-EXPORT_C void TLiwVariant::Set(const TTime& aValue)
-    {
-    __TEST_INVARIANT;
-    
-    Reset();
-    iTypeId = EVariantTypeTTime;
-    iData.iInt64.Set(aValue.Int64());
-    
-    __ASSERT_DEBUG(this->AsTTime()==aValue, Panic(EPanicPostCond_Set_TTime));
-    __TEST_INVARIANT;
-    }
-
-EXPORT_C void TLiwVariant::Set(const TDesC& aValue)
-    {
-    __TEST_INVARIANT;
-
-    Reset();
-    iTypeId = EVariantTypeDesC;
-    iData.iBufC = NULL;  // not owned
-    iPtrC.Set(aValue);
-
-    __ASSERT_DEBUG(this->AsDes()==aValue, Panic(EPanicPostCond_Set_TDesC));
-    __TEST_INVARIANT;
-    }
-
-
-
-EXPORT_C void TLiwVariant::Set(const TDesC8& aValue)
-    {
-   __TEST_INVARIANT;
-
-    Reset();
-    iTypeId = EVariantTypeDesC8;
-    iData.iBufC8 = NULL;  // not owned
-    iPtrC8.Set(aValue);
-
-    __ASSERT_DEBUG(this->AsData()==aValue, Panic(EPanicPostCond_Set_TDesC));
-    __TEST_INVARIANT;
-    }
-
-
-
-EXPORT_C void TLiwVariant::Set(const RFile& aValue)
-    {
-    __TEST_INVARIANT;
-    __ASSERT_DEBUG(sizeof(SInt64) == sizeof(RFile), Panic(EPanicPreCond_DataSizeMismatch));
-
-    Reset();
-    iTypeId = EVariantTypeFileHandle;
-    *((RFile*)&iData.iInt64) = aValue;
-
-    __TEST_INVARIANT;
-    }
-
-EXPORT_C void TLiwVariant::Set(const CLiwList* aValue)
-    {
-    __TEST_INVARIANT;
-
-    Reset();
-    iTypeId = EVariantTypeList;
-    iData.iList = (CLiwList*)aValue;
-
-    __TEST_INVARIANT;
-    }
-
-EXPORT_C void TLiwVariant::Set(const CLiwMap* aValue)
-    {
-    __TEST_INVARIANT;
-
-    Reset();
-    iTypeId = EVariantTypeMap;
-    iData.iMap = (CLiwMap*)aValue;
-
-    __TEST_INVARIANT;
-    }
-
-EXPORT_C void TLiwVariant::Set(const MLiwInterface* aValue)
-    {
-    __TEST_INVARIANT;
-
-    Reset();
-    iTypeId = EVariantTypeInterface;
-    iData.iSession = (MLiwInterface*)aValue;
-
-    __TEST_INVARIANT;
-    }
-
-EXPORT_C void TLiwVariant::Set(const CLiwIterable* aValue)
-    {
-    __TEST_INVARIANT;
-
-    Reset();
-    iTypeId = EVariantTypeIterable;
-    iData.iIterable = (CLiwIterable*)aValue;
-
-    __TEST_INVARIANT;
-    }
-    
-EXPORT_C void TLiwVariant::SetL(const TLiwVariant& aValue)
-    {
-    __TEST_INVARIANT;
-
-    if (aValue.iTypeId == EVariantTypeDesC)
-        {
-        // Take an own copy of the string value
-        HBufC* buf = aValue.iPtrC.AllocL();
-        Reset();
-        iTypeId = EVariantTypeDesC;
-        iData.iBufC = buf;
-        iPtrC.Set(*iData.iBufC);
-        }
-    else if (aValue.iTypeId == EVariantTypeDesC8)
-        {
-        // Take an own copy of the data
-        HBufC8* buf = aValue.iPtrC8.AllocL();
-        Reset();
-        iTypeId = EVariantTypeDesC8;
-        iData.iBufC8 = buf;
-        iPtrC8.Set(*iData.iBufC8);
-        }
-    else if (aValue.iTypeId == EVariantTypeList)
-        {
-        // Take an own copy of the data by increasing the reference count
-        Reset();
-        iTypeId = EVariantTypeList;
-        iData.iList = aValue.iData.iList;
-        iData.iList->IncRef();
-        iPtrC8.Set(KDummy);  // hack: mark owned
-        }
-    else if (aValue.iTypeId == EVariantTypeMap) 
-        {
-        // Take an own copy of the data by increasing the reference count
-        Reset();
-        iTypeId = EVariantTypeMap;
-        iData.iMap = aValue.iData.iMap;
-        iData.iMap->IncRef();
-        iPtrC8.Set(KDummy);  // hack: mark owned
-        }
-    else if (aValue.iTypeId == EVariantTypeIterable) 
-        {
-        // Take an own copy of the data by increasing the reference count
-        Reset();
-        iTypeId = EVariantTypeIterable;
-        iData.iIterable = aValue.iData.iIterable;
-        iData.iIterable->IncRef();
-        iPtrC8.Set(KDummy);  // hack: mark owned
-        }
-	else if (aValue.iTypeId == EVariantTypeBuffer) 
-        {
-        Reset();
-        iTypeId = EVariantTypeBuffer;
-        iData.iBuffer = aValue.iData.iBuffer;
-       	iData.iBuffer->IncRef();
-        iPtrC8.Set(KDummy);  // hack: mark owned
-        }        
-    else
-        {
-        Reset();
-        iTypeId = aValue.iTypeId;
-        // Copy the data union as one block
-        iData = aValue.iData;
-        }
-
-    //__ASSERT_DEBUG(*this == aValue, Panic(EPanicPostCond_CopyL));
-    __TEST_INVARIANT;
-    }
-
-void TLiwVariant::Destroy()
-    {
-    __TEST_INVARIANT;
-
-    if (iTypeId == EVariantTypeDesC)
-        {
-        // Delete any owned buffer
-        delete iData.iBufC;
-        iData.iBufC = NULL;
-        }
-    else if (iTypeId == EVariantTypeDesC8)
-        {
-        delete iData.iBufC8;
-        iData.iBufC8 = NULL;
-        }
-    else if (iTypeId == EVariantTypeList)
-        {
-        if (iPtrC8.Compare(KDummy) == 0)
-            {
-            iData.iList->DecRef();
-            iData.iList = NULL;
-            iPtrC8.Set(TPtrC8());
-            }
-        }
-    else if (iTypeId == EVariantTypeMap) 
-        {
-        if (iPtrC8.Compare(KDummy) == 0)
-            {
-            iData.iMap->DecRef();
-            iData.iMap = NULL;
-            iPtrC8.Set(TPtrC8());
-            }
-        }
-    else if (iTypeId == EVariantTypeIterable)  
-        {
-        if (iPtrC8.Compare(KDummy) == 0)
-            {
-            iData.iIterable->DecRef();
-            iData.iIterable = NULL;
-            iPtrC8.Set(TPtrC8());
-            }
-        }
-    else if (iTypeId == EVariantTypeBuffer)  
-        {
-        if (iPtrC8.Compare(KDummy) == 0)
-            {
-            iData.iBuffer->DecRef();
-            iData.iBuffer = NULL;
-            iPtrC8.Set(TPtrC8());
-            }
-        }
-    }
-
-void TLiwVariant::InternalizeL(RReadStream& aStream)
-    {
-    __TEST_INVARIANT;
-        
-    aStream.ReadInt8L(); // version
-    // if older version adapt to changes (who knows if
-    // parameters would be also persistent...)
-
-    const TUint8 typeId = aStream.ReadUint8L();
-    switch (typeId)
-        {
-        case EVariantTypeNull:
-            {
-            Reset();
-            break;
-            }
-        case EVariantTypeTInt32:  // FALLTHROUGH
-        case EVariantTypeTUid:
-        case EVariantTypeTBool:
-        case EVariantTypeTUint:
-            {
-            TInt32 value = aStream.ReadInt32L();
-            Reset();
-            iTypeId = typeId;
-            iData.iInt32 = value;
-            break;
-            }
-        case EVariantTypeTInt64:
-            {
-            TInt64 value = aStream.ReadReal64L();
-            Reset();
-            iTypeId = typeId;
-            iData.iLong = value;
-            break;
-            }
-        case EVariantTypeFileHandle: // FALLTHROUGH
-        case EVariantTypeTTime:
-        case EVariantTypeTReal:
-            {
-            SInt64 value;
-            value.InternalizeL(aStream);
-            Reset();
-            iTypeId = typeId;
-            iData.iInt64 = value;
-            break;
-            }
-        case EVariantTypeDesC:
-            {
-            const TInt len = aStream.ReadInt32L();
-            HBufC* buf = HBufC::NewL(aStream,len);
-            Reset();
-            iTypeId = typeId;
-            iData.iBufC = buf;
-            iPtrC.Set(*iData.iBufC);
-            break;
-            }
-        case EVariantTypeDesC8:
-            {
-            const TInt len = aStream.ReadInt32L();
-            HBufC8* buf = HBufC8::NewL(aStream,len);
-            Reset();
-            iTypeId = typeId;
-            iData.iBufC8 = buf;
-            iPtrC8.Set(*iData.iBufC8);
-            break;
-            }
-        case EVariantTypeList:  
-            {
-            CLiwList* list = CLiwDefaultList::NewLC(aStream);
-            Reset();
-            iTypeId = EVariantTypeList;
-            iData.iList = list;
-            iPtrC8.Set(KDummy);  // hack: mark owned
-            CleanupStack::Pop(list); // list
-            break;
-            }
-        case EVariantTypeMap:  
-            {
-            CLiwMap* map = CLiwDefaultMap::NewLC(aStream);
-            Reset();
-            iTypeId = EVariantTypeMap;
-            iData.iMap = map;
-            iPtrC8.Set(KDummy);  // hack: mark owned
-            CleanupStack::Pop(map); // map
-            break;
-            }
-        default:
-            {
-             // Corrupted data stream.
-#ifdef _DEBUG
-            RDebug::Print(_L("***ERROR TLiwVariant::InternalizeL"));
-#endif
-            User::Leave(KErrCorrupt);
-            return;
-            }
-        }
-
-    __TEST_INVARIANT;
-    }
-    
-void TLiwVariant::ExternalizeL(RWriteStream& aStream) const
-    {
-    __TEST_INVARIANT;
-
-    aStream.WriteInt8L(KVersion);
-    // if older version adapt to changes (who knows if parameters would be also persistent...)
-
-    aStream.WriteUint8L(iTypeId);
-    switch (iTypeId)
-        {
-        case EVariantTypeTInt32: // FALLTHROUGH
-        case EVariantTypeTUid:
-        case EVariantTypeTBool:
-        case EVariantTypeTUint:
-            {
-            aStream.WriteInt32L(iData.iInt32);
-            break;
-            }
-        case EVariantTypeTInt64:
-            {
-            aStream.WriteReal64L(iData.iLong);
-            break;
-            }
-        case EVariantTypeFileHandle: // FALLTHROUGH
-        case EVariantTypeTTime:
-        case EVariantTypeTReal:
-            {
-            iData.iInt64.ExternalizeL(aStream);
-            break;
-            }
-        case EVariantTypeDesC:
-            {
-            aStream.WriteInt32L(iPtrC.Length());
-            aStream << iPtrC;
-            break;
-            }
-        case EVariantTypeDesC8:
-            {
-            aStream.WriteInt32L(iPtrC8.Length());
-            aStream << iPtrC8;
-            break;
-            }
-        case EVariantTypeList:  
-            {
-            iData.iList->ExternalizeL(aStream);
-            break;
-            }
-        case EVariantTypeMap:  
-            {
-            iData.iMap->ExternalizeL(aStream);
-            break;
-            }
-        case EVariantTypeInterface:  
-            {
-            _LIT(KMsg, "TLiwVariant: type Interface not externizable");
-            User::Panic(KMsg, 1);
-            break;
-            }
-        default:
-            break;
-        }
-
-    __TEST_INVARIANT;
-    }
-
-TInt TLiwVariant::Size() const
-    {
-    __TEST_INVARIANT;
-
-    TInt size = sizeof (TInt8); // version
-    size += sizeof (TUint8);    // iTypeId
-    switch (iTypeId)
-        {
-        case EVariantTypeTInt32:    // FALLTHROUGH
-        case EVariantTypeTUid:
-        case EVariantTypeTBool:
-        case EVariantTypeTUint:
-            {
-            size += sizeof (TInt32);
-            break;
-            }
-        case EVariantTypeFileHandle: // FALLTHROUGH
-        case EVariantTypeTTime:
-        case EVariantTypeTReal:
-        case EVariantTypeTInt64:
-            {
-            size += sizeof (TInt64);
-            break;
-            }
-        case EVariantTypeDesC:
-            {
-            size += sizeof (TInt32); // length
-            //size += 1;              // the externalization method used adds a header byte
-            if(iPtrC.Size() >= KBufSizeLarge)
-            	{
-            	size += 4;
-            	}
-            else if(iPtrC.Size() >= KBufSizeSmall)
-            	{
-            	size += 2;
-            	}
-            else
-            	{
-            	size += 1;	
-            	}
-            size += iPtrC.Size();
-            size += 1;              // extra one byte for Unicode marker
-            break;
-            }
-        case EVariantTypeDesC8:
-            {
-            size += sizeof (TInt32); // length
-            //size += 1;              // the externalization method used adds a header byte
-            if(iPtrC8.Size() >= KBufSizeLarge)
-            	{
-            	size += 4;
-            	}
-                      	
-            else if(iPtrC8.Size() >= KBufSizeSmall)
-            	{
-            	size += 2;
-            	}
-            else
-            	{
-            	size += 1;
-            	}
-            size += iPtrC8.Size();
-            break;
-            }
-        case EVariantTypeList:  
-            {
-            size += iData.iList->Size();
-            break;
-            }
-        case EVariantTypeMap:  
-            {
-            size += iData.iMap->Size();
-            break;
-            }
-        default:
-            break;
-        }
-    return size;
-    }
-
-// ============================ EXTERNAL FUNCTIONS ===============================
-
-EXPORT_C TBool operator==(const TLiwVariant& aLhs, const TLiwVariant& aRhs)
-    {
-    if (aLhs.iTypeId == aRhs.iTypeId)
-        {
-        switch (aLhs.iTypeId)
-            {
-            case EVariantTypeNull:
-                {
-                // Null equals Null
-                return ETrue;
-                }
-            case EVariantTypeTInt32:  // FALLTHROUGH
-            case EVariantTypeTUid:
-            case EVariantTypeTBool:
-            case EVariantTypeTUint:
-                {
-                return (aLhs.iData.iInt32 == aRhs.iData.iInt32);
-                }
-            case EVariantTypeTInt64:
-                {
-                return (aLhs.iData.iLong == aRhs.iData.iLong);
-                }
-            case EVariantTypeDesC:
-                {
-                return (aLhs.iPtrC == aRhs.iPtrC);
-                }
-            case EVariantTypeDesC8:
-                {
-                return (aLhs.iPtrC8 == aRhs.iPtrC8);
-                }
-            case EVariantTypeFileHandle: // FALLTHROUGH
-            case EVariantTypeTTime:
-            case EVariantTypeTReal:
-                {
-                return (aLhs.iData.iInt64 == aRhs.iData.iInt64);
-                }
-            case EVariantTypeList:
-                {
-                return (*(aLhs.iData.iList) == *(aRhs.iData.iList));
-                }
-            case EVariantTypeMap:
-                {
-                return (*(aLhs.iData.iMap) == *(aRhs.iData.iMap));
-                }
-            case EVariantTypeInterface:
-                {
-                return (aLhs.iData.iSession == aRhs.iData.iSession);
-                }
-            case EVariantTypeIterable:
-                {
-                return (*(aLhs.iData.iIterable) == *(aRhs.iData.iIterable));
-                }
-            case EVariantTypeBuffer:
-                {
-                return (aLhs.iData.iBuffer == aRhs.iData.iBuffer);
-                }                
-            default:
-                {
-                break;
-                }
-            }
-        }
-    return EFalse;
-    }
-
-#ifdef _DEBUG
-EXPORT_C void Dump(const TLiwVariant& aVariant)
-    {
-    switch (aVariant.TypeId())
-        {
-        case EVariantTypeNull:
-            {
-            RDebug::Print(_L("   TLiwVariant::Dump = Null"));
-            break;
-            }
-        case EVariantTypeTInt32:
-            {
-            RDebug::Print(_L("   TLiwVariant::Dump(TInt32) = %d"), aVariant.AsTInt32());
-            break;
-            }
-        case EVariantTypeTInt64:
-            {
-            RDebug::Print(_L("   TLiwVariant::Dump(TInt64) = %d"), aVariant.AsTInt64());
-            break;
-            }
-        case EVariantTypeTReal:
-            {
-            RDebug::Print(_L("   TLiwVariant::Dump(TReal) = %d"), aVariant.AsTReal());
-            break;
-            }
-        case EVariantTypeTBool:
-            {
-            RDebug::Print(_L("   TLiwVariant::Dump(TBool) = %d"), aVariant.AsTBool());
-            break;
-            }
-        case EVariantTypeTUint:
-            {
-            RDebug::Print(_L("   TLiwVariant::Dump(TUint) = %d"), aVariant.AsTUint());
-            break;
-            }
-
-        case EVariantTypeTUid:
-            {
-            const TUidName& uidName = aVariant.AsTUid().Name();
-            RDebug::Print(_L("   TLiwVariant::Dump(TUid) = %S"), &uidName);
-            break;
-            }
-        case EVariantTypeDesC:
-            {
-            TPtrC des = aVariant.AsDes();
-            RDebug::Print(_L("   TLiwVariant::Dump(TBufC) = %S"), &des);
-            break;
-            }
-        case EVariantTypeDesC8:
-            {
-            TPtrC8 des = aVariant.AsData();
-            RDebug::Print(_L("   TLiwVariant::Dump(TBufC8) = %S"), &des);
-            break;
-            }
-        case EVariantTypeTTime:
-            {
-            TDateTime dt = aVariant.AsTTime().DateTime();
-            RDebug::Print(_L("   TLiwVariant::Dump(TTime): day=%d,mon=%d,year=%d,hh=%d,mm=%d,ss=%d"),
-                          dt.Day()+1, dt.Month()+1, dt.Year(),
-                          dt.Hour(),dt.Minute(), dt.Second());
-            break;          
-            }
-        case EVariantTypeFileHandle:
-            {
-            RDebug::Print(_L("   TLiwVariant::Dump(RFile): Value is file handle."));
-            break;
-            }            
-        case EVariantTypeList:  
-            {
-            const CLiwList* tempList = aVariant.AsList();
-            TInt count = tempList->Count();
-            TLiwVariant tempVariant;
-            tempVariant.PushL();
-            RDebug::Print(_L("   TLiwVariant::Dump(List[%d]):"), count);
-            for (TInt index = 0; index < count; index++)
-                {
-                TRAPD(error, {tempList->AtL(index, tempVariant);});
-                if(error != KErrNone)
-                    RDebug::Print(_L("TLiwVariant::Dump ERROR: %d"), error);
-                Dump(tempVariant);
-                }
-            CleanupStack::Pop(&tempVariant);
-    		tempVariant.Reset();
-            RDebug::Print(_L("   TLiwVariant::Dump List END"));
-            break;
-            }
-        case EVariantTypeIterable:  
-          {
-            CLiwIterable* tempItr = aVariant.AsIterable();
-            TLiwVariant tempVariant;
-            RDebug::Print(_L("   TLiwVariant::Dump(Iterable):"));
-            tempItr->Reset();
-            TRAPD(errno, {
-              while (tempItr->NextL(tempVariant)) {
-                Dump(tempVariant);
-              }
-            });
-            if(errno != KErrNone)
-                RDebug::Print(_L("TLiwVariant::Dump ERROR: %d"), errno);
-            tempVariant.Reset();
-            RDebug::Print(_L("   TLiwVariant::Dump Iterable END"));
-            break;
-          }
-        case EVariantTypeMap:  
-          {
-            const CLiwMap* tempMap = aVariant.AsMap();
-            TInt count = tempMap->Count();
-            TLiwVariant tempVariant;
-            RDebug::Print(_L("   TLiwVariant::Dump(Map):"));
-            for (TInt index = 0; index < count; index++) {
-              TBuf8<KBufSizeMid> key;
-              TRAPD(error, {tempMap->AtL(index, key);});
-              RDebug::Print(_L("    key=%S, value= "), &key);
-              TRAP(error, {tempMap->FindL(key, tempVariant);});
-              Dump(tempVariant);
-            }
-            tempVariant.Reset();
-            RDebug::Print(_L("   TLiwVariant::Dump Map END"));
-            break;
-          }
-        case EVariantTypeInterface:  
-            {
-            RDebug::Print(_L("   TLiwVariant::Dump(Interface): Value is interface pointer."));
-            break;
-            }
-        default:
-            {
-            RDebug::Print(_L("  *** TLiwVariant::Dump(Unknown) ***"));
-            break;
-            }
-        }
-    }
-#else
-EXPORT_C void Dump(const TLiwVariant& /*aVariant*/)
-    {
-    }
-    
-#endif // ifdef _DEBUG