--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerprotocols/httpservice/src/httpheaderiter.cpp Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,195 @@
+// Copyright (c) 2003-2009 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 "httpheaderiter.h"
+#include "cheaders.h"
+#include "cheaderfield.h"
+#include "httpclientutils.h"
+
+// This class needs to be optimized.
+EXPORT_C THttpHeaderParamIterator THttpHeaderParamIterator::operator++ (TInt)
+ {
+ THttpHeaderParamIterator it(iParameterArray, iPostIdx);
+ if(iParameterArray && iPostIdx < iParameterArray->Count())
+ {
+ ++iPostIdx;
+ }
+ return it;
+ }
+
+EXPORT_C THttpHeaderParamIterator& THttpHeaderParamIterator::operator++ ()
+ {
+ if(iParameterArray && iPostIdx < iParameterArray->Count())
+ {
+ ++iPostIdx;
+ }
+ return *this;
+ }
+
+EXPORT_C TBool THttpHeaderParamIterator::AtEnd() const
+ {
+ return (!iParameterArray || iPostIdx >= iParameterArray->Count());
+ }
+
+EXPORT_C const TDesC8& THttpHeaderParamIterator::Name() const
+ {
+ if(iParameterArray && iPostIdx < iParameterArray->Count())
+ {
+ return (*iParameterArray)[iPostIdx]->Name().DesC();
+ }
+ return KNullDesC8();
+ }
+
+EXPORT_C THttpHeaderValueVariant THttpHeaderParamIterator::Value() const
+ {
+ if(iParameterArray && iPostIdx < iParameterArray->Count())
+ {
+ return HttpClientUtils::CopyHttpHdrVal((*iParameterArray)[iPostIdx]->Value());
+ }
+ return THttpHeaderValueVariant();
+ }
+
+EXPORT_C THttpHeaderParamIterator::THttpHeaderParamIterator()
+: iParameterArray(NULL),
+iPostIdx(0)
+ {
+ }
+
+EXPORT_C THttpHeaderParamIterator::THttpHeaderParamIterator(const RPointerArray<CHeaderFieldParam>* aArray, TInt aIndex /* = 0 */)
+: iParameterArray(aArray),
+iPostIdx(aIndex)
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+EXPORT_C THttpHeaderElementIterator THttpHeaderElementIterator::operator++ (TInt)
+ {
+ THttpHeaderElementIterator it(iElementArray, iPostIdx);
+ if(iElementArray && iPostIdx < iElementArray->Count())
+ {
+ ++iPostIdx;
+ }
+ return it;
+ }
+
+EXPORT_C THttpHeaderElementIterator& THttpHeaderElementIterator::operator++ ()
+ {
+ if(iElementArray && iPostIdx < iElementArray->Count())
+ {
+ ++iPostIdx;
+ }
+ return *this;
+ }
+
+EXPORT_C TBool THttpHeaderElementIterator::AtEnd() const
+ {
+ return (!iElementArray || iPostIdx >= iElementArray->Count());
+ }
+
+EXPORT_C THttpHeaderValueVariant THttpHeaderElementIterator::Value() const
+ {
+ if(iElementArray && iPostIdx < iElementArray->Count())
+ {
+ return HttpClientUtils::CopyHttpHdrVal((*iElementArray)[iPostIdx]->Value());
+ }
+ return THttpHeaderValueVariant();
+ }
+
+EXPORT_C THttpHeaderParamIterator THttpHeaderElementIterator::Parameter() const
+ {
+ if(iElementArray == NULL)
+ return THttpHeaderParamIterator();
+ return THttpHeaderParamIterator(&(*iElementArray)[iPostIdx]->iParams);
+ }
+
+EXPORT_C THttpHeaderElementIterator::THttpHeaderElementIterator()
+: iElementArray(NULL),
+iPostIdx(0)
+ {
+
+ }
+
+EXPORT_C THttpHeaderElementIterator::THttpHeaderElementIterator(const RPointerArray<CHeaderFieldPart>* aArray, TInt aIndex /* = 0 */)
+: iElementArray(aArray),
+iPostIdx(aIndex)
+ {
+
+ }
+
+// ----------------------------------------------------------------------
+EXPORT_C THttpHeaderIterator THttpHeaderIterator::operator++ (TInt)
+ {
+ THttpHeaderIterator it(iHttpHeaders, iPostIdx);
+ if(iHttpHeaders && iPostIdx < iHttpHeaders->iFields.Count())
+ {
+ ++iPostIdx;
+ }
+ return it;
+ }
+
+EXPORT_C THttpHeaderIterator& THttpHeaderIterator::operator++ ()
+ {
+ if(iHttpHeaders && iPostIdx < iHttpHeaders->iFields.Count())
+ {
+ ++iPostIdx;
+ }
+ return *this;
+ }
+
+EXPORT_C TBool THttpHeaderIterator::AtEnd() const
+ {
+ return (!iHttpHeaders || iPostIdx >= iHttpHeaders->iFields.Count());
+ }
+
+EXPORT_C const TDesC8& THttpHeaderIterator::Name() const
+ {
+ if(iHttpHeaders && iPostIdx < iHttpHeaders->iFields.Count())
+ {
+ return iHttpHeaders->iFields[iPostIdx].iFieldName.DesC();
+ }
+ return KNullDesC8();
+ }
+
+EXPORT_C THttpHeaderElementIterator THttpHeaderIterator::Elements() const
+ {
+ if(iHttpHeaders)
+ THttpHeaderElementIterator();
+
+ return THttpHeaderElementIterator(&iHttpHeaders->iFields[iPostIdx].iField->iElementArray);
+ }
+
+EXPORT_C THttpHeaderParamIterator THttpHeaderIterator::Parameters() const
+ {
+ if(iHttpHeaders)
+ THttpHeaderParamIterator();
+
+ return THttpHeaderParamIterator(&iHttpHeaders->iFields[iPostIdx].iField->iParameterArray);
+ }
+
+EXPORT_C THttpHeaderIterator::THttpHeaderIterator()
+: iHttpHeaders(NULL),
+iPostIdx(0)
+ {
+
+ }
+
+EXPORT_C THttpHeaderIterator::THttpHeaderIterator(const CHeaders* aHeaders, TInt aIndex /* = 0 */)
+: iHttpHeaders(aHeaders),
+ iPostIdx(aIndex)
+ {
+
+ }
+