epoc32/include/xmlengnodelist.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
--- a/epoc32/include/xmlengnodelist.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/xmlengnodelist.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,131 @@
-xmlengnodelist.h
+/*
+* Copyright (c) 2006-2006 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 "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:       Node list inline functions
+*
+*/
+
+
+
+
+
+
+
+#ifndef XMLENGINE_NODELIST_H_INCLUDED
+#define XMLENGINE_NODELIST_H_INCLUDED
+
+#include "xmlengnode.h"
+#include "xmlengnodelist_impl.h"
+
+
+
+/**
+ * Template implements list container.
+ *
+ * List may contain different types of nodes.
+ * Node pointer is casted to specify node type when
+ * is returned by Next() method.
+ *
+ * @lib XmlEngineDOM.lib
+ * @since S60 v3.2
+ */
+template<class T> 
+class RXmlEngNodeList
+{
+public:
+    /**
+     * Get list length.
+     *
+     * @since S60 v3.2
+     * @return Number of nodes in a node list
+     */
+	inline TInt Count() const;
+
+    /**
+     * Checks whether next node exists in a node list
+     *
+     * @since S60 v3.2
+     * @return TRUE if next node exists, FALSE otherwise
+     */
+	inline TBool HasNext() const;
+
+    /**
+     * Retrieves next node from a node list
+     *
+     * @since S60 v3.2
+     * @return Next node 
+     */
+	inline T Next();
+
+    /**
+     * Closes a node list
+     *
+     * @since S60 v3.2
+     */
+	inline void Close();
+
+private:
+    friend class TXmlEngNode;
+    friend class TXmlEngElement;
+
+    /*
+     * Opens node.
+     *
+     * @since S60 v3.2
+     * @param aHead node pointer to the node from which the searching 
+            of list elements is started
+     * @param aType type of list elements
+     * @param aName name of list elements 
+     * @param aNs namespace of list elements
+     *
+     * @note If aType is NULL, aName and aNs are ignored
+     */
+    void OpenL( 
+			void* aHead,
+			TXmlEngNode::TXmlEngDOMNodeType aType,
+			const TDesC8&	aName = KNullDesC8,
+			const TDesC8&	aNs = KNullDesC8);
+
+    /** 
+     * Opens node.
+     *
+     * @since S60 v3.2
+     * @param aHead node pointer to the node from which the searching 
+            of list elements is started
+     * @param aType type of list elements
+     */
+    void Open( 
+			void* aHead,
+			TXmlEngNode::TXmlEngDOMNodeType aType);
+
+    /** List with nodes */
+	RXmlEngNodeListImpl iList;
+};
+
+/**
+ * Template implements list container for nodes.
+ *
+ * Specialization for trivial case: list of TXmlEngNode objects
+ * No "thin wrapper" pattern needed, operate directly on NodeListImpl
+ *
+ * @lib XmlEngineDOM.lib
+ * @since S60 v3.1
+ */
+template<>
+class RXmlEngNodeList<TXmlEngNode>: public RXmlEngNodeListImpl {};
+
+
+
+#include "xmlengnodelist.inl"
+
+#endif /* XMLENGINE_NODELIST_H_INCLUDED */