applayerprotocols/wappushsupport/XmlLib/XmlValid.h
changeset 0 b16258d2340f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerprotocols/wappushsupport/XmlLib/XmlValid.h	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,117 @@
+// 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:
+//
+
+#ifndef __XMLVALID_H__
+#define __XMLVALID_H__
+
+// System includes
+//
+#include <e32base.h>
+#include <cstack.h>
+
+//	Forward class declarations
+//
+class CAttributeLookupTable;
+class CBNFNode;
+class CXmlElement;
+
+//	CLASS DEFINITION
+//
+//##ModelId=3B6679A20284
+class CXmlValidator : public CBase
+	{
+protected:	// Data types
+	enum TDTDNodeMatch
+		{
+		EMiss,
+		EConditionalMiss,
+		EMatch
+		};
+
+typedef CStack<CBNFNode, EFalse> CDTDNodeStack;
+typedef CStack<CXmlElement, EFalse> CChildMarkStack;
+
+public:	// Methods
+	//##ModelId=3B6679A300A6
+	static CXmlValidator* NewL(CBNFNode& aDTD, CAttributeLookupTable& aALUT);
+	//##ModelId=3B6679A300A5
+	virtual ~CXmlValidator();
+	//##ModelId=3B6679A30091
+	TInt ValidateTreeL(CXmlElement* aRootNode);
+
+protected:	// Methods
+	//##ModelId=3B6679A3007D
+	CXmlValidator(CBNFNode& aDTD, CAttributeLookupTable& aALUT);
+	//##ModelId=3B6679A30072
+	void ConstructL();
+
+	//##ModelId=3B6679A3005E
+	TInt ValidateNodeAttributesL(CXmlElement* aDocumentNode, CBNFNode* aDTDNode);
+	//##ModelId=3B6679A3004A
+	TInt ValidateNodeChildrenL(CXmlElement* aDocumentNode, CBNFNode* aDTDNode);
+	//##ModelId=3B6679A30040
+	TInt ValidateNodeL(CXmlElement* aNode);
+	//##ModelId=3B6679A30022
+	TInt NormalizeAndCheckAttributeValueL(TPtr& aAttributeValue, CBNFNode* aAttributeValueType);
+
+private:	// Methods
+	//##ModelId=3B6679A3000E
+	TInt HandleReferenceL(CBNFNode* aDTDNode, TBool& aNodeFinished);
+	//##ModelId=3B6679A203E2
+	TInt HandleAndL(CBNFNode* aDTDNode, TBool& aNodeFinished);
+	//##ModelId=3B6679A203CE
+	TInt HandleOrL(CBNFNode* aDTDNode, TBool& aNodeFinished);
+	//##ModelId=3B6679A203BA
+	TInt HandleOptionalL(CBNFNode* aDTDNode, TBool& aNodeFinished);
+	//##ModelId=3B6679A2039C
+	TInt HandleNMoreL(CBNFNode* aDTDNode, TBool& aNodeFinished);
+
+	//##ModelId=3B6679A20388
+	TInt HandleReferenceInAttributeValueTypeL(CBNFNode* aDTDNode, TBool& aNodeFinished);
+	//##ModelId=3B6679A20374
+	TInt HandleAttributeValueCheckAndNormalize(TPtr& aAttributeValue, const TDesC* aAttributeValueType);
+
+	//##ModelId=3B6679A20360
+	const TDesC* NodeName(CBNFNode* aNode);
+	//##ModelId=3B6679A20356
+	void NormalizeAttributeValueWhiteSpaces(TPtr& aAttributeValue);
+
+protected:	// Attributes
+	//##ModelId=3B6679A2034C
+	CBNFNode&					iDTD;
+	//##ModelId=3B6679A20338
+	CAttributeLookupTable&		iALUT;
+
+	// These are pointers and variables for the validation DTD tree traversing
+	// They are used to temporarily store pointers to data structures while traversing
+	// the tree and hence, data is not owned by these!
+	//##ModelId=3B6679A20324
+	CXmlElement*				iCurrentDocumentChild;
+	//##ModelId=3B6679A20310
+	CBNFNode*					iDTDChildNode;
+	//##ModelId=3B6679A202FE
+	TBool						iNodeMatched;
+	//##ModelId=3B6679A202F4
+	TDTDNodeMatch				iSubNodeMatch;
+	//##ModelId=3B6679A202E0
+	CArrayFixFlat<TInt>*		iCounterArray;			// ...except for the counter stack, that owns the TInts
+	//##ModelId=3B6679A202B8
+	CDTDNodeStack				iDTDNodeStack;
+	//##ModelId=3B6679A202AF
+	CChildMarkStack				iDocumentChildMarkStack;
+
+	};
+
+#endif // __XMLVALID_H__