williamr@2: /*
williamr@2: * Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
williamr@2: * All rights reserved.
williamr@2: * This component and the accompanying materials are made available
williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2: * which accompanies this distribution, and is available
williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2: *
williamr@2: * Initial Contributors:
williamr@2: * Nokia Corporation - initial contribution.
williamr@2: *
williamr@2: * Contributors:
williamr@2: *
williamr@2: * Description:       Node list implementation functions
williamr@2: *
williamr@2: */
williamr@2: 
williamr@2: 
williamr@2: 
williamr@2: 
williamr@2: 
williamr@2: 
williamr@2: 
williamr@2: #ifndef XMLENGINE_NODELIST_IMPL_H_INCLUDED
williamr@2: #define XMLENGINE_NODELIST_IMPL_H_INCLUDED
williamr@2: 
williamr@2: #include <e32def.h>
williamr@2: #include "xmlengnode.h"
williamr@2: 
williamr@2: /** 
williamr@2:  * Class implements list container.
williamr@2:  * 
williamr@2:  * @lib XmlEngineDOM.lib
williamr@2:  * @since S60 v3.2
williamr@2:  */
williamr@2: class RXmlEngNodeListImpl
williamr@2: {
williamr@2: public:
williamr@2: 
williamr@2:     /**
williamr@2:      *  Default constructor
williamr@2:      *
williamr@2:      * @since S60 v3.2
williamr@2:      */
williamr@2:     IMPORT_C RXmlEngNodeListImpl();
williamr@2: 
williamr@2:     /** 
williamr@2:      * Closes node list
williamr@2:      *
williamr@2:      * @since S60 v3.2
williamr@2:      */
williamr@2:     IMPORT_C void Close();
williamr@2: 
williamr@2:     /** 
williamr@2:      * Get list length.
williamr@2:      *
williamr@2:      * @since S60 v3.2
williamr@2:      * @return Number of nodes in a node list
williamr@2:      */
williamr@2:     IMPORT_C TInt  Count() const;
williamr@2: 
williamr@2:     /** 
williamr@2:      * Checks whether next node exists in a node list
williamr@2:      *
williamr@2:      * @since S60 v3.2
williamr@2:      * @return TRUE if next node exists, FALSE otherwise
williamr@2:      */
williamr@2:     IMPORT_C TBool HasNext() const;
williamr@2: 
williamr@2:     /** 
williamr@2:      * Retrieves next node from a node list
williamr@2:      *
williamr@2:      * @since S60 v3.2
williamr@2:      * @return Next node 
williamr@2:      */
williamr@2:     IMPORT_C TXmlEngNode Next();
williamr@2: 
williamr@2:     /** 
williamr@2:      * Opens node.
williamr@2:      *
williamr@2:      * @since S60 v3.2
williamr@2:      * @param aHead node pointer to the node from which the searching 
williamr@2:             of list elements is started
williamr@2:      * @param aType type of list elements
williamr@2:      * @param aName name of list elements 
williamr@2:      * @param aNs namespace of list elements
williamr@2:      *
williamr@2:      * @note If aType is NULL, aName and aNs are ignored
williamr@2:      */
williamr@2:     void OpenL( 
williamr@2: 			void* aHead,
williamr@2: 			TXmlEngNode::TXmlEngDOMNodeType aType,
williamr@2: 			const TDesC8&	aName = KNullDesC8,
williamr@2: 			const TDesC8&	aNs = KNullDesC8);
williamr@2: 
williamr@2:     /** 
williamr@2:      * Opens node.
williamr@2:      *
williamr@2:      * @since S60 v3.2
williamr@2:      * @param aHead node pointer to the node from which the searching 
williamr@2:             of list elements is started
williamr@2:      * @param aType type of list elements
williamr@2:      */
williamr@2:     void Open( 
williamr@2: 			void* aHead,
williamr@2: 			TXmlEngNode::TXmlEngDOMNodeType aType);
williamr@2: 
williamr@2: private:
williamr@2: 
williamr@2:     void* FindNextNode(void* aCurrentNode) const;
williamr@2: 
williamr@2:     void*	        iCurrentNode;
williamr@2: 	TInt		    iType;  // NodeType:4 bits (0-3) & MatchName flag (bit 4)
williamr@2: 	unsigned char*	iName;
williamr@2: 	unsigned char*	iNsUri;
williamr@2: };
williamr@2: 
williamr@2: TBool StrEqualOrNull(const void* aStr1, const void* aStr2);
williamr@2: 			
williamr@2: 
williamr@2: 
williamr@2: #endif /* XMLENGINE_NODELIST_IMPL_H_INCLUDED */