diff -r 417699dc19c9 -r c7e9f1c97567 xml/legacyminidomparser/xmldom/src/gmxmldocument.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/legacyminidomparser/xmldom/src/gmxmldocument.cpp Mon Sep 13 13:16:40 2010 +0530 @@ -0,0 +1,238 @@ +// 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: +// MDXMLDocument.CPP +// @file +// This file contains the implementation of the CMDXMLDocument class which +// is the root class for a Mini-DOM tree. +// +// + +#include +#include +#include +#include +#include +#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS +#include "gmxmldummydtd.h" +#endif +// +// Global functions // +// + + +CMDXMLDocument::CMDXMLDocument(MXMLDtd& aDtdRepresentation) : iDtdRepresentation(&aDtdRepresentation) +// +// Constructor +// + { + } + +CMDXMLDocument::CMDXMLDocument() +// +// Constructor +// + { + } + + +EXPORT_C CMDXMLDocument::~CMDXMLDocument() + { + delete iRootElement; + delete iVersionTag; + delete iDocTypeTag; + + if (iOwnsDtd) + // If the DTD is a dummy DTD created by this document then it should be deleted. + { + delete iDtdRepresentation; + } + } + +EXPORT_C CMDXMLDocument* CMDXMLDocument::NewL(MXMLDtd& aDtdRepresentation) +// +// Factory function +// @return Returns the created CMDXMLDocument +// @leave Can Leave due to OOM +// + { + CMDXMLDocument* self = CMDXMLDocument::NewLC(aDtdRepresentation); + CleanupStack::Pop(self); + return self; + } + + +EXPORT_C CMDXMLDocument* CMDXMLDocument::NewLC(MXMLDtd& aDtdRepresentation) +// +// Factory function +// @return Returns the created CMDXMLDocument +// @leave Can Leave due to OOM +// + { + CMDXMLDocument* self = new(ELeave) CMDXMLDocument(aDtdRepresentation); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +/** + * Factory function - Without taking a DTD + * Documents created using this function will not be able to validate the XML. + * @return Returns the created CMDXMLDocument + * @leave Can Leave due to OOM + */ +EXPORT_C CMDXMLDocument* CMDXMLDocument::NewL() + { + CMDXMLDocument* self = CMDXMLDocument::NewLC(); + CleanupStack::Pop(self); + return self; + } + + +/** + * Factory function - Without taking a DTD + * Documents created using this function will not be able to validate the XML. + * @return Returns the created CMDXMLDocument + * @leave Can Leave due to OOM + */ +EXPORT_C CMDXMLDocument* CMDXMLDocument::NewLC() + { + CMDXMLDocument* self = new(ELeave) CMDXMLDocument(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + + +void CMDXMLDocument::ConstructL() + { +// Default XML Version & Doc tags being set +// Can be reset externally + iVersionTag = TPtrC(KXMLDefaultVersionTag).AllocL(); + iDocTypeTag = TPtrC(KXMLDefaultDocTypeTag).AllocL(); + + iRootElement = CMDXMLDocumentElement::NewL(this); + + if (iDtdRepresentation == NULL) + // If no DTD has been provided then use the dummy DTD + { + iDtdRepresentation = new (ELeave) CMDXMLDummyDtd; + iOwnsDtd = ETrue; + } + } + + +EXPORT_C TBool CMDXMLDocument::SetVersionTagL(const TDesC& aVersionTag) +// +// @param replacement tag, this must be complete, starting +// @return ETrue if operation succeeds, EFalse if formal parameter does not +// begin with +// @leave can Leave due to OOM +// + { + TBool returnValue = EFalse; + + // if correct tag frame + if(aVersionTag.Left(TPtrC(KXMLVersion).Length()) == KXMLVersion + && aVersionTag.Right(TPtrC(KXMLEndTag).Length()) == KXMLEndTag) + { + delete iVersionTag; + iVersionTag = NULL; + iVersionTag = aVersionTag.AllocL(); + returnValue = ETrue; + } + + return returnValue; + } + +EXPORT_C TBool CMDXMLDocument::SetDocTypeTagL(const TDesC& aDocTypeTag) +// +// @param replacement tag, this must be complete, starting +// @return ETrue if operation succeeds, EFalse if formal parameter does not +// begin with IsValidElementL(aElement); + } + + +EXPORT_C TBool CMDXMLDocument::CanElementHaveChildren(const TDesC& aElement) const + { + return iDtdRepresentation->CanElementHaveChildren(aElement); + } + +EXPORT_C void CMDXMLDocument::PlaceholderForRemovedExport1(MXMLDtd& /*aDtdRepresentation*/) + { + User::Panic(KLDRIMPORT, KLdrImportedOrdinalDoesNotExist); + } + +EXPORT_C void CMDXMLDocument::PlaceholderForRemovedExport2() + { + User::Panic(KLDRIMPORT, KLdrImportedOrdinalDoesNotExist); + } + +const MXMLDtd& CMDXMLDocument::DtdRepresentation() const +// Returns a reference to the dtd class responsible for validation +// @return Returns a reference to MXMLDtd class that should be used for Dtd validation checking + { + return *iDtdRepresentation; + } + + +TBool CMDXMLDummyDtd::IsValidElementL(const TDesC& /*aElement*/) const + { + return ETrue; + } + +TInt CMDXMLDummyDtd::IsValidAttributeForElementL(const TDesC& /*aElement*/, const TDesC& /*aAttribute*/, const TDesC& /*aAttributeValue*/) const + { + return KErrNone; + } + +TBool CMDXMLDummyDtd::AreValidChildElementsL(const TDesC& /*aParentElement*/, const CDesCArray& /*aChildElements*/) const + { + return ETrue; + } + +TBool CMDXMLDummyDtd::CanElementHaveChildren(const TDesC& /*aElement*/) const + { + return ETrue; + } + +// End Of File