diff -r 000000000000 -r b16258d2340f applayerprotocols/wappushsupport/XmlLib/XmlValid.h --- /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 +#include + +// 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 CDTDNodeStack; +typedef CStack 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* iCounterArray; // ...except for the counter stack, that owns the TInts + //##ModelId=3B6679A202B8 + CDTDNodeStack iDTDNodeStack; + //##ModelId=3B6679A202AF + CChildMarkStack iDocumentChildMarkStack; + + }; + +#endif // __XMLVALID_H__