diff -r 417699dc19c9 -r c7e9f1c97567 xml/legacyminidomparser/xmlparser/test/t_SmilDtd.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/legacyminidomparser/xmlparser/test/t_SmilDtd.h Mon Sep 13 13:16:40 2010 +0530 @@ -0,0 +1,119 @@ +// Copyright (c) 2001-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: +// This file contains the definition of the SMILDTD class +// +// +/** + * @file + * @publishedPartner + * @released + */ +#ifndef T_SMILDTD_H +#define T_SMILDTD_H + +#include +#include +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS +#include "t_smildtdenum.h" +#endif +/** +MXMLDtd is a mixin class. If User wants to derive from MXMLDtd class , +then one should not derive from any other class at the same time. +i.e A class can not derive from CBase at all using MXMLDtd. + +Represents the SMIL DTD. +It is used for validation of SMIL documents. +@publishedPartner +@released +*/ +class CSMILDtd: public MXMLDtd + { +public: + + /** Allocates and constructs a new SMIL DTD validator. + + @leave KErrNoMemory Out of memory + @return New SMIL DTD validator */ + IMPORT_C static CSMILDtd* NewL(); + + /** Allocates and constructs a new SMIL DTD validator, leaving the object on the + cleanup stack. + + @leave KErrNoMemory Out of memory + @return New SMIL DTD validator */ + IMPORT_C static CSMILDtd* NewLC(); + + /** Destructor. */ + IMPORT_C virtual ~CSMILDtd(); + +protected: + /* + * Function to determine whether an Element name is valid in DTD + * @return ETrue the if element name valid - else EFalse + * @param aElement the element name to be tested + * @leave can leave due to OOM + */ + virtual TBool IsValidElementL(const TDesC& aElement) const; + + /* + * Function to determine whether an attribute name and value is valid in DTD + * @return KErrNone if name&value are valid, KXMLBadAttributeName if attrib name invalid + * KXMLBadAttributeValue if attrib value invalid + * @param aElement the element to which the attributes belong + * @param aAttribute the attribute to be tested + * @leave aAttributeValue the attributeValue to be tested + * @leave can leave due to OOM + */ + + virtual TInt IsValidAttributeForElementL(const TDesC& aElement, const TDesC& aAttribute, const TDesC& aAttributeValue) const; + + /* + * Function to determine whether the parent/child relationship is valid in DTD + * @return ETrue if parent/child relationship is valid + * @param aParentElement the name of the parent element to be tested + * @param aChildElements an array of child element name to be tested + * @leave can leave due to OOM + */ + + virtual TBool AreValidChildElementsL(const TDesC& aParentElement, const CDesCArray& aChildElements) const; + + + /* + * Function to determine whether it is valid for a particular element to + * have children + * @param aElement the name of the element to be tested + * @return ETrue if it is valid for element to have children + */ + virtual TBool CanElementHaveChildren(const TDesC& aElement) const; + + + /* + * Constructor + */ + CSMILDtd(); + +private: + /* + * Second stage constructor + */ + void ConstructL(); + + TBool CheckValidChildren(const TSMILDTDChildStateType aStateTrans[],TInt aStateCount, const CDesCArray& aChildElements) const; + + }; + +#endif + + +