diff -r 2580314736af -r 2669f8761a99 xdmprotocols/XdmXmlParser/src/XmlParserNodePath.cpp --- a/xdmprotocols/XdmXmlParser/src/XmlParserNodePath.cpp Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,155 +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: CXmlParserNodePath -* -*/ - - - -#include -#include "XdmDocument.h" -#include "XdmXmlParser.h" -#include "XdmDocumentNode.h" -#include "XdmNodeAttribute.h" -#include "XmlParserNodePath.h" -#include "XmlNodePathInterface.h" - -// --------------------------------------------------------- -// CXmlParserNodePath::CXmlParserNodePath -// -// --------------------------------------------------------- -// -CXmlParserNodePath::CXmlParserNodePath( CXdmXmlParser& aParserMain, - TXdmElementType aElementType, - MXmlNodePathInterface* aPathInterface ) : - iElementType( aElementType ), - iPathInterface( aPathInterface ), - iParserMain( aParserMain ) - { - } - -// --------------------------------------------------------- -// CXmlParserNodePath::ExtractString -// -// --------------------------------------------------------- -// -CXmlParserNodePath* CXmlParserNodePath::NewL( CXdmXmlParser& aParserMain, - TXdmElementType aElementType, - const CXdmDocumentNode& aTargetNode, - MXmlNodePathInterface* aPathInterface ) - { - CXmlParserNodePath* self = new ( ELeave ) CXmlParserNodePath( aParserMain, aElementType, aPathInterface ); - CleanupStack::PushL( self ); - self->ConstructL( aTargetNode ); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------- -// CXmlParserNodePath::~CXmlParserNodePath -// -// --------------------------------------------------------- -// -CXmlParserNodePath::~CXmlParserNodePath() - { - iNodes.Close(); - } - -// --------------------------------------------------------- -// CXmlParserNodePath::ConstructL -// -// --------------------------------------------------------- -// -void CXmlParserNodePath::ConstructL( const CXdmDocumentNode& aTargetNode ) - { - #ifdef _DEBUG - iParserMain.WriteToLog( _L8( "CXmlParserNodePath::ConstructL()" ) ); - #endif - CXdmDocumentNode* current = CONST_CAST( CXdmDocumentNode*, &aTargetNode ); - while( current != NULL ) - { - iNodes.InsertL( current, 0 ); - current = current->Parent(); - } - } - -// --------------------------------------------------------- -// CXmlParserNodePath::CheckNextNodeL -// -// --------------------------------------------------------- -// -TBool CXmlParserNodePath::CheckNextNodeL( const TDesC8& aNextElement, - const RAttributeArray& aAttributes ) - { - #ifdef _DEBUG - //iParserMain.WriteToLog( _L8( "CXmlParserNodePath::CheckNextNodeL" ) ); - #endif - if( !iComplete && aNextElement.Length() > 0 ) - { - TInt attrCount = aAttributes.Count(); - RPointerArray attributes; - CleanupClosePushL( attributes ); - for( TInt i = 0;i < attrCount;i++ ) - { - SXdmAttribute8 attribute; - attribute.iName.Set( aAttributes[i].Attribute().LocalName().DesC() ); - attribute.iValue.Set( aAttributes[i].Value().DesC() ); - User::LeaveIfError( attributes.Append( &attribute ) ); - } - HBufC* unicode = HBufC::NewLC( aNextElement.Length() ); - unicode->Des().Copy( aNextElement ); - if( iNodes[iIndex]->Match( unicode->Des(), attributes ) ) - { - iIndex++; - if( iElementType == EXdmElementAttribute ) - iComplete = iNodes[iIndex] == iPathInterface->TargetAttribute()->Parent(); - else /* or else if, the next if is not needed */ - { - if( iIndex == iNodes.Count() ) - iComplete = ETrue; - } - } - CleanupStack::PopAndDestroy( 2 ); //unicode, attributes - } - return iComplete; - } - -// --------------------------------------------------------- -// CXmlParserNodePath::CheckNextNodeL -// -// --------------------------------------------------------- -// -TBool CXmlParserNodePath::CheckNextNode( const CXdmDocumentNode& aNextNode ) - { - #ifdef _DEBUG - //iParserMain.WriteToLog( _L8( "CXmlParserNodePath::CheckNextNodeL" ) ); - #endif - if( !iComplete ) - { - if( iNodes[iIndex]->Match( aNextNode ) ) - { - iIndex++; - if( iElementType == EXdmElementAttribute ) - iComplete = iNodes[iIndex] == iPathInterface->TargetAttribute()->Parent(); - else /* or else if, the next if is not needed */ - { - if( iIndex == iNodes.Count() ) - iComplete = ETrue; - } - } - } - return iComplete; - } - -// End of File