diff -r 000000000000 -r 62f9d29f7211 webservices/wsframework/src/sencontext.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/wsframework/src/sencontext.cpp Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,324 @@ +/* +* Copyright (c) 2002-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 FILES +#include "sencontext.h" +#include "sencontextitem.h" +#include "SenElement.h" +#include "SenXmlReader.h" + +//#include "SenPointerMap.h" // internal: Utils\inc + +EXPORT_C CSenContext* CSenContext::NewL(SenContext::TContextDirection aDirection) + { + CSenContext* pNew = CSenContext::NewLC(aDirection); + CleanupStack::Pop(); + return pNew; + } + +EXPORT_C CSenContext* CSenContext::NewLC(SenContext::TContextDirection aDirection) + { + CSenContext* pNew = new (ELeave) CSenContext(aDirection); + CleanupStack::PushL(pNew); + pNew->BaseConstructL(); + return pNew; + } + +EXPORT_C CSenContext::CSenContext(SenContext::TContextDirection aDirection) +: iItems( EFalse, ETrue ), + iDirection( aDirection ) + { + } + +EXPORT_C CSenContext::~CSenContext() + { + iItems.Reset(); + } + +EXPORT_C void CSenContext::BaseConstructL() + { + } + +// From MSenContext: +SenContext::TContextType CSenContext::Type() const + { + return SenContext::EContextBase; + } + +SenContext::TContextDirection CSenContext::Direction() const + { + return iDirection; + } + +TInt CSenContext::Add(const TDesC8& aKey, const TDesC8& aValue) + { + if( iItems.Count() > 0 && iItems.Find(aKey) != KErrNotFound ) + { + return KErrAlreadyExists; + } + + CSenContextItem* pItem = NULL; + TInt leaveCode(KErrNone); + TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); ) + if( leaveCode != KErrNone ) + { + return leaveCode; + } + + TInt retCode(iItems.Append(&aKey, pItem)); + if( retCode != KErrNone ) + { + delete pItem; + } + return retCode; + } + +TInt CSenContext::Update(const TDesC8& aKey, const TDesC8& aValue) + { + TInt leaveCode(KErrNone); + CSenContextItem* pItem = NULL; + TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); ) + if( leaveCode != KErrNone ) + { + return leaveCode; + } + + TInt retCode(iItems.UpdateValue(&aKey, pItem)); + if( retCode != KErrNone ) + { + delete pItem; + } + return retCode; + } + +const TDesC8* CSenContext::GetDesC8L(const TDesC8& aKey) + { + TInt index = iItems.Find(aKey); + if ( index != KErrNotFound ) + { + const CSenContextItem* pItem = iItems.ValueAt(index); + if( pItem ) + { + return pItem->ToDesC8L(); + } + } + return NULL; + } + +TInt CSenContext::Add(const TDesC8& aKey, TInt aValue) + { + if( iItems.Count() > 0 && iItems.Find(aKey) != KErrNotFound ) + { + return KErrAlreadyExists; + } + + TInt leaveCode(KErrNone); + CSenContextItem* pItem = NULL; + TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); ) + if( leaveCode != KErrNone ) + { + return leaveCode; + } + + TInt retCode(iItems.Append(&aKey, pItem)); + if( retCode != KErrNone ) + { + delete pItem; + } + return retCode; + } + +TInt CSenContext::Update(const TDesC8& aKey, TInt aValue) + { + TInt leaveCode(KErrNone); + CSenContextItem* pItem = NULL; + TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); ) + if( leaveCode != KErrNone ) + { + return leaveCode; + } + + TInt retCode(iItems.UpdateValue(&aKey, pItem)); + if( retCode != KErrNone ) + { + delete pItem; + } + return retCode; + } + +const TInt* CSenContext::GetIntL(const TDesC8& aKey) + { + TInt index = iItems.Find(aKey); + if ( index != KErrNotFound ) + { + const CSenContextItem* pItem = iItems.ValueAt(index); + if(pItem) + { + return pItem->ToIntL(); + } + } + return NULL; + } + +TInt CSenContext::Add(const TDesC8& aKey, CSenElement* aValue) + { + if( iItems.Count() > 0 && iItems.Find(aKey) != KErrNotFound ) + { + return KErrAlreadyExists; + } + + TInt leaveCode(KErrNone); + CSenContextItem* pItem = NULL; + TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); ) + if( leaveCode != KErrNone ) + { + return leaveCode; + } + + TInt retCode(iItems.Append(&aKey, pItem)); + if( retCode != KErrNone ) + { + delete pItem; + } + return retCode; + } + +TInt CSenContext::Update(const TDesC8& aKey, CSenElement* aValue) + { + TInt leaveCode(KErrNone); + CSenContextItem* pItem = NULL; + TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); ) + if( leaveCode != KErrNone ) + { + return leaveCode; + } + + TInt retCode(iItems.UpdateValue(&aKey, pItem)); + if( retCode != KErrNone ) + { + delete pItem; + } + return retCode; + } + +const CSenElement* CSenContext::GetSenElementL(const TDesC8& aKey) + { + CSenElement* pElement = NULL; + TInt index = iItems.Find(aKey); + if ( index != KErrNotFound ) + { + const CSenContextItem* pItem = iItems.ValueAt(index); + pElement = &(pItem->ToSenElementL()); + } + return pElement; + } + +TInt CSenContext::Add(const TDesC8& aKey, TAny* aValue) + { + if( iItems.Count() > 0 && iItems.Find(aKey) != KErrNotFound ) + { + return KErrAlreadyExists; + } + + TInt leaveCode(KErrNone); + CSenContextItem* pItem = NULL; + TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); ) + if( leaveCode != KErrNone ) + { + return leaveCode; + } + + TInt retCode(iItems.Append(&aKey, pItem)); + if( retCode != KErrNone ) + { + delete pItem; + } + return retCode; + } + +TInt CSenContext::Update(const TDesC8& aKey, TAny* aValue) + { + TInt leaveCode(KErrNone); + CSenContextItem* pItem = NULL; + TRAP( leaveCode, pItem = CSenContextItem::NewL(aValue); ) + if( leaveCode != KErrNone ) + { + return leaveCode; + } + + TInt retCode(iItems.UpdateValue(&aKey, pItem)); + if( retCode != KErrNone ) + { + delete pItem; + } + return retCode; + } + +TAny* CSenContext::GetAnyL(const TDesC8& aKey) //codescannerwarnings + { + TAny* retVal = NULL; + + TInt index = iItems.Find(aKey); + if ( index != KErrNotFound ) + { + const CSenContextItem* pItem = iItems.ValueAt(index); + retVal = pItem->ToAnyL(); + } + return retVal; + } + +TInt CSenContext::Remove(const TDesC8& aKey) + { + return iItems.RemoveByKey(aKey); + } + +TInt CSenContext::Count() const + { + return iItems.Count(); + } + +TPtrC8 CSenContext::KeyAtL(TInt aIndex) + { + return *iItems.KeyAt(aIndex); + } + +void CSenContext::Reset() + { + iItems.Reset(); + } + +TInt CSenContext::SetDirection( SenContext::TContextDirection aDirection ) + { + iDirection = aDirection; + return KErrNone; + } + +const CSenXmlReader* CSenContext::GetParser() + { + return NULL; + } + + +// End of file +