applayerprotocols/wappushsupport/XmlElement/XMLELEMT.H
changeset 0 b16258d2340f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerprotocols/wappushsupport/XmlElement/XMLELEMT.H	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,192 @@
+// Copyright (c) 1999-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:
+// XmlElement.h
+// XML Element class
+// Derived from CTypedNode. Adds functionality
+// to make the use of the node simpler
+// 
+//
+
+#ifndef __XMLELEMT_H
+#define __XMLELEMT_H
+
+//
+//  INCLUDES
+//
+#include <e32base.h>
+#include <cnode.h>
+
+//
+//  CONSTANTS  
+//
+/**
+@publishedAll
+@deprecated
+*/
+_LIT(KXmlElementDataItemAttributeName, "__XML_DI");
+
+//
+//  DATA TYPES  
+//
+enum TXmlElementPanic
+/**
+@publishedAll
+@deprecated
+*/
+{
+	EXmlElPanicInvalidDataItem = 1
+};
+
+// Type of an attribute in a node
+typedef const TDesC* TXmlAttributeType;
+// Type of an element (type of node)
+typedef const TDesC* TXmlElementType;
+
+//
+//  FUNCTION PROTOTYPES  
+//
+/**
+@publishedAll
+@deprecated
+*/
+GLREF_C void Panic(TXmlElementPanic aPanic);
+
+//
+//  FORWARD DECLARATIONS
+//
+class RFile;
+class CAttributeLookupTable;
+
+//
+//  CLASS DEFINITIONS 
+//
+//##ModelId=3B66798702FF
+class CXmlElement : public CTypedNode<TXmlElementType, TXmlAttributeType>
+/**
+@publishedAll
+@deprecated
+*/
+{
+public:
+	// Construction
+	//##ModelId=3B6679870364
+	static inline CXmlElement* NewL(TXmlElementType aType,CNode* aParent);
+
+	// Attributes
+	// Return the value of a particular attribute
+	//##ModelId=3B667987035D
+	IMPORT_C const TDesC* Attribute(const TDesC& aAttributeName) const;
+	// Return the value of an aIndexth attribute
+	//##ModelId=3B6679870362
+	inline const TDesC* Attribute(TInt aIndex) const;
+
+	// Set attribute value
+	//##ModelId=3B6679870359
+	IMPORT_C void SetAttributeL(const TDesC& aAttributeName, const TDesC& aAttributeValue, CAttributeLookupTable& aAttributeLUT);
+
+	// Store a unicode descriptor as data value. 
+	//##ModelId=3B6679870357
+	IMPORT_C void SetTextL(const TDesC& aData);
+	// Get data value
+	//##ModelId=3B6679870352
+	inline const TDesC* Text() const;
+
+	// Children
+	//##ModelId=3B6679870350
+	inline void AppendChildL(CXmlElement* aElement);
+
+	//##ModelId=3B667987034D
+	IMPORT_C void InsertChildL(TInt aIndexToInsertBefore, CXmlElement* aElement);
+
+	//##ModelId=3B6679870347
+	inline TInt Count() const;
+
+	//##ModelId=3B6679870345
+	inline CXmlElement* Child(TInt aIndex) const;
+
+	// Find out the index of this child
+	// INPUT:
+	// aChild - Pointer to the child node
+	// RETURN:
+	// TInt - index to the child, -1 if no child found
+	//##ModelId=3B6679870343
+	IMPORT_C TInt ChildIndex(CXmlElement* aChild) const;
+
+	// Data item
+	//##ModelId=3B667987033C
+	IMPORT_C void SetDataItemL(CBase* aDataItem, CAttributeLookupTable& aAttributeLUT); // takes ownership of aDataItem
+	//##ModelId=3B667987033B
+	IMPORT_C CBase* DataItem() const;
+	//##ModelId=3B6679870339
+	IMPORT_C void DeleteDataItem(CAttributeLookupTable& aAttributeLUT);
+
+private:
+	// Data Item handling
+	class CDataItemAttribute : public CBase
+	{
+	public:
+		~CDataItemAttribute() { delete iDataItem; };
+		CBase* iDataItem;
+	};
+
+	//##ModelId=3B6679870335
+	CXmlElement() : CTypedNode<TXmlElementType, TXmlAttributeType>(NULL, NULL) {};
+
+// Debug stuff
+//#ifdef _DEBUG
+public:
+	//##ModelId=3B6679870334
+	IMPORT_C void WriteIntoFileL();
+	//##ModelId=3B6679870331
+	void StartWriteL(RFile& aFile, TInt aIndentation);
+private:
+	//##ModelId=3B6679870327
+	void WriteNameL(RFile& aFile, TInt aIndentation);
+//#endif
+};
+
+//
+//	INLINE METHODS
+//
+inline CXmlElement* CXmlElement::NewL(TXmlElementType aType,CNode* aParent) 
+{
+	return (CXmlElement*)CTypedNode<TXmlElementType, TXmlAttributeType>::NewL(aType, aParent);
+}
+
+inline const TDesC* CXmlElement::Attribute(TInt aIndex) const
+{ 
+	return (TDesC*)((CDataDelete*)AttributeByIndex(aIndex))->Data();
+}
+
+inline const TDesC* CXmlElement::Text() const
+{ 
+	return (const TDesC*)CTypedNode<TXmlElementType, TXmlAttributeType>::Data(); 
+}
+
+inline void CXmlElement::AppendChildL(CXmlElement* aElement)
+{ 
+	CTypedNode<TXmlElementType, TXmlAttributeType>::AppendNodeToThisNodeL(aElement); 
+}
+
+inline TInt CXmlElement::Count() const
+{ 
+	return NumberImmediateChildren(); 
+}
+
+inline CXmlElement* CXmlElement::Child(TInt aIndex) const
+{ 
+	return (CXmlElement*)CTypedNode<TXmlElementType, TXmlAttributeType>::Child(aIndex); 
+}
+
+#endif //__XMLELEMT_H